“理想边缘产生方法的研究”的理解
在亚像素的检测中,如何验证自己算法的精度,此时需要一个标准的样本来检测算法的精度,在上诉论文中,关于dn的计算有一定的理解差异。

参数计算
Dm计算
设过B、C的直线方程为y=kx+b,
AC=abs(b)/sqrt(1+k^2);
AB=b;
k=BD/0.5;
b=0.5+BD=0.5*(1+k)
AC=abs(0.5*(1+K))/sqrt(1+K^2)
##Dn计算
k=DE/DF=2*DE; DE=0.5k;
k=EG/AG;
AE=0.5-DE;
AE^2=EG^2+AG^2;
Dn=(1-k)*0.5/sqrt(1+k^2);
从上面的Dm和Dn的计算中可以看出,Dm的计算与原文一直,但是Dn的计算却不一致,文中公式计算的是点到直线L的距离,而不是Dn的值。
关于标准边缘坐标
当直线穿过像素时,边缘点的坐标为(x,y)到直线y=kx+b的垂足
Code
%% 理想边缘
clc;clear;close all
p=[0.3, -50/3];
row=255;
col=255;
Pl=0;
Pr=1;
imag=(zeros(row,col));
dm=0.5*abs(p(1)+1)/sqrt(1+p(1)^2)
dn=0.5*(1-p(1))/sqrt(1+p(1)^2)
pt=[];
for i=1:row
for j=1:col
d=(p(1)*j-i+p(2))/sqrt(1+p(1)^2);
if d<-dm
Ar=0;
Al=1;
elseif d>dm
Ar=1;
Al=0;
else
x=j;y=i;k=p(1);b=p(2);
if -dm<d && d<=-dn
Ar=0.5*(x+0.5-(y-0.5-b)/k)*(k*(x+0.5)+b-y+0.5);
Al=1-Ar;
elseif -dn<d && d<=dn
Ar=0.5*(k*(x-0.5)+b-y+0.5+k*(x+0.5)+b-(y-0.5));
Al=1-Ar;
elseif dn <d && d <=dm
Al=0.5*(y+0.5-k*(x-0.5)-b)*((y+0.5-b)/k-x+0.5);
Ar=1-Al;
end
pt=[pt;gcl_footPoint_point_line([p(1),-1,p(2)],[j,i])];
end
imag(i,j)=Ar*Pr+Al*Pl;
end
end
figure,imshow(imag,[]),hold on
% line([0,col],[p(2),p(1)*col+p(2)],'Color','r')
plot(pt(:,1),pt(:,2),'r.')
此文章版权归snailgoers所有,如有转载,请注明來自原作者
评论

