1、問題背景
最近在做的項目有畸變校正的需求,但測試鏡頭畸變時憎瘸,發(fā)現(xiàn)畸變的形態(tài)不太正常。如下圖所示中間向內(nèi)凹谨垃、四周向外凸启搂,感覺像是曲線型的。但常見的畸變就兩種刘陶,一種是向內(nèi)收的枕形畸變胳赌,另一種是向外凸的桶形畸變,所以本篇文章主要是對這個問題做一個分析匙隔,以及總結(jié)一下什么是畸變疑苫、畸變是怎么產(chǎn)生的、畸變的計算纷责。
2捍掺、問題分析
關(guān)于畸變,是屬于像差的一種再膳,肯定是和鏡頭相關(guān)的挺勿。遇到我上面的問題具體該怎么處理呢?最簡單的方法就是對著圖卡(一般是點陣圖/棋盤格)去拍 raw 圖喂柒,將有問題現(xiàn)象的 raw 圖反饋給鏡頭廠去確認不瓶。
一開始我是給的上面點陣圖的那張 raw,他們反饋看現(xiàn)象是不太正常灾杰,但說我拍歪了蚊丐,讓再擺正重新拍一張。隨即又拍了張擺正的解析力卡的 raw 給他們艳吠,因為是確認邊緣直線變曲線的問題麦备,所以用其他圖卡能復(fù)現(xiàn)現(xiàn)象也行。
如下是這顆模組的規(guī)格讲竿,反饋說是這顆鏡頭的視場角是120度泥兰,屬于廣角鏡頭弄屡,只要畸變<10.5%就是正常的题禀,確實短焦距的廣角鏡頭是會容易出現(xiàn)明顯的桶形畸變,但目前看到的這種曲線的畸變膀捷,就不太確定是什么了迈嘹。
鏡頭廠那邊實測,模擬給出的結(jié)論就是桶形畸變全庸,也是滿足鏡頭的設(shè)計要求的秀仲。并做了如下解釋,如下圖所示是反映鏡頭畸變的曲線圖壶笼、網(wǎng)格圖神僵。從畸變曲線看,是單調(diào)遞增的覆劈,且是負值保礼,所以是單純的桶形畸變沛励。
曲線圖上,在 2.2mm像高內(nèi)炮障,畸變都比較小目派,2.2mm 開始,畸變就變的比較大胁赢,應(yīng)該是內(nèi)視場畸變和外視場畸變差異過大導(dǎo)致的視差企蹭。
我的理解是類似于在一個一圈一圈的圓環(huán)里面畫直線,會感覺直線變形了一樣智末。
如上網(wǎng)格圖也是一樣谅摄,內(nèi)視場的畸變很小,而到邊角部分的畸變明顯變大所以視覺上就感覺中間不直了一樣系馆。
3螟凭、知識延申:關(guān)于畸變的相關(guān)概念
a、什么是畸變
畸變是指物體所成的像在形狀上的變形它呀,它并不會影響像的清晰度螺男,而只影響像與物的相似性。如下示意圖所示纵穿,常見的畸變類型有桶形畸變和枕形畸變下隧。
那什么時候是桶形畸變,什么時候又是枕形畸變呢谓媒?以如下簡單的示意圖為例淆院,將靠近鏡頭中心部分所成的像視為內(nèi)視場(y1),邊緣部分為外視場(y2)句惯。當內(nèi)視場的放大倍率 :y1/h1 > 外視場的放大倍率:y2/h2時土辩,所成的像是從中心是往外放大的,也就是桶形畸變抢野。 反之則是枕形畸變拷淘。
而具體出現(xiàn)桶形畸變還是枕形畸變,取決于光圈的位置指孤,當光圈在透鏡前面或后面時启涯,會限制光線的行為。
當光圈在鏡頭前面恃轩,像的高度減小了结洼,也就是像縮小了,就造成了桶形失真叉跛。復(fù)雜的鏡頭松忍,例如后焦距廣角鏡頭,往往就會出現(xiàn)桶形失真筷厘,因為前組鏡頭會充當后組的光圈鸣峭。
當光圈在鏡頭后面伟桅,像的高度增加了,也就是放大了叽掘,就是枕形失真楣铁。遠焦鏡頭的后組為負,會導(dǎo)致枕形失真更扁。
下面這幅圖片是對應(yīng)的三維圖盖腕,更加清晰的看出光圈與鏡頭的關(guān)系。
b浓镜、畸變產(chǎn)生的原因
從上面的概念我們了解到溃列,畸變產(chǎn)生的根本原因是鏡頭像場中央?yún)^(qū)的放大倍率和邊緣區(qū)的放大倍率不一致導(dǎo)致,那為什么不一致呢膛薛?
請看如下這個光路圖听隐,A和B一個是軸上點,一個是軸外點哄啄。過B點作輔助光軸雅任,也就是這個虛線,與像面交于B0′咨跌,B0′點即為B點的理想像點沪么。另一方面,B點若是以細光束成像锌半,則像點是B′點禽车,注意,細光束成像是沒有球差和慧差的刊殉,但是有場曲殉摔,所以B在細光束下成像像點實際在B', B′B0′為B點的場曲记焊。
當B點以主光線成像時逸月,看黃色主光線,這時注意亚亲,主光線是寬光束彻采,存在球差和慧差,所以寬光束成像時捌归,黃色主光線交輔軸于B1′點,所以B1′B′為B點的球差岭粤。
所以惜索,綜合球差慧差場曲的影響,主光線最終經(jīng)B1′點交像面于Bz′點剃浇,那實際像點Bz’就偏離了理想像點B0′巾兆。再看看位于光軸上的A點猎物,主光線與光軸重合,主光線的像點與理想像點在像面的中心點A′重合角塑,因此軸上點成像沒有偏差蔫磨,但是軸外點的像高和理想像高有差異,造成中心和邊緣的放大倍率不同圃伶,這就產(chǎn)生了畸變堤如。所以,由以上分析可以看出窒朋,畸變的形成既有場曲的因素也有球差的因素搀罢。
注: 篇幅有限,這里就不再解釋關(guān)于球差侥猩,慧差榔至,場曲的概念了,后續(xù)文章會再單獨描述欺劳;
c唧取、關(guān)于畸變的計算
再回到上面鏡頭的spec,描述了鏡頭的 TV 畸變是10.5%划提,光學(xué)畸變是20%兵怯,那這兩者的區(qū)別是什么,具體是如何計算的腔剂?
1)媒区、關(guān)于光學(xué)畸變:
光學(xué)畸變是對應(yīng)鏡頭的指標,描述的是物體所成像的理想位置和實際位置的偏差掸犬,如下光路圖中的軸外一點B袜漩,實際像點Bz',理想像點為B0′湾碎≈婀ィ可以用理想像高y’,和實際像高 yz’ 的比值來描述偏離程度介褥,
公式為:( yz'-y' ) / y' x 100%
可以用此項目中的鏡頭規(guī)格來做具體的驗證座掘,鏡頭的光學(xué)畸變是隨視場范圍變化而變化的,所以規(guī)格書給出的20%是最大的光學(xué)畸變值柔滔,所以我們要計算出最大的理想像高溢陪,也就是計算當是最大視場范圍時成像時的理想像高是多少。
最大的視場角如上規(guī)格書睛廊,對角線方向的 FOV 值為120° (如下圖 ? = 60° )形真,焦距 f 是2.13mm,理想像高為:tan 60° x 2.13 = 3.689mm超全;
而最大實際像高就是 sensor 對角線長的一半:5.867 / 2 = 2.934mm咆霜;
則鏡頭最大光學(xué)畸變?yōu)椋海?.934-3.689)/ 3.689 x 100% = - 20% ;
2)邓馒、關(guān)于 TV 畸變:
TV畸變是對應(yīng)所拍攝出的圖片而言的,體現(xiàn)圖像的變形程度蛾坯,我們平常用 imatest 軟件所測試的就是TV畸變的值光酣。TV 是 Transverse Vertical,橫向豎向的意思脉课。
關(guān)于TV畸變的計算它有SMIA 和 Traditional TV distortion 兩種救军,如下示意圖所示:
SMIA TV Distortion = 100% * ( A-B )/B ; A = ( A1+A2 )/2
Traditional TV distortion = 100% * ?H/H
如上SMIA TV Distortion 計算中下翎,A =( A1+A2 )/2 =H+2?H缤言,B = H,則 100% *(A-B)/B = 2?H/H视事,所以?SMIA TV Distortion = 2x?Traditional TV distortion胆萧。
還是以此項目中用到的鏡頭來做具體的驗證,規(guī)格書中給出的TV 畸變值是10.5%俐东,且是SMIA TV 畸變跌穗;
如下是實拍的棋盤格的圖,用來計算 SMIA TV畸變虏辫,拍兩條橫向直線蚌吸,讓他們與圖像的上下邊相切。兩條直線與圖像左側(cè)相交砌庄,得到兩個坐標羹唠,計算出縱向像素差A(yù)1。同樣的方法可以得到右側(cè)的縱向像素差A(yù)2娄昆。兩條直線間的距離就是圖像的高B佩微,畸變值就是((A1+A2)/2 - B)/B。
用畫圖工具打開后萌焰,就可以得到每個點的像素位置哺眯,如下圖的坐標所示,先算出左側(cè)的像素差(2944-176=2768)扒俯,右側(cè)的像素差(2937-169=2768)奶卓,中間的像素差為3120,可以計算出畸變值為:((2768+2768)/2 - 3120)/3120 = -11.2%)撼玄,結(jié)果有點誤差夺姑,但也不大,實際測試一般都是用 imatest 軟件去計算互纯,能了解一下具體是怎么計算的就可以了瑟幕。