鱼眼图像经度坐标校正(2D)

这个经度坐标校正的原理还是来源于之前的那篇 《鱼眼图像校正算法研究》 在进行校正时 作者提出了三个算法 这个2D的经度坐标校正是其中最简单的 效果可能没有后面两个3D校正算法效果好 但优势在于简单省时 容易用MATLAB实现

 A=imread('F:\orl_zhifangtu\yuyan2.jpg');
 T=40;
[A,R]=kuaisusaomiao(A,T);
[m,n,k]=size(A);
C=[];
x=n/2;
y=m/2;
for u=1:m
    for v=1:n
        i=u;
        j=round(sqrt(R^2-(y-u)^2)*(v-x)/R+x);
        if(R^2-(y-u)^2<0)
            continue;
        end
        C(u,v,1)=A(i,j,1);
        C(u,v,2)=A(i,j,2);
        C(u,v,3)=A(i,j,3);
    end
end
C=uint8(C);

%下面是自己编的一个插值 其实就是在一个最近区域内寻找一个最近点 来插值 

 for i=1:round((m-1)/2)
    for j=1:round(n/2)
        I(i,j)=0.59*C(i,j,1)+0.11*C(i,j,2)+0.3*C(i,j,3);
        if(I(i,j)<T)
             for u=i:i+49
                 for v=j:j+49
                     I(u,v)=0.59*C(u,v,1)+0.11*C(u,v,2)+0.3*C(u,v,3);
                     if(I(u,v)>=T)
                         C(i,j,1)=C(u,v,1);
                         C(i,j,2)=C(u,v,2);
                         C(i,j,3)=C(u,v,3);
                     else
                         continue;
                     end
                 end
             end
        end
    end
end
for i=1:round((m-1)/2)
    for j=round(n/2):n
        I(i,j)=0.59*C(i,j,1)+0.11*C(i,j,2)+0.3*C(i,j,3);
        if(I(i,j)<T)
             for u=i:i+49
                 for v=j-49:j
                     I(u,v)=0.59*C(u,v,1)+0.11*C(u,v,2)+0.3*C(u,v,3);
                     if(I(u,v)>=T)
                         C(i,j,1)=C(u,v,1);
                         C(i,j,2)=C(u,v,2);
                         C(i,j,3)=C(u,v,3);
                     else
                         continue;
                     end
                 end
             end
        end
    end
end
>> figure
>> imshow(C)

这是原图这是快速扫描算法提取有效区域后的图这是校正以后的图这是用上个插值法后得到的图

然后我又用了cubic插值 看会不会比我的这个插值效果好一些 :

Y=[];
Z1=[];
Z2=[];
Z3=[];
for i=1:round((m-1)/2)
    for j=1:n
        I(i,j)=0.59*C(i,j,1)+0.11*C(i,j,2)+0.3*C(i,j,3);
        if(I(i,j)>=T)
            Y=[Y j];
            Z1=[Z1 C(i,j,1)];
            Z2=[Z2 C(i,j,2)];
            Z3=[Z3 C(i,j,3)];
        end
    end
    if(size(Y)==0)
        continue;
    else
       for j=1:n
          I(i,j)=0.59*C(i,j,1)+0.11*C(i,j,2)+0.3*C(i,j,3);
          if(I(i,j)<T)
             C(i,j,1)=interp1(Y,double(Z1),j,'cubic');
             C(i,j,2)=interp1(Y,double(Z2),j,'cubic');
             C(i,j,3)=interp1(Y,double(Z3),j,'cubic');
          end
       end
    end
    Y=[];
    Z1=[];
    Z2=[];
    Z3=[];
end

下图是效果  感觉没有那么惊艳啊 还不如我上个插值效果好


看来要找适合所有图片的插值算法还是不容易的  这个还是得改进

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元气少女缘结神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值