前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MorphACWE图像分割

MorphACWE图像分割

作者头像
裴来凡
发布2022-05-28 17:00:08
3750
发布2022-05-28 17:00:08
举报
文章被收录于专栏:图像处理与模式识别研究所
代码语言:javascript
复制
import cv2
import numpy as np
import matplotlib.pylab as pylab
from skimage.segmentation import (morphological_chan_vese,morphological_geodesic_active_contour,inverse_gaussian_gradient, checkerboard_level_set)
#定义存储迭代函数
def store_evolution_in(lst):
    def _store(x):
        lst.append(np.copy(x))
    return _store
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将彩色图片转换为灰度图片
init_lvl_set=checkerboard_level_set(gray.shape,6)#图像预处理
evolution=[]
callback=store_evolution_in(evolution)#存储迭代
lvl_set=morphological_chan_vese(gray,30,init_level_set=init_lvl_set,smoothing=3,iter_callback=callback)
fig,axes=pylab.subplots(2,1,figsize=(8,6))
axes=axes.flatten()
axes[0].imshow(img,cmap="gray"),axes[0].set_axis_off(),axes[0].contour(lvl_set,[0.5],colors='r')
axes[0].set_title("Morphological ACWE segmentation",fontsize=12)
axes[1].imshow(lvl_set,cmap="gray"),axes[1].set_axis_off()
contour=axes[1].contour(evolution[5],[0.5],colors='g')
contour.collections[0].set_label("Iteration 5")
contour=axes[1].contour(evolution[10],[0.5],colors='y')
contour.collections[0].set_label("Iteration 10")
contour=axes[1].contour(evolution[-1],[0.5],colors='r')
contour.collections[0].set_label("Iteration "+str(len(evolution)-1))
axes[1].legend(loc="upper right")
axes[1].set_title("Morphological ACWE evolution",fontsize=12)
fig.tight_layout()
pylab.show()

算法:形态学无边缘活动轮廓(MorphACWE,morphological chan vese)是指一组用于图像分割的方法(类似于活动轮廓算法)。形态学蛇算法比活动轮廓算法更快且在数值上更稳定,因为它们在二进制数组上使用形态学运算符(如膨胀/腐蚀),而活动轮廓算法是在浮点数组上求解偏微分方程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档