aihot  2017-05-07 14:20:19  OpenCV |   查看评论   

 OpenCV成长之路(6):数学形态学基本操作及其应用

数学形态学实际上可以理解为一种滤波行为,所以很多地方称它为形态学滤波。有了个这概念,我们就能更好的理解它。我们滤波中用的滤波器(kernel)在这里被称为结构元素,结构元素往往是由一个特殊的形状构成,如:线条、矩形、圆、菱形等。我们把结构元素的中心(Anchor Point)与图像上像素点对齐,然后结构元素覆盖的领域像素就是我们要分析的像素,我们定义一种操作就形成了一种形态学运算。

我们在这里不解释形态学操作的算法原理及它们的意义,有兴趣的可以参见相关数字图像处理方面的教材,或关注本博客,博主打算在OpenCV系列写完后,开始写图像处理方面算法系列的文章。

一、形态学的基本操作

腐蚀运算:erode

void erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1),             int iterations=1, int borderType=BORDER_CONSTANT,             const Scalar& borderValue=morphologyDefaultBorderValue());

src:输入图像,很多场合下我们使用的是二值图像,当然灰度图像也可以。

dst:输出图像,格式和输入图像一致。

kernel:定义的结构元素。

anchor:结构元素的中心,如果是默认参数(-1,-1),会自动将其设置为结构元素的中心。

iterations:迭代次数,我们可以选择对图像进行多次形态学运算。

后面两个参数是边界类型,由于要处理领域问题,所以图像需要扩充边界。一般情况下使用默认即可。

膨胀运算:dilate

膨胀跟腐蚀的参数完全一致,就不过多的说明了。这两个形态学操作是最基本的两个操作。

int main() {     Mat image=imread("../cat.png");     // 彩色转灰度     cvtColor(image,image,CV_BGR2GRAY);     // 阈值化                 
 1/9    1 2 3 4 5 6 下一页 尾页
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自OpenCV成长之路(6):数学形态学基本操作及其应用

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]