C#描述-计算机视觉OpenCV(6):形态学
前言
这是本系列第六节,主要是介绍基础的形态学运用。
形态学主要是分析图像中不同主题的形态,它定义了一系列运算,用预先定义的形状元素探测图像,从而实现图像的转换。这个形状元素与像素邻域的相交方式决定了运算的结果。从而可以进行切割、特征检测。
阈值化二值图像
因为形态学滤波器通常作用于二值图像,所以我们先对图像做阈值化的二值图像操作。我们以此图为例:
使用Threshold方法
res, dst = cv2.threshold(src, thresh, maxval, type)
来进行阈值化,参数详解:
src:输⼊图,只能输⼊单通道图像,通常是指灰度图
dst:输出图
thresh:阈值
maxval:当像素值超过了阈值(或⼩于阈值,根据type来决定),所赋予的值
type:⼆值化操作类型,包含以下五种类型:
cv2.THRESH_BINARY 超过阈值部分取maxval(最⼤值),否则取0
cv2.THRESH_BINARY_INV THRESH_BINARY 上述反转
cv2.THRESH_TRUNC ⼤于阈值部分设为阈值,否则不变
cv2.THRESH_TOZERO ⼤于阈值部分不改变,否则设为0
cv2.THRESH_TOZERO_INV THRESH_TOZERO 上述反转
在阈值的选择上,我们需要观察原图的直方图(直方图算法详见:C#描述-计算机视觉OpenCV(5):直方图算法),根据直方图示,我们可以先选择中端峰值左侧的点,也就是100作为阈值参考。
代码:
Cv2.Threshold(img1, res, 100, 255