openCV学习笔记(5)-- 图像形态学

 

图像形态学主要有四个操作,即膨胀、腐蚀、开运算和闭运算

(1)在讨论四个操作之前,我们先看看核结构

IplConvKernel* cvCreateStructingElementEx( int cols, int rows, int anchor_x, int anchor_y, int shape, int* values = null ); 

void cvReleaseStructingElement( IplConvKernel** element ); 

(2)膨胀:将一些图像(I)与核(T)进行卷积

核可以是任意形状,多为正方形或者圆形,核可以视为模板或掩码,膨胀是求局部最大值的操作

膨胀常用于填补凹洞

void cvDilate( IplImage* src, IplImage* dst, IplConvKernel* B = NULL, int iterations = 1 ); 

(3)腐蚀:腐蚀操作即求核区域像素的最小值。

腐蚀能够消除细的凸起

void cvErode( IplImage* src, IplImage* dst, IplConvKernel* B = NULL, //B即核,下同 int iterations = 1 //如名,迭代次数,下同 ); 

(4)开运算:先腐蚀后膨胀,消除高于其邻近点的孤立点

(5)闭运算: 先膨胀后腐蚀,消除低于其邻近点的孤立点

(6)opencv提供了更通用的形态学操作

void cvMorphologyEx( const CvArr* src, CvArr* dst, CvArr* temp, //缓存数组,大小影后源图像大小相同 IplConvKernel* element, int operation, //包括CV_MOP_OPEN,CV_MOP_CLOSE,CV_MOP_GRADIENT,CV_MOP_TOPHAT,CV_MOP_BLACKHAT int iterations = 1 //此处的迭代可能会让人误解,以为对闭操作(或其他)的迭代是膨胀-腐蚀-膨胀-腐蚀,实际上是膨胀-膨胀-腐蚀-腐蚀 ); 

如果觉得我说的不太清楚,请参见http://www.zwqxin.com/archives/image-processing/morphologic-process.html

 

你可能感兴趣的:(openCV学习笔记(5)-- 图像形态学)