二值图像的腐蚀操作及c++实现

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

基本原理:腐蚀操作是结构原中心在被腐蚀图像中平移填充的过程。图像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多文档程序得到结果如下图

腐蚀前的二值图像


腐蚀后的二值图像


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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值