cvCreateStructuringElementEx
一个可以调节参数的形态学例题,用到的自定义核函数为
IplConvKernel * cvCreateStructuringElementEx( int cols, int rows, int anchor_x, int anchor_y, int shape, int *value=NULL );
anchor_x,anchor_y确定了封闭矩形内参考点的横纵坐标。
shape是自定义核的形状,具体为
1.CV_SHAPE_RECT 核是矩形
2.CV_SHAPE_CROSS 核是勺子交叉形
3.CV_SHAPE_ELLIPSE 核是椭圆形
4.CV_SHAPE_CUSTOM 核是用户自定义类型
其释放函数为
void cvReleaseStructuringElement( IplConvKernel **element);
举个例子比较好说清楚
比如一个图
00000
01110
00000
用一个cvCreateStructuringElementEx( 3,1,0 0,CV_SHAPE_RECT)的元素来腐蚀,则结果为
00000
01000
00000
而用一个cvCreateStructuringElementEx( 3,1,1 0,CV_SHAPE_RECT)的元素来腐蚀,则结果为
00000
00100
00000
比如一个图
00000
01110
00000
用一个cvCreateStructuringElementEx( 3,1,0 0,CV_SHAPE_RECT)的元素来腐蚀,则结果为
00000
01000
00000
而用一个cvCreateStructuringElementEx( 3,1,1 0,CV_SHAPE_RECT)的元素来腐蚀,则结果为
00000
00100
00000
Erode
使用结构元素腐蚀图像void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
src
输入图像.
dst
输出图像.
element
用于腐蚀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素
iterations
腐蚀的次数
函数 cvErode 对输入图像使用指定的结构元素进行腐蚀,该结构决定每个具有最小值象素点的邻域形状:
dst(x,y)=min(src(x+x',y+y')) ((x',y') in element,在cvCreateStructuringElementEx的anchor_x,anchor_y确定的领域周围)
函数支持(in-place)模式。腐蚀可以重复进行 (iterations) 次. 对彩色图像,每个彩色通道单独处理。