应用背景:二值图像的初等形态学运算中的腐蚀操作是表示用某种结构元素对图像进行探测,以便找出在图像内部可以放下该结构元素的区域。

基本原理:腐蚀操作是结构原中心在被腐蚀图像中平移填充的过程。图像A被结构元B腐蚀,用集合论来表示如下式:

                                                                                    

其中x是平移量,上式表示腐蚀结果集合中的元素是结构元的中心平移x后仍然包含在集合A内,还可用E(A,B)表示腐蚀。


c++实现:

void Morphology::ImgErosion(unsigned char *imgBufIn,unsigned char *imgBufOut,int imgWidth,
							  int imgHeight,int *TempBuf, int TempW, int TempH) 
				
{
	int lineByte=(imgWidth+3)/4*4;	
	memcpy(imgBufOut,imgBufIn,lineByte*imgHeight);	
	int i,j,k,l;
	int flag;	
	
	for(i=TempH/2;i<imgHeight-TempH/2;i++)
	{
		for(j=TempW/2;j<imgWidth-TempW/2;j++)
		{			
			
			flag=1;
			for(k=-TempH/2;k<=TempH/2;k++)
			{
				for(l=-TempW/2;l<=TempW/2;l++)
				{
					
					if(TempBuf[(k+TempH/2)*TempW+l+TempW/2])
					{
						
						if(!*(imgBufIn+(i+k)*lineByte+j+l))
							flag=0;	              
					}
				}
			}


			if(flag)
				*(imgBufOut+i*lineByte+j)=255;
			else
				*(imgBufOut+i*lineByte+j)=0;
		}
	}
}


运行结果:在VS2010中运行MFC多文档程序得到结果如下图

腐蚀前的二值图像


腐蚀后的二值图像


从腐蚀后的结果来看,图像前景区域缩小,区域边界变模糊,同时一些比较小的孤立的前景区域被完全腐蚀掉,达到了滤波的效果。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐