1、問題背景 最近在做的項目有畸變校正的需求,但測試鏡頭畸變時,發(fā)現(xiàn)畸變的形態(tài)不太正常。如下圖所示中間向內(nèi)凹、四周向外凸,感覺像是曲線型的。 但常見的畸變就兩種,一種是向內(nèi)收的枕形畸變,另一種是向外凸的桶形畸變,所以本篇文章主要是對這個問題做一個分析, 以及總結(jié)一下什么是畸變、畸變是怎么產(chǎn)生的、畸變的計算。 ? 2、問題分析 關(guān)于畸變,是屬于像差的一種,肯定是和鏡頭相關(guān)的。遇到我上面的問題具體該怎么處理呢? 最簡單的方法就是對著圖卡(一般是點陣圖/棋盤格)去拍 raw 圖,將有問題現(xiàn)象的 raw 圖反饋給鏡頭廠去確認(rèn)。 一開始我是給的上面點陣圖的那張 raw,他們反饋看現(xiàn)象是不太正常,但說我拍歪了,讓再擺正重新拍一張。 隨即又拍了張擺正的解析力卡的 raw 給他們,因為是確認(rèn)邊緣直線變曲線的問題,所以用其他圖卡能復(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)。 ? 當(dāng)內(nèi)視場的放大倍率 :y1/h1 > 外視場的放大倍率:y2/h2時,所成的像是從中心是往外放大的,也就是桶形畸變。反之則是枕形畸變。 ? 而具體出現(xiàn)桶形畸變還是枕形畸變,取決于光圈的位置,當(dāng)光圈在透鏡前面或后面時,會限制光線的行為。 ? 當(dāng)光圈在鏡頭前面,像的高度減小了,也就是像縮小了,就造成了桶形失真。復(fù)雜的鏡頭,例如后焦距廣角鏡頭,往往就會出現(xiàn)桶形失真,因為前組鏡頭會充當(dāng)后組的光圈。 ? 當(dāng)光圈在鏡頭后面,像的高度增加了,也就是放大了,就是枕形失真。遠焦鏡頭的后組為負,會導(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點的場曲。 ? 當(dāng)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)鏡頭的指標(biāo),描述的是物體所成像的理想位置和實際位置的偏差,如下光路圖中的軸外一點B,實際像點Bz',理想像點為B0′。 ? 可以用理想像高y’,和實際像高 yz’ 的比值來描述偏離程度, 公式為:( yz'-y' ) / y' x 100%; ? ? 可以用此項目中的鏡頭規(guī)格來做具體的驗證,鏡頭的光學(xué)畸變是隨視場范圍變化而變化的,規(guī)格書給出的20%是最大的光學(xué)畸變值, ? 所以我們要計算出最大的理想像高,也就是計算當(dāng)是最大視場范圍時成像時的理想像高是多少。 ? ? 最大的視場角如上規(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è)相交,得到兩個坐標(biāo),計算出縱向像素差A(yù)1。同樣的方法可以得到右側(cè)的縱向像素差A(yù)2。兩條直線間的距離就是圖像的高B,畸變值就是((A1+A2)/2 - B)/B。 ? 用畫圖工具打開后,就可以得到每個點的像素位置,如下圖的坐標(biāo)所示,先算出左側(cè)的像素差(2944-176=2768),右側(cè)的像素差(2937-169=2768),中間的像素差為3120, ? 可以計算出畸變值為:((2768+2768)/2 - 3120)/3120 = -11.2%),結(jié)果有點誤差,但也不大,實際測試一般都是用 imatest 軟件去計算,能了解一下具體是怎么計算的就可以了。??
責(zé)任編輯:彭菁
-
模擬
+關(guān)注
關(guān)注
7文章
1422瀏覽量
83925 -
鏡頭
+關(guān)注
關(guān)注
2文章
506瀏覽量
25651 -
線型
+關(guān)注
關(guān)注
0文章
5瀏覽量
6577
原文標(biāo)題:關(guān)于鏡頭畸變問題的總結(jié)
文章出處:【微信號:機器視覺沙龍,微信公眾號:機器視覺沙龍】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論