zynq FPGA 的双目视觉毕业设计(四)之matlab 摄像头畸变矫正算法实现

1.简述

     有很多大佬对摄像头畸变矫正理论原理进行了推理和实践,我就不洗了,推荐给你们吧

    1.双目相机的畸变校正以及平行校正(极线校正)的入门问题总结

     2. 畸变校正详解

2.我的matlab畸变矫正源码

clear;clc;close all;


image_left = imread('./IMAG_L1.BMP');
image_right= imread('./IMAG_R1.BMP');

[H, W, C] = size(image_left);
%内参
A_L = [727.16981    0           375.50000;
      0             726.44894   239.50000;
      0             0           1       ];
  
A_R = [731.58976    0           381.09402;
       0            730.18323   246.16608;
       0            0           1       ];
fx1 = A_L(1,1);
fy1 = A_L(2,2);
cx1 = A_L(1,3);
cy1 = A_L(2,3);

fx2 = A_R(1,1);
fy2 = A_R(2,2);
cx2 = A_R(1,3);
cy2 = A_R(2,3);
%外参

D_L = [ -0.50296   0.36519   -0.00268   0.00240  0.00000 ];
D_R = [ -0.46867   0.27536   -0.00327   0.00309  0.00000 ];

k11 = D_L(1,1);
k12 = D_L(1,2);
k13 = D_L(1,5);
p11 = D_L(1,3);
p12 = D_L(1,4);

k21 = D_R(1,1);
k22 = D_R(1,2);
k23 = D_R(1,5);
p21 = D_R(1,3);
p22 = D_R(1,4);

%旋转与平移
R = [ -0.00815   -0.00416  0.00418 ];
T = [ -104.30359   -3.38916  -5.23585 ];

for v = 1 : H
    for u = 1 : W  
        
        B_L = inv(A_L)*[u v 1]';
        B_R = inv(A_R)*[u v 1]';
        
        x1 = B_L(1,1);
        y1 = B_L(2,1);
        r1 = x1^2 + y1^2;
        
        x2 = B_R(1,1);
        y2 = B_R(2,1);
        r2 = x2^2 + y2^2;
        
        xx1 =  x1*(1 + k11*r1 + k12*r1^2 ) + 2*p11*x1*y1 + p12*(r1 + 2*x1^2) ;
        yy1 =  y1*(1 + k11*r1 + k12*r1^2 ) + 2*p12*x1*y1 + p11*(r1 + 2*y1^2) ;
        
        
        xx2 =  x2*(1 + k21*r2 + k22*r2^2 ) + 2*p21*x2*y2 + p22*(r2 + 2*x2^2) ;
        yy2 =  y2*(1 + k21*r2 + k22*r2^2 ) + 2*p22*x2*y2 + p21*(r2 + 2*y2^2) ;
        
        xxx1 = xx1*fx1 + cx1;
        yyy1 = yy1*fy1 + cy1;
        
        xxx2 = xx2*fx2 + cx2;
        yyy2 = yy2*fy2 + cy2;
        
        if (xxx1>1 && xxx1<=W && yyy1>1 && yyy1<=H)
            w1 = xxx1;
            h1 = yyy1;
            new_image_L(v,u)=  (floor(w1+1)-w1) * (floor(h1+1)-h1) * image_left(floor(h1),floor(w1)) + (floor(w1+1)-w1) * (h1-floor(h1)) * image_left(floor(h1+1),floor(w1)) + (w1-floor(w1)) * (floor(h1+1)-h1) * image_left(floor(h1),floor(w1+1) ) + (w1-floor(w1)) * (h1-floor(h1)) * image_left(floor(h1+1),floor(w1+1));
        end
        
        if (xxx2>1 && xxx2<=W && yyy2>1 && yyy2<=H)
            w2 = xxx2;
            h2 = yyy2;
            new_image_R(v,u)=  (floor(w2+1)-w2) * (floor(h2+1)-h2) * image_right(floor(h2),floor(w2)) + (floor(w2+1)-w2) * (h2-floor(h2)) * image_right(floor(h2+1),floor(w2)) + (w2-floor(w2)) * (floor(h2+1)-h2) * image_right(floor(h2),floor(w2+1) ) + (w2-floor(w2)) * (h2-floor(h2)) * image_right(floor(h2+1),floor(w2+1));
        end
    end
end


subplot(2,2,1);imshow(image_left);
title('左相机校正之前');
subplot(2,2,3);imshow(new_image_L);
title('左相机校正之后');

subplot(2,2,2);imshow(image_right);
title('右相机校正之前');
subplot(2,2,4);imshow(new_image_R);
title('右相机校正之后');








3.矫正效果

欢迎关注我的公众号:芯王国,有更多的FPGA&数字IC的技术分享,还可以获取开源FPGA项目!

在这里插入图片描述

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Spring Boot框架是一个开源的Java框架,为Java开发者提供了一种快速开发的方式。Spring Boot框架具有简单、可靠、高效、强大等优点,它可以快速构建一个高效的Java Web应用程序或微服务。在Spring Boot框架中,我们可以轻松地导出Word表格和文字模板以及程序,具体如下: 1. 导出Word表格 首先,我们可以利用Spring Boot框架中的Apache POI库来导出Word表格。我们只需要创建一个包含表格内容的数据模型,并使用Apache POI库将数据模型中的表格内容输出到Word文档中即可。具体的步骤如下: 1)添加Apache POI库的依赖。 2)创建一个表格数据模型,包含表格结构和内容。 3)创建一个Word文档,并将表格数据输出到Word文档中。 2. 导出文字模板 除了导出Word表格外,我们还可以利用Spring Boot框架中的Thymeleaf模板引擎来导出文字模板。Thymeleaf是一个非常流行的Java模板引擎,它可以让我们以非常简单的方式创建动态模板。 具体的步骤如下: 1)安装Thymeleaf模板引擎。 2)创建一个文字模板,使用Thymeleaf模板引擎生成模板。 3)将生成的模板输出到Web浏览器或保存到本地文件中。 3. 编写程序 最后,我们还需要编写程序来实现导出Word表格和文字模板的功能。具体来说,我们需要编写控制器、服务以及视图层的代码来完成这些功能。 总之,Spring Boot框架提供了一种快速、简单、高效的方式来导出Word表格和文字模板,同时也提供了大量的工具和库来加快开发效率。如果我们熟练掌握了Spring Boot框架的使用方法,那么在开发Java Web应用程序或微服务时就可以更加高效、快速地完成任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值