下面是我编写的一个程序,是用非均匀校正算法中的两点法计算几个系数,其中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