数学形态学:
定义一系列运算,用预先定义的形状元素探测图像,从而实现图像的转换。这个形状元素与像素领域的相交方式决定了运算的结果。
结构元素:
结构元素可以简单地定义为像素的组合,在对应的像素上定义一个原点(也称为锚点)。形态学滤波器的应用过程就包含了用这个结构元素探测图像中每个像素的操作过程。把某个像素设为结构元素的原点后,结构元素和图像重叠的像素集就是特定形态学运算的应用对象。结构元素可以是任何形状,但通常是一个简单形状,如正方形、圆形或者菱形,并把中心店作为原点。自定义结构元素可用于强化或消除特殊形状。
腐蚀:
把当前像素替换成所定义像素集合中的最小像素值。
膨胀:
腐蚀的反运算,把当前像素替换成所定义像素集合中的最大像素值。
如果输入的二值图像只包含黑色(值为0)和白色(值为255)像素,则每个像素都会被替换成白色和黑色像素。
开启:
对图像先腐蚀后碰撞;
开启滤波器可以消除背景中的小物体,所有小到不能容纳完整结构元素的物体都会被移除。
闭合:
对图像先膨胀后腐蚀;
使用闭合滤波器,白色的前景物体中的小空隙被填满,闭合滤波器会将临近的物体连接起来。所有小到不能容纳完整结构元素的空隙或者间隙都会被闭合滤波器消除。
相关性质:
腐蚀图像相当于对其反色图像膨胀后再取反色;
膨胀图像相当于对其反色图像腐蚀后再取反色。
应用于边缘检测:
为了理解形态学运算在灰度图像上的效果,可以把图像看作一个拓扑地貌,不同的灰度级别代表不同的高度(海拔)。明亮的区域代表高山,黑暗的区域代表深谷;边缘相当于黑暗和明亮像素之间的快速过渡,因此可以比作陡峭的悬崖。腐蚀这种地形的最终结果是:每个像素被替换成特定邻域的最小值,从而降低它的高度。结果是悬崖“缩小”,山谷“扩大”。膨胀的效果正好相反,悬崖“扩大”,山谷“缩小”。但不管那种情况,平地(即强度值固定的区域)都会相对保持不变。
根据以上的结论,可以得到一种边缘检测的简单方法,即通过计算膨胀后的图像与腐蚀后的图像之间的差距得到边缘。因为这两种转换后图像的差别主要在边缘地带,所以相减后会突出边缘。用膨胀后的图像减去原始图像,或者用原始图像减去夫时候的图像得到的边缘更窄。
显然,结构元素越大,检测到的边缘就越宽。这种边缘检测运算称为Beucher梯度。
顶帽(Top Hat):
为原图像与“开启运算“的结果图之差;
开运算带来的结果是放大了裂缝或者局部低亮度的区域,因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,顶帽运算往往用来分离比邻近点亮一些的斑块。
灰度图像进行开启运算时会对图像进行腐蚀,局部的尖锐部分会被消除,其他部分则将保留下来。因此,原始图像和经过开启运算的图像的对比结果就是局部的尖锐部分。
黑帽(Black Hat):
”闭合运算“的结果图与原图像之差。
黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,所以,黑帽运算用来分离比邻近点暗一些的斑块。
参考书籍:
《OpenCV 计算机视觉编程攻略》