龙空技术网

python图像处理入门-分水岭算法

蓝猫小胖戏说动漫 157

前言:

而今同学们对“数字图像处理常用算法”大概比较看重,咱们都需要分析一些“数字图像处理常用算法”的相关文章。那么小编同时在网络上收集了一些对于“数字图像处理常用算法””的相关文章,希望同学们能喜欢,看官们快快来了解一下吧!

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

import cv2import numpy as npfrom scipy import ndimage as ndifrom skimage import morphology,segmentation,filtersimg_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)) < 10markers = 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)

先看效果图:

原图

梯度图

分割着色图

涉及的函数介绍:

标签: #数字图像处理常用算法