什么是形态学操作
用数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具。基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。
形态学图像处理的数学基础和所用语言是集合论。
形态学图像处理的应用可以简化图像数据,保持它们基本的形状特性,并除去不相干的结构。
形态学图像处理的基本运算有:膨胀、腐蚀、开操作和闭操作,击中与击不中变换,TOP-HAT变换,黑帽变换……
API:
Cv2.MorphologyEx(源图像,输出图像,形态操作类型,结构数组,锚点【中心点】,应用腐蚀和膨胀的次数【默认情况下这是1】,边缘处理方法,在边界为常数的情况下的边界值【默认情况下这是cvcp . morphologydefaultbordervalue ()】)
什么是开操作?
(以下处理图片的原图是经过归一化处理的,详细请看上一篇博客)
开操作:open: 先腐蚀后膨胀,可以去掉小的对象。
dst=open(src,element)=dilate(erode(src,element))
//定义结构元素
InputArray kernel = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(3, 3), new Point(-1, -1));
//开操作,也可省落变量前缀名
Cv2.MorphologyEx(srcImg, srcImg, MorphTypes.Open, kernel, new Point(-1, -1), 1, BorderTypes.Constant, Scalar.Gold);
什么是闭操作?
闭操作 :close:先膨胀后腐蚀,可以填充图像的噪点。
dst=Morphgrad(src,element)=dilate(sec,element)−erode(src,element)
//定义结构元素
InputArray kernel = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(3, 3), new Point(-1, -1));
//闭操作,也可省落变量前缀名
Cv2.MorphologyEx(srcImg, srcImg, MorphTypes.Close, kernel, new Point(-1, -1), 1, BorderTypes.Constant, Scalar.Gold);
可以明显看出图片中的椒盐噪声没了
形态学梯度:Morphological Gradient : 膨胀减去腐蚀,又称基本梯度(还包括:内部梯度,方向梯度)
dst=Morphgrad(src,element)=dilate(sec,element)−erode(src,element)
//定义结构元素
InputArray kernel = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(3, 3), new Point(-1, -1));
//形态学梯度操作,也可省落变量前缀名
Cv2.MorphologyEx(srcImg, srcImg, MorphTypes.Gradient, kernel, new Point(-1, -1), 1, BorderTypes.Constant, Scalar.Gold);
(这里和Halcon的画XLD好像… 不知道是不是一个东西)
**顶帽 top hat:**是原图像与开操作之间的差值操作。
MorphTypes.TopHat
**黑帽:black hat:**闭操作图像与原图像的差值图像