分水岭算法的数学模型,分水岭算法例题详解

首页 > 教育 > 作者:YD1662024-05-15 22:32:35

分水岭算法是图像分割比较基础也是比较简单的方法,虽然随着神经网络的盛行,这种方法已经被人淡忘,不过作为图像处理的专业人员还是有必要了解这种方法的,原理可以自行查阅资料,这里仅使用python中封装好的方法验证效果。

import cv2 import numpy as np from scipy import ndimage as ndi from skimage import morphology,segmentation,filters img_path = "D://001.jpg" img_bgr = cv2.imread(img_path) #根据指定的图片路径读取图像 img_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY) img_gauss = cv2.GaussianBlur(img_gray, (3, 3), 0) #过滤噪声 #将梯度值低于10的作为开始标记点 markers = filters.rank.gradient(img_gauss, morphology.disk(5)) < 10 markers = ndi.label(markers)[0] img_gradient = filters.rank.gradient(img_gauss, morphology.disk(2)) #计算梯度 labels = segmentation.watershed(img_gradient, markers) #基于梯度的分水岭算法 labels = labels.astype(np.uint8) img_segment = cv2.applyColorMap(labels, cv2.COLORMAP_RAINBOW) #给标签着色,伪彩色图 cv2.imwrite("D://001_gradient.jpg", img_gradient) cv2.imwrite("D://001_labels.jpg", img_segment)

先看效果图:

分水岭算法的数学模型,分水岭算法例题详解(1)

原图

分水岭算法的数学模型,分水岭算法例题详解(2)

梯度图

分水岭算法的数学模型,分水岭算法例题详解(3)

分割着色图

涉及的函数介绍:

分水岭算法的数学模型,分水岭算法例题详解(4)

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.