opencv中有两个接口:
/* erodes input image (applies minimum filter) one or more times.If element pointer is NULL, 3x3 rectangular element is used */
CVAPI(void) cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element CV_DEFAULT(NULL), int iterations CV_DEFAULT(1) );
/* erodes input image (applies minimum filter) one or more times.If element pointer is NULL, 3x3 rectangular element is used */
CVAPI(void) cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element CV_DEFAULT(NULL), int iterations CV_DEFAULT(1) );
/* dilates input image (applies maximum filter) one or more times.If element pointer is NULL, 3x3 rectangular element is used */
CVAPI(void) cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element CV_DEFAULT(NULL), int iterations CV_DEFAULT(1) );
先cvErode()后cvDilate(),既先腐蚀后膨胀,这个为开操作,图片中的离散点、线,毛刺等被过滤掉,这个就是所谓的形态学滤波,去噪。利用这个操作可以消除小物体,在纤细点处分离物体,平滑较大的物体边缘,同时不会明显改变原来的物体面积。
先cvDilate后cvErode,先膨胀后腐蚀,这个为闭合操作,图片中断裂处会缝合。利用这个操作可以填充细小空洞,连接临近物体,平滑物体边缘,同时不明显改变物体面积。