相关概念:
腐蚀:删除对象边界某些像素。
结构元素
设有两幅图象B,X。若X是被处理的对象,而B是用来处理X的,则称B为结构元素(structure element),又被形象地称做刷子。结构元素通常都是一些比较小的图象。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
腐蚀过程介绍:
对二值图腐蚀过程:
在图6.10中,左边是被处理的图象X(二值图象,我们针对的是黑点),中间是结构元素B,那个标有origin的点是中心点,即当前处理元素的位置。腐蚀的方法是,拿B的中心点和X上的点一个一个地对比,如果B上的所有点(指的是所有黑点)都在X的范围内(即X图上处理元素所在的位置以及它上,左两个点都是黑色),则该点保留,否则将该点去掉(变为白点);右边是腐蚀后的结果。可以看出,它仍在原来X的范围内,且比X包含的点要少,就像X被腐蚀掉了一层。
对灰度图像的腐蚀:
如下图,左边是要处理图像,中间是结构元素,右边是与对应每个像素的灰度值。
处理过程就是:与上面的B一样,中间是要处理的元素所在的位置,三个1所在的位置对应三个灰度值,然后将中间这个1对应的灰度值改成这三个最小的,如源图像第一个灰度值1,它上左都没有灰度值,所以最小就是它本身,所以输出也是1,再比如处理灰度值为22那个点的时候,上面是7左边是44,所以22应改为7。
腐蚀的作用
1,边缘检测。
2,噪声滤除。
3,形态骨架提取。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
腐蚀例程:
1:从灰度值层面介绍腐蚀
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
int main()
{
//创建源图像
IplImage* src = cvCreateImage(cvSize(11, 10), 8, 1);
//创建图像 用来保存输出后的图像
IplImage* dat = cvCreateImage(cvSize(11,10), 8, 1);
//图像清零
cvSetZero(dat);
cvSetZero(src);
//将源图像赋初值
int x, y;
//(1,6)-->(1,9)
//(2,6)-->(2,9)
//(3,6)-->(3,9)
for (y = 1; y < 4; y++)
{
for (x = 6; x < 10; x++)
{