智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: sonwendi
打印 上一主题 下一主题

关于桶形失真的矫正

    [复制链接]

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
跳转到指定楼层
1#
发表于 2011-11-7 19:48:25 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sonwendi 于 2011-11-7 19:55 编辑

貌似还没有人发过这方面的帖子,不过我们之前用过这个技术,我也研究了一小下,公开一下吧:

我们都知道,镜头焦距越长可以看得视野越窄,但是图像越接近真实的;焦距越短,看的范围越大,但是失真越严重。
一般的,像我们比赛的话就只用考虑两种失真就够了:一是桶形失真;一个是梯形失真。

梯形失真我们都很熟悉,对于矩阵变换的公式也有很多,就不提了。
但是对于桶形失真这个不好解决,因为在摄像头的边缘位置图像被压缩得很厉害,造成看到的图像就不能按照梯形失真那一套来解决。
所以,在进行梯形变换之前要先进行桶形失真的矫正。

先看下效果(焦距1.8mm):

源图像:


校正后的图像:


另外一个(焦距2.1):





(第一幅图是完整的展开对应起来,第二幅图只要了原图的一部分,因为四个角的图像压缩太厉害,不好用)

这个原理并不难,像我们大学物理里面做的实验--牛顿环。
你可以认为两幅图片是经过一个函数建立起来的对应关系,而且校正以后的图上多个点可以对应原图上的一个点,所以会有校正后畸形的情况,但是这对于计算的误差很小,几乎可以忽略,所以可以认为误差是可以容忍的。
具体的原理因为有点烦,画图不好画,我就直接引用一篇论文,我也是看着这一篇和以前师兄留下的代码才做出来的:



矫正一块的matlab代码如下:


  1. for l1 = 1:(img_size(1)+cy*2)  % 垂直方向
  2.    
  3.     y = l1 - img_size(1)/2-cy;
  4.    
  5.     for l2 = 1:(img_size(2)+cx*2)  % 水平方向
  6.         
  7.         x = l2 - img_size(2)/2-cx;
  8.         
  9.         x1 = round( x * ( 1 + k1 * x * x + k1 * y * y ) );
  10.         x1_err =  x * ( 1 + k1 * x * x + k1 * y * y ) - x1;
  11.         y1 = round( y * ( 1 + k2 * x * x + k2 * y * y ) );
  12.         y1_err =  y * ( 1 + k2 * x * x + k2 * y * y ) - y1;
  13.         err = x1_err * x1_err + y1_err * y1_err;
  14.         y1 = y1 + img_size(1)/2;
  15.         x1 = x1 + img_size(2)/2;
  16.         
  17.         
  18.         if y1>0 && y1<(img_size(1)+1) && x1>0 && x1<(img_size(2)+1)
  19.             yy(y1,x1) = l1;
  20.             xx(y1,x1) = l2;
  21.             error(l1,l1) = err;   
  22.             counter(y1,x1)=counter(y1,x1)+1;
  23.             img_undist(l1,l2) = img_origin(y1, x1);
  24.         end
  25.     end
  26. end
复制代码

可以这样理解:点是通过函数对应,那么久一点一点的解算出校正以后的点在原图上的位置,搬运过来。
函数对应关系:


这样子,可以把图像校正以后做结算,用标定的方法算出黑线的真实距离,用真实的斜率来控制。

标定的完整matlab代码:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

3

查看全部评分

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
2#
 楼主| 发表于 2011-11-7 20:57:04 | 显示全部楼层
回复 2# turf456


    你们速度好快啊,有提醒新帖的工具么?
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
3#
 楼主| 发表于 2011-11-7 20:57:23 | 显示全部楼层
回复 3# 凌心


    好速度啊……
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
4#
 楼主| 发表于 2011-11-8 14:36:43 | 显示全部楼层
回复 9# zouyf12


    嗯,你说的也有道理,因为每个人用的策略不一样,我们用的是算出实际的距离然后算出最佳的斜率~
    所以必须要对图像进行校正,才能算准确
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
5#
 楼主| 发表于 2011-11-8 14:37:20 | 显示全部楼层
回复 11# 97度


    那个没有这一个详细,里面的论文很有用
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
6#
 楼主| 发表于 2015-4-11 02:39:12 | 显示全部楼层
小小梦想 发表于 2015-4-4 14:12
请教下楼主怎么生成反矫正列表???  谢谢了

反矫正是什么意思?是要把正常的弄成畸变的?
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
7#
 楼主| 发表于 2015-5-13 23:32:35 | 显示全部楼层
本帖最后由 sonwendi 于 2015-5-13 23:42 编辑
chupacabra96 发表于 2015-5-6 03:03
求问 楼主 关于梯形失真如何解决。

我发帖子就是详细说这个的,你还这么问我。。。

ohsorry,没看到“梯形”二字,抱歉啊~
梯形其实也是个坐标变换,用类似的思路,建立模型,然后转换坐标就可以,网上资料很多的
四年前做过的东西有一些已经忘记了,这是当时参考的几篇论文,希望对你有帮助!
加油!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
8#
 楼主| 发表于 2015-6-8 23:20:00 | 显示全部楼层
LeonardoMr6 发表于 2015-5-16 01:11
此处出现了错误,这个语句是必须的吗?

下标出错了,可能为0了,你仔细看一下是不是图片用的你自己的?
因为图片大小不一样,可能有一些参数需要调整
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-30 07:44 , Processed in 0.058699 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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