import matplotlib.pylab as pylab
from skimage.filters import gaussian
from skimage.segmentation import active_contour
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将彩色图片转换为灰度图片
s=np.linspace(0,2*np.pi,400)#构造圆
x=260+100*np.cos(s)
y=240+100*np.sin(s)
init=np.array([x,y]).T#构造Snake
i=1
pylab.figure(figsize=(20,20))
for max_it in [20, 30, 50, 100]:
snake=active_contour(gaussian(gray,3),init,alpha=0.015,beta=10,gamma=0.001,max_iterations=max_it)#Snake图像分割
pylab.subplot(2,2,i)
pylab.imshow(img)
pylab.plot(init[:,0],init[:,1],'--b',lw=3)
pylab.plot(snake[:,0],snake[:,1],'-r',lw=3)
pylab.axis('off')
pylab.title('max_iteration='+str(max_it),size=20)
i+=1
pylab.tight_layout()
pylab.show()
算法:活动轮廓(Snake)是用于拟合开或闭合样条曲线与图像中的线或边缘,围绕感兴趣的目标初始化“蛇”,并让它收缩或膨胀,以便于使封闭的轮廓与感兴趣的目标相拟合。“蛇”可以是周期性的(用于分段),也可以具有固定和/或自由端。输出蛇的长度与输入边界的长度相同。由于点的数量是恒定的,因此请确保初始蛇具有足够的点以捕获最终轮廓的细节。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!