智能车制作

标题: 关于桶形失真的矫正 [打印本页]

作者: sonwendi    时间: 2011-11-7 19:48
标题: 关于桶形失真的矫正
本帖最后由 sonwendi 于 2011-11-7 19:55 编辑

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

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

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

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

源图像:
[attach]13331[/attach]

校正后的图像:
[attach]13332[/attach]

另外一个(焦距2.1):

[attach]13338[/attach]

[attach]13340[/attach]

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

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

[attach]13333[/attach]

矫正一块的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
复制代码

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

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

标定的完整matlab代码:
[attach]13337[/attach]
作者: turf456    时间: 2011-11-7 20:13
{:3_57:}
作者: 凌心    时间: 2011-11-7 20:36

作者: sonwendi    时间: 2011-11-7 20:57
回复 2# turf456


    你们速度好快啊,有提醒新帖的工具么?
作者: sonwendi    时间: 2011-11-7 20:57
回复 3# 凌心


    好速度啊……
作者: turf456    时间: 2011-11-7 21:33
巧合而已
作者: 弥好    时间: 2011-11-7 21:48

作者: ☆_。寒泉..+    时间: 2011-11-7 22:10
必须顶啊
作者: zouyf12    时间: 2011-11-7 22:11
我觉得不用休整,又不是拍照。  失真反而有用,我当时做车时就是利用了这个失真。 比如同样的黑线与中线的偏差值,在摄像头看来会出现远处的偏差值“看”起来会小于近处偏差值这一结果。  这恰好符合车辆的控制原理。
作者: 征服者    时间: 2011-11-7 23:23
这个好东西啊
作者: 97度    时间: 2011-11-7 23:25
正在研究楼主之前发的一篇关于桶形失真的帖子 又来新料了
作者: 97度    时间: 2011-11-7 23:26
回复 9# zouyf12


    有兴趣 试一下
作者: 810215729    时间: 2011-11-8 07:08
看看,
作者: sonwendi    时间: 2011-11-8 14:36
回复 9# zouyf12


    嗯,你说的也有道理,因为每个人用的策略不一样,我们用的是算出实际的距离然后算出最佳的斜率~
    所以必须要对图像进行校正,才能算准确
作者: sonwendi    时间: 2011-11-8 14:37
回复 11# 97度


    那个没有这一个详细,里面的论文很有用
作者: xingchen_star    时间: 2011-11-8 16:09
MARK
作者: xiegongzi    时间: 2011-11-8 16:29
MARK   看看再说
作者: 很高很瘦    时间: 2011-11-12 12:30
虽然看不太懂
作者: jwt1123    时间: 2011-11-12 15:17
少年 你太年轻了 你以为这个论坛上真的有那么多人回复你的帖子? 其实都是我一个人回的,不然我换个ID发同样的话给你看
作者: 刘世林    时间: 2011-11-13 09:49
好东东!!!
作者: 夜落_归根    时间: 2012-1-2 00:48
学习。。。
作者: Crazyfox    时间: 2012-1-2 17:11
好!
作者: Lazyoung    时间: 2012-1-3 20:21
顶一下,趁着春节研究一下
作者: winners000001    时间: 2012-1-4 08:33
谢谢楼主分享
作者: 百步飞剑    时间: 2012-1-4 18:40
好东西……
作者: cqucj    时间: 2012-1-6 01:37
赞,疑惑啊
作者: dontk    时间: 2012-1-7 14:56
非常有用
作者: bavol    时间: 2012-1-7 16:20
不错~
作者: 尘666    时间: 2012-1-12 13:24
学习了
作者: zy317409314    时间: 2012-1-28 19:10
帅啊。。。楼主太威武
作者: 5801209027    时间: 2012-1-30 12:02
谢谢  童鞋
作者: 110fengfan    时间: 2012-2-1 10:16
学习中
作者: 篪骋    时间: 2012-2-5 23:15

作者: foreverionai    时间: 2012-3-5 16:56
我想问一下cx和cy是什么意思?怎么确定它们值的大小?
作者: 小胡杨    时间: 2012-3-5 18:46
此贴要顶  一定要顶
作者: 1285398438    时间: 2012-3-10 23:42
好东西系
作者: 568581185    时间: 2012-3-12 00:08
看看,或许能用上吧
作者: qjh690623    时间: 2012-3-12 17:19
好东西.......................
作者: qiyixi    时间: 2012-3-12 18:37

作者: yhy1992    时间: 2012-3-12 23:16
谢谢了,
作者: xiatians1008    时间: 2012-3-13 13:42
mark
作者: 齐天小晟    时间: 2012-3-15 20:45
正好需要
作者: hpuwangyankai    时间: 2012-3-18 20:35

作者: qiyixi    时间: 2012-3-19 19:48
顶顶~
作者: 936204469    时间: 2012-3-25 21:00
楼主是个好人啊,经常看到一些好东西
作者: zhang12345    时间: 2012-3-26 14:34
版主人太好了
作者: char_rp    时间: 2012-3-31 12:48
:victory:
作者: 冰水混合物    时间: 2012-3-31 14:07
mark

作者: xiwang    时间: 2012-3-31 16:21
谢谢分享,以前没注意过。
作者: 日月星辰591    时间: 2012-4-17 12:54

作者: 浅语003    时间: 2012-4-18 17:42

作者: vgjkl    时间: 2012-4-18 22:27
{:soso_e179:}
作者: czrushman    时间: 2012-4-24 22:04
这个牛逼了    正要用
作者: loucyin    时间: 2012-5-5 20:55
好东西谢谢分享
作者: leafyou    时间: 2012-5-6 11:40
好资料啊
作者: 小挺挺    时间: 2012-5-6 11:59
收下了
作者: 2009gxs    时间: 2012-5-7 19:52
好的~~研究中
作者: vgjkl    时间: 2012-5-8 08:38

作者: gzhcontent    时间: 2012-5-8 18:58
楼主威武
作者: 路过路过。。。    时间: 2012-10-29 22:47
虽然是一年前的帖子,但是,为了表示对楼主解决燃眉之急的感谢,我还是要顶!!!
作者: Mr.Lee    时间: 2012-12-6 21:35

作者: Mr.Lee    时间: 2012-12-6 22:15
感觉好深奥
作者: 潘俊    时间: 2012-12-6 22:33
没怎么考虑过这个
作者: Mr.Lee    时间: 2012-12-6 23:34

作者: rrk    时间: 2012-12-7 19:01
看看
作者: qq363546178    时间: 2012-12-8 23:57
正好准备弄这个,学习了
作者: 小挺挺    时间: 2012-12-9 09:15
感谢分享
作者: qual9109    时间: 2012-12-10 09:19
好东西
作者: 552431024    时间: 2012-12-21 13:07
收藏 谢谢

作者: 401319719    时间: 2012-12-26 21:48
寒假找时间学习一下
作者: microconfig    时间: 2012-12-27 00:16
感觉这个很厉害的样子,但是当时没用这个方法。不知道真实的效果怎样。感觉当时我们的摄像头失真没有这么严重。
作者: 378110705    时间: 2012-12-28 13:31
谢谢楼主,楼主好人啊
作者: jiangxinyu    时间: 2012-12-29 18:59
顶顶顶顶顶顶顶顶顶顶
作者: 暴走兄弟    时间: 2012-12-29 19:34
zouyf12 发表于 2011-11-7 22:11
我觉得不用休整,又不是拍照。  失真反而有用,我当时做车时就是利用了这个失真。 比如同样的黑线与中线的偏 ...

对大神的观点表示赞同,这里用于控制,图像校正未必那么重要。
当然,也仅是我自己的观点。

作者: gmszone    时间: 2013-1-1 22:32
这个好东西啊
作者: 似水流年、    时间: 2013-1-1 23:16
好东西,不过我用不到
作者: 1006110218    时间: 2013-1-2 08:09

作者: 夜月L    时间: 2013-3-3 12:08
谢谢
作者: dlyt03    时间: 2013-3-3 13:11
:)
作者: 林海金    时间: 2013-3-3 15:34
直接加权积分,这样简单,看看效果再说
作者: sm047    时间: 2013-3-6 17:42
谢谢分享!
作者: april412    时间: 2013-3-6 23:42
梯形失真有必要校正吗
作者: k40368    时间: 2013-3-17 04:13
{:soso_e179:}
作者: huanyefeng0809    时间: 2013-3-17 09:46
顶一个先...
作者: shhu1993    时间: 2013-4-3 22:11
楼主牛逼啊









作者: 百川汇流    时间: 2013-4-6 13:31
学习了
作者: betesla    时间: 2013-4-9 14:57
zouyf12 发表于 2011-11-7 22:11
我觉得不用休整,又不是拍照。  失真反而有用,我当时做车时就是利用了这个失真。 比如同样的黑线与中线的偏 ...

这个想法不错啊 不过做精确控制的话需要识别赛道的类型以及距离车体的距离,这种思想似乎就不太实用了,还是要建立在精确处理的基础上把

作者: RAH——66    时间: 2013-4-19 20:56
谢啦!
作者: +许Val+    时间: 2013-4-22 10:56
2.2.jpg是哪个图像啊
作者: zhyk411912464    时间: 2013-4-27 11:28
受教了

作者: `俟。    时间: 2013-5-23 19:15
想问问K1, K2是通过待定系数法算出来吗
作者: `俟。    时间: 2013-5-25 14:36
foreverionai 发表于 2012-3-5 16:56
我想问一下cx和cy是什么意思?怎么确定它们值的大小?

同求啊~~~~
作者: 柯罗那多    时间: 2013-5-30 02:30

作者: higeo    时间: 2013-5-30 03:58
真的有这个必要吗?
作者: 一个好青年    时间: 2013-5-30 15:34

作者: 398720241    时间: 2013-7-7 14:45
zouyf12 发表于 2011-11-7 22:11
我觉得不用休整,又不是拍照。  失真反而有用,我当时做车时就是利用了这个失真。 比如同样的黑线与中线的偏 ...

大哥求指教,具体能怎样利用它的失真,你们的中线又是怎么提取的?
用的什么算法?

作者: fsrchxm    时间: 2013-7-9 08:33
{:soso_e179:}
作者: 追风style    时间: 2013-8-10 22:17

作者: luyu    时间: 2013-9-22 12:21
定顶
作者: ZHENTIANDADI    时间: 2013-9-30 17:34
真实性强 了些




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2