找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6520|回复: 3
打印 上一主题 下一主题
收起左侧

桶形校正+逆投影变换GUIv1 MATLAB程序分享

[复制链接]
跳转到指定楼层
楼主
桶形变换程序分享,基于MATLAB


(1)先看“逆透视在智能车中使用”
(2)再看“上位机使用步骤”


逆透视在智能车中的使用
透视矫正上位机
对智能车图像进行的透视校正,能够使得摄像头的固定与程序的耦合相离。
当摄像头受到损坏或其他原因需要重新安装时,可通过透视校正的重新标定,基本不需要再调试就可以恢复到之前的状态。
透视矫正的重点在于要通过矩阵计算获得一组参数,将参数放入程序中使用。
我们使用 MATLAB 开发了用于生成参数的软件,并且兼具取点,图像效果测试,单点测试的功能。
透视矫正的方法是制作一块矫正板,如下图所示:

将车放置在上面之后使用图像采集上位机采集并保存图像,然后打开透视校正软件。


上位机使用步骤:

1.打开 GUI4 文件夹运行 inverse_perspective_mapping_demo.m 文件
2.选择原始图像(注意选择图像格式,必须把图像保存在目标文件中)
3.调节 k1,k2 两个参数来校正桶形失真,调节好后记下两个参数
4. (1)如需进行图像抽取,运行 Barrel_table.m 文件带入 k1,k2 两个参数运行,再运行 haha.m
文件生成 U(行)、I(列)变量,即校正并抽取后的图像校正表,可在文档编辑器中空格替
换成“,”以便写入程序,注意最后一列需要手动添加。
如不需进行图像抽取,直接在上位机点击生成桶形失真校正表即可。保存在 barrelCOL.txt(行)
和 barrelROW.txt(列)
(2)声明变量
const uint8 img_barrel_row[CAMERA_H][CAMERA_W]={桶形失真行校正表}
const uint8 img_barrel_col[CAMERA_H][CAMERA_W]={桶形失真列校正表}
uint8 img_barrel[CAMERA_H][CAMERA_W]; //桶形失真矫正后图像
(3)校正后图像
for(uint8 ii=0;ii<CAMERA_H;ii++)
{
for(uint8 jj=0;jj<CAMERA_W;jj++) {
img_barrel[ii][jj]=img[img_barrel_row[ii][jj]][img_barrel_col[ii][jj]];
}
}
(注:Img 数组中保存的是原始图像 img_barrel[CAMERA_H][CAMERA_W]是校正后图
像)
到这里桶形失真就做完了。
5.将校正后的图像通过蓝牙发送到电脑保存,用上位机打开。
6.k1 调到 0,k2 调到 3.3881e-21 调到,点击“选取标定点”按提示选取会自动生成图像坐
标,然后再自己输入实际坐标(左为列 、右为行、自行确定实际坐标原点位置),点击“生
成参数”即可生成
逆透视校正参数 rot = [ 8.3026, 2.8477e-12, -668.3553; -2.9995e-13, -12.6121, 884.3799; -3.6189e-14, 0.08971, 1 ]。
可进行图像测试和单点测试
7.对照 rot 依次声明六个逆透视参数宏定义
#define INV_A 8.3026
#define INV_B 0
#define INV_C -668.3553
#define INV_D 0
#define INV_E -12.6121
#define INV_F 884.3799
#define INV_G 0
#define INV_H 0.08971
8.两个坐标变换函数
typedef struct
{
double x;
double y;
} Site_xy; //定义浮点型结构体
typedef struct
{
int16 x;
int16 y;
} Site_xy1; //定义整型结构体
图像转实际函数
Site_xy get_inv_img(int16 xxx ,int16 yyy) //逆透视(xxx 为图像行,yyy 为列)
{
Site_xy temp;
xxx++;
yyy++;
temp.y = (INV_A*yyy+INV_B*xxx+INV_C)/(INV_G*yyy+INV_H*xxx+1);
temp.x = (INV_D*yyy+INV_E*xxx+INV_F)/(INV_G*yyy+INV_H*xxx+1);
return temp;
}
/******************************************************************************
*****************************************************/
实际转图像函数
Site_xy1 get_invinv_img(double xxx,double yyy) //反逆透视(xxx 为实际行,yyy 为列)
{
Site_xy1 temp;
double uSrcImg,vSrcImg;//反逆透视坐标
uSrcImg =(INV_B*INV_F - INV_C*INV_E + INV_E*yyy - INV_B*xxx - INV_F*INV_H*yyy +
INV_C*INV_H*xxx)/(INV_A*INV_E - INV_B*INV_D + INV_D*INV_H*yyy - INV_E*INV_G*yyy -
INV_A*INV_H*xxx + INV_B*INV_G*xxx);
vSrcImg =-(INV_A*INV_F - INV_C*INV_D + INV_D*yyy - INV_A*xxx - INV_F*INV_G*yyy +
INV_C*INV_G*xxx)/(INV_A*INV_E - INV_B*INV_D + INV_D*INV_H*yyy - INV_E*INV_G*yyy -
INV_A*INV_H*xxx + INV_B*INV_G*xxx);
temp.x=round(vSrcImg-1);
temp.y=round(uSrcImg-1);
return temp;
}

  1. % 镜头桶形失真校正(短焦镜头)
  2. clc,clear;
  3. img_origin1 = imread('555.bmp');
  4. img_origin = rgb2gray(img_origin1);

  5. k1 =-8.5e-06; % 形变参数,根据实际情况调整
  6. k2 =-8.5e-06;

  7. img_size = size( img_origin );
  8. img_undist = zeros( img_size );
  9. img_undist = uint8( img_undist );
  10. C=zeros(img_size(1),img_size(2));
  11. D=zeros(img_size(1),img_size(2));
  12. for l1 = 1:img_size(1) % 垂直方向
  13. y = l1 - img_size(1)/2;
  14. for l2 = 1:img_size(2) % 水平方向
  15. x = l2 - img_size(2)/2;
  16. x1 = round( x * ( 1 + k1 * x * x + k2 * y * y ) ); %文献一公式
  17. y1 = round( y * ( 1 + k1 * x * x + k2 * y * y ) );
  18. y1 = y1 + img_size(1)/2;
  19. x1 = x1 + img_size(2)/2;
  20. y1 = uint8( y1 );
  21. x1 = uint8( x1 );
  22. if   y1 > 0 ||  y1 <=img_size(1) || x1 > 0 || x1 <=img_size(2)
  23.      C(l1,l2)=y1-1;
  24.      D(l1,l2)=x1-1;
  25. end
  26. img_undist(l1,l2) = img_origin(y1, x1);
  27. end
  28. end

  29. figure(1);
  30. subplot(121); imshow(img_origin);title('原图');
  31. subplot(122); imshow(img_undist);title('校正图');

  32. imwrite(img_origin,'1.bmp');
  33. imwrite(img_undist,'2.bmp');
复制代码

全部资料51hei下载地址:
桶形校正 逆投影变换GUIv1.zip (2.53 MB, 下载次数: 95)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:389026 发表于 2018-8-22 20:35 | 只看该作者
黑币不够,对于初学者有很大帮助,可惜下不了
回复

使用道具 举报

板凳
ID:398021 发表于 2018-11-23 16:59 | 只看该作者
请问这个上位机软件用的图片格式是什么啊
回复

使用道具 举报

地板
ID:197571 发表于 2019-6-5 20:21 | 只看该作者
楼主,请问一下这个软件怎么做逆透视变换呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表