python深度学习图像处理(每次只学三分钟)
python深度学习图像处理(每次只学三分钟)分割着色图涉及的函数介绍:
分水岭算法是图像分割比较基础也是比较简单的方法,虽然随着神经网络的盛行,这种方法已经被人淡忘,不过作为图像处理的专业人员还是有必要了解这种方法的,原理可以自行查阅资料,这里仅使用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)
先看效果图:
原图
梯度图
分割着色图
涉及的函数介绍: