数字图像处理课程设计
模版的核心模版的边界cbdea 图3.2 简单图像中的四个圆形模板
像素灰度和核心不同的区域cdeab像素灰度和核心值相似的区域像素灰度和核心值相似的区域 图3.3 不同位置USAN区域面积的大小
具体检测时,是用圆形模板扫描整个图像,比较模板内每一像素与中心像素的灰度值。并给定阈值来判别该像素是否属于USAN区域,式2.1是SUSAN算法的原始相似比较函数。式2.2是在实际应用中比较常用的相似比较函数 :
?1??c(r,r0)???0ifif?(
I(r)?I(r0)?tI(r)?I(r0)?tI(r)?I(r0))t6 (3.1)
(3.2) c(r,r0)?e
用于计算以每个像素点为核心的USAN区的像素个数;I(r0)是模板中心像
4
数字图像处理课程设计
素(核)的灰度值;I(r)为模板内其他任意像素的灰度值;t是区分特征目标与的一个重要阈值,一般取25。
图像中某一点USAN区域大小可由下式2.3表示: n(r0)??r?c(r0)??式中,c(r0)是以r0为圆心的模板。
???c(r ?,r0) (3.3)
?在得到每个像素的USAN区域后。再由下式2.4角点响应函数(Corner- Response Function,CRF )产生角点初始响应:
??g?n(r0)? R(r0)???0其他?n(r0)?g (3.4)
式中,g是抑制噪声的几何阈值 ,它决定了输出角点的USAN区域的最大值。同时它还决定了所检测到的角点的尖锐程度。g取得越小,所检测到的角点越尖锐。用这种原理,取不同的几何门限,不但能检测角点.还可以检测交点、边缘等特征。
SUSAN算子计算简单,不需要用导数求边缘强度及方向梯度,增强了抗噪能力;且计算时间明显减少,易于硬件实现。然而SUSAN算法并不能完全消除孤立噪声点及由于模糊导致而致立体匹配误差率较高。SUSAN算法流程图如图4.4所示。
选取匹配的模版 计算模板中心点的初始响应值 计算相似度 c(x,y) 根据阈值确定角点 计算掩膜区域的USAN值显示角点 n(x0,y0) 图3.4 SUSAN算法流程图
5
数字图像处理课程设计
3.2 SUSAN算法的实现
3.2.1读入图像
关闭所有窗口(程序运行产生的,不包括命令窗,editor窗和帮助窗),清除所有工作空间中的变量,读入图像并显示原始图像。
3.2.2 SUSAN算法显示边缘图
构造7?7半径为3个像素的圆型模板,遍历图像的每一个点。当像素位于模板内时,根据公式(10)求c 和n(n的最大值为37),
6?I(x,y)?I(x0?y0)? C(x,y)?ex? p?[]? (3.5)
t??其中,为掩模核在图像中的坐标,(x,y)为掩模区域其它点的坐标。、I(x,y)分别为点和的灰度值。阈值决定了两个点相似的最大差异。C为输出的结果。其中:n为USAN中象素个数,它给出了USAN值。将与某固定阈值相比较,得到SUSAN算法对图像角点的响应函数(2.5):其中,g?nmax/2(nmax为n的最大值),恰好是理想边缘的USAN区大小,而对于实际有噪声影响的图像,边缘的USAN区一般都大于g。并以n为基础创建一个新的窗口figure(2)并显示结果为图像的边缘。
6
数字图像处理课程设计
4.matlab程序代码
clc,clear; harris_result=[];
%----保存图像所有信息、读取图像----- FileInfo=imfinfo(' F:\\0.jpg'); Image=imread(' F:\\0.jpg'); %-----转换为灰度值图像---------
if(strcmp('truecolor',FileInfo.ColorType)==1) Image=im2uint8(rgb2gray(Image)); end
%------------------计算图像的方向导数------------------ %-----横向Prewitt差分模板 dx=[-1 0 1; -1 0 1; -1 0 1];
Ix2=filter2(dx,Image).^2; Iy2=filter2(dx',Image).^2;
Ixy=filter2(dx,Image).*filter2(dx',Image);
%--------------------计算局部自相关矩阵---------------- %----生成9*9的高斯窗口(窗口越大,探测到的角点越少) h=fspecial('gaussian',9,2); A=filter2(h,Ix2); B=filter2(h,Iy2); C=filter2(h,Ixy);
%---------------矩阵Corner用来保存候选角点位置------------ nrow=size(Image,1); ncol=size(Image,2);
7
数字图像处理课程设计
Corner=zeros(nrow,ncol);
%-----------------相似性筛选------时间优化------------
%-----参数t:点(i,j)八邻域的“相似度参数”,中心点与邻域其他八个点的像素值之差在
%------------(-t,+t)之间,则确认他们为相似点 t=20;
boundary=8; %---去除边界上boundary个像素 for i=boundary:1:nrow-boundary+1 for j=boundary:1:ncol-boundary+1 nlike=0; %----相似点的个数
if Image(i-1,j-1)-Image(i,j)>-t&&Image(i-1,j-1)-Image(i,j) if Image(i-1,j)-Image(i,j)>-t&&Image(i-1,j)-Image(i,j) Image(i-1,j+1)-Image(i,j)>-t&&Image(i-1,j+1)-Image(i,j) nlike=nlike+1; end if Image(i,j-1)-Image(i,j)>-t&&Image(i,j-1)-Image(i,j) if Image(i,j+1)-Image(i,j)>-t&&Image(i,j+1)-Image(i,j) if Image(i+1,j-1)-Image(i,j)>-t&&Image(i+1,j-1)-Image(i,j) 8

