文档详情

《数字图像处理》课件第6章.ppt

发布:2025-02-27约1.93万字共113页下载文档
文本预览下载声明

{

cond3=p[2]*p[4]*p[6];

cond4=p[4]*p[6]*p[8];

}

else//奇数次迭代判断条件

{

cond3=p[2]*p[4]*p[8];

cond4=p[2]*p[6]*p[8]; }//若同时满足条件1~条件4

if((2=cond1cond1=6)(cond2==1)(cond3==0)(cond4==0))

{

pointsDeleted=true;

mask.atuchar(i,j)=1;//写入待删除的像素点至模板

} 

}

}dstImg=~mask;//通过逻辑与操作删除目标像素点(白色)

counter++;//记录迭代次数

}

dstImg*=255;//恢复为0,255二值图像

returndstImg;

}6.5应用实例——角点检测

角点一般定义为图像边缘曲线上曲率取极大值的点。角点是图像中重要的特征,它们在保留图像目标重要特征的同时有效地减少了信息的存储量,在目标跟踪与识别、图像配准与匹配等领域有着重要作用。角点检测算法可分为基于灰度图像、基于二值图像和基于轮廓曲线的检测方法。下面将结合本章中的形态学运算介绍一种灰度图像角点检测算法。灰度图像角点检测算法的基本思想如下:对如图6-22(a)所示的矩形图像f,先采用十字形结构元素bc(图6-22(b))对其进行膨胀运算,然后采用菱形结构元素bd(图6-22(d))对膨

胀后的图像进行腐蚀运算,最后计算原始图像与腐蚀后图像的差得到包含直角点的图像f′(图6-22(f))。该过程可用公式表示为(6-28)式(6-28)中的先膨胀后腐蚀操作类似于闭运算,但两次运算采用了不同形状的结构元素。采用式(6-28)仅能对直角点进行有效检测,对于非直角点的提取,需选用其他结构元素的组合。考虑对图6-22(a)进行45°旋转将产生非直角点,为检测这些角点,同时对十字形和菱形结构元素进行旋转,对应结构元素相应变为X形和矩形,分别记为bx和br。则非直角点的检测公式为

(6-29)

对输入灰度图像采用式(6-28)和式(6-29)即可提取图像中的所有角点。图6-22采用不同结构元素对矩形图像f先膨胀后腐蚀根据上述思想,在OpenCV中采用5×5结构元素实现的角点检测代码如下:

//************************************

//函数名称:MatfindCorners(constMatbinaryImg)

//基本功能:提取图像中的角点

//参数说明:输入灰度图像

//返回值:返回含角点的二值图像

//*****************************************

MatfindCorners(constMatgrayImg){

inti,elemSize=5;

MatdstImg1,dstImg2,diffImg;

//设置十字形结构元素

MatcrossStruct=getStructuringElement(MORPH_CROSS,

Size(elemSize,elemSize),

Point(elemSize/2,elemSize/2));

//设置矩形结构元素MatrectStruct=getStructuringElement(MORPH_RECT,

Size(elemSize,elemSize),

Point(elemSize/2,elemSize/2));

显示全部
相似文档