摄像头图像桶形畸变校正测试
from: http://blog.csdn.net/hyanglu1573/article/details/12876727
1????????桶形畸變原理
如果攝像頭使用短焦距廣角鏡頭,那么得到的圖像會(huì)發(fā)生桶形畸變,如下圖所示。
圖 1 攝像頭畸變圖像
?
產(chǎn)生桶形畸變的原因是:鏡頭的放大倍數(shù)隨著距離增大而逐漸減小,造成圖像像素點(diǎn)放射形地圍繞中心點(diǎn)的。原理圖如下所示。
?
圖 2 桶形畸變原理
?
桶形畸變的數(shù)學(xué)模型是:
| ? | ? | (1) |
其中,是非畸變圖像中某像素點(diǎn)到圖像中心的距離,是畸變后該像素點(diǎn)到圖像中心的距離,是畸變因子,與具體的鏡頭相關(guān)。
?
?
2????????使用Matlab進(jìn)行校正
根據(jù)圖 2公式(1),我們可以使用Matlab進(jìn)行畸變校正,算法比較簡單,不詳細(xì)解釋原理了,Matlab代碼如下所示。
?
| % Barrel Distortion correction clear; clc; ? img_origin = imread('5642_vga.jpg'); ? % Change this two parameters to improve image quality k1 = -0.0000026; k2 = -0.0000026; ? img_size = size( img_origin ); img_undist = zeros( img_size ); img_undist = uint8( img_undist ); ? for l0 = 1:img_size(3) ??? for l1 = 1:img_size(1) ??????? y = l1 - img_size(1)/2; ??????? for l2 = 1:img_size(2) ???????? ???x = l2 - img_size(2)/2; ??????????? x1 = round( x * ( 1 + k1 * x * x + k2 * y * y ) ); ??????????? y1 = round( y * ( 1 + k1 * x * x + k2 * y * y ) ); ??????????? y1 = y1 + img_size(1)/2; ??????????? x1 = x1 + img_size(2)/2; ??????????? % if x1 or y1 exceeds boundary, force them to 0(black) ??????????? if x1 < 1 || x1 > img_size(2) || y1 < 1 || y1 > img_size(1) ??????????????? img_undist(l1,l2,l0) = 0; ??????????? else ??????????????? img_undist(l1,l2,l0) = img_origin(y1, x1,l0); ??????????? end ??????? end ??? end end ? figure(1); % compare the two images in one figure subplot(121); imshow(img_origin); subplot(122); imshow(img_undist); ? % save the original image to 1.jpg imwrite(img_origin,'1.jpg'); % save the changed image to 2.jpg imwrite(img_undist,'2.jpg'); ? |
?
代碼中的k1和k2是分別用來調(diào)整x軸畸變和y軸畸變的參數(shù),調(diào)整兩個(gè)參數(shù)就可以調(diào)整圖像的畸變率。
設(shè)置k1=k2=0.000003時(shí),校正圖像如下:
?
圖 3 k1=k2=0.000003
?
從圖中可以看出,原圖像中間部分的彎曲已經(jīng)被糾正了,但是四個(gè)角落里卻出現(xiàn)了較大的形變,圖像反畸變效果不理想。
改變參數(shù),設(shè)置k1=k2=0.000001,校正后的圖像效果如下:
?
圖 4 k1=k2=0.000001
?
從圖中可以看出,整幅圖像的變形很小,畫面效果還可以,但是卻沒有完全將桶形畸變的完全線校正為直線。
繼續(xù)改變參數(shù),經(jīng)過多次嘗試,最終選擇出一個(gè)較為理想的參數(shù)為k1=k2=0.000002,顯示效果如下圖所示。
可以看出,在為了保證圖像質(zhì)量的前提下,設(shè)置的參數(shù)并沒有完全將桶形畸變造成的物體彎曲進(jìn)行糾正。
圖 5 k1=k2=0.000002
總結(jié)
以上是生活随笔為你收集整理的摄像头图像桶形畸变校正测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 矩阵特征值与行列式、迹的关系
- 下一篇: Ubuntu Linux 安装后,建立嵌