主题:关于非均匀校正技术两点法的系数计算,请帮忙看一下程序哪里出错了
下面是我编写的一个程序,是用非均匀校正算法中的两点法计算几个系数,其中K2我算出来为零,是错误的,可是不知道原因。若哪位大侠知道我错误的原因,能帮忙一下吗?
下面是我的程序:
A=imread('lena_gray.tif');
B=imnoise(A,'gaussian');
%B=imnoise(A,'salt & pepper');
%计算系数G(i,j),Q(i,j)
p=0;
for i=1:512
for j=1:512
k=j+200;
if k>512
k=k-512;
end
l=i+100;
if l>512
l=l-512;
end
m=(A(i,j)-A(l,k))*100;
n=B(i,j)-B(l,k);
while m>n
if n==0 %防止死循环
p=1;
break;
else
m=m-n;
p=p+1;
end
end
G(i,j)=p/100;
p=0;
Q(i,j)=A(i,j)-G(i,j)*B(i,j);
end
end
%计算Gijmax
gmax=G(1,1)
for i=1:512
for j=1:512
if G(i,j)>gmax
gmax=G(i,j)
end
end
end
%计算Gijmin
gmin=G(1,1)
for i=1:512
for j=1:512
if G(i,j)<gmin
gmin=G(i,j)
end
end
end
%计算Qij'
for i=1:512
for j=1:512
Q1(i,j)=Q(i,j);
end
end
%计算Gij'
for i=1:512
for j=1:512
G1(i,j)=(2^16-1)/(gmax-gmin)*(G(i,j)-gmin);
G1(i,j)=uint16(G1(i,j));
end
end
%计算k1
k1=gmax-gmin
%计算k2
k2=gmin
下面是我的程序:
A=imread('lena_gray.tif');
B=imnoise(A,'gaussian');
%B=imnoise(A,'salt & pepper');
%计算系数G(i,j),Q(i,j)
p=0;
for i=1:512
for j=1:512
k=j+200;
if k>512
k=k-512;
end
l=i+100;
if l>512
l=l-512;
end
m=(A(i,j)-A(l,k))*100;
n=B(i,j)-B(l,k);
while m>n
if n==0 %防止死循环
p=1;
break;
else
m=m-n;
p=p+1;
end
end
G(i,j)=p/100;
p=0;
Q(i,j)=A(i,j)-G(i,j)*B(i,j);
end
end
%计算Gijmax
gmax=G(1,1)
for i=1:512
for j=1:512
if G(i,j)>gmax
gmax=G(i,j)
end
end
end
%计算Gijmin
gmin=G(1,1)
for i=1:512
for j=1:512
if G(i,j)<gmin
gmin=G(i,j)
end
end
end
%计算Qij'
for i=1:512
for j=1:512
Q1(i,j)=Q(i,j);
end
end
%计算Gij'
for i=1:512
for j=1:512
G1(i,j)=(2^16-1)/(gmax-gmin)*(G(i,j)-gmin);
G1(i,j)=uint16(G1(i,j));
end
end
%计算k1
k1=gmax-gmin
%计算k2
k2=gmin