|
桶形變換程序分享,基于MATLAB
0.png (46.37 KB, 下載次數(shù): 114)
下載附件
2018-8-12 15:00 上傳
(1)先看“逆透視在智能車中使用”
(2)再看“上位機(jī)使用步驟”
逆透視在智能車中的使用
透視矯正上位機(jī)
對智能車圖像進(jìn)行的透視校正,能夠使得攝像頭的固定與程序的耦合相離。
當(dāng)攝像頭受到損壞或其他原因需要重新安裝時(shí),可通過透視校正的重新標(biāo)定,基本不需要再調(diào)試就可以恢復(fù)到之前的狀態(tài)。
透視矯正的重點(diǎn)在于要通過矩陣計(jì)算獲得一組參數(shù),將參數(shù)放入程序中使用。
我們使用 MATLAB 開發(fā)了用于生成參數(shù)的軟件,并且兼具取點(diǎn),圖像效果測試,單點(diǎn)測試的功能。
透視矯正的方法是制作一塊矯正板,如下圖所示:
0.png (279.95 KB, 下載次數(shù): 91)
下載附件
2018-8-12 15:03 上傳
將車放置在上面之后使用圖像采集上位機(jī)采集并保存圖像,然后打開透視校正軟件。
上位機(jī)使用步驟:
1.打開 GUI4 文件夾運(yùn)行 inverse_perspective_mapping_demo.m 文件
2.選擇原始圖像(注意選擇圖像格式,必須把圖像保存在目標(biāo)文件中)
3.調(diào)節(jié) k1,k2 兩個(gè)參數(shù)來校正桶形失真,調(diào)節(jié)好后記下兩個(gè)參數(shù)
4. (1)如需進(jìn)行圖像抽取,運(yùn)行 Barrel_table.m 文件帶入 k1,k2 兩個(gè)參數(shù)運(yùn)行,再運(yùn)行 haha.m
文件生成 U(行)、I(列)變量,即校正并抽取后的圖像校正表,可在文檔編輯器中空格替
換成“,”以便寫入程序,注意最后一列需要手動(dòng)添加。
如不需進(jìn)行圖像抽取,直接在上位機(jī)點(diǎn)擊生成桶形失真校正表即可。保存在 barrelCOL.txt(行)
和 barrelROW.txt(列)
(2)聲明變量
const uint8 img_barrel_row[CAMERA_H][CAMERA_W]={桶形失真行校正表}
const uint8 img_barrel_col[CAMERA_H][CAMERA_W]={桶形失真列校正表}
uint8 img_barrel[CAMERA_H][CAMERA_W]; //桶形失真矯正后圖像
(3)校正后圖像
for(uint8 ii=0;ii<CAMERA_H;ii++)
{
for(uint8 jj=0;jj<CAMERA_W;jj++) {
img_barrel[ii][jj]=img[img_barrel_row[ii][jj]][img_barrel_col[ii][jj]];
}
}
(注:Img 數(shù)組中保存的是原始圖像 img_barrel[CAMERA_H][CAMERA_W]是校正后圖
像)
到這里桶形失真就做完了。
5.將校正后的圖像通過藍(lán)牙發(fā)送到電腦保存,用上位機(jī)打開。
6.k1 調(diào)到 0,k2 調(diào)到 3.3881e-21 調(diào)到,點(diǎn)擊“選取標(biāo)定點(diǎn)”按提示選取會(huì)自動(dòng)生成圖像坐
標(biāo),然后再自己輸入實(shí)際坐標(biāo)(左為列 、右為行、自行確定實(shí)際坐標(biāo)原點(diǎn)位置),點(diǎn)擊“生
成參數(shù)”即可生成
逆透視校正參數(shù) rot = [ 8.3026, 2.8477e-12, -668.3553; -2.9995e-13, -12.6121, 884.3799; -3.6189e-14, 0.08971, 1 ]。
可進(jìn)行圖像測試和單點(diǎn)測試
7.對照 rot 依次聲明六個(gè)逆透視參數(shù)宏定義
#define INV_A 8.3026
#define INV_B 0
#define INV_C -668.3553
#define INV_D 0
#define INV_E -12.6121
#define INV_F 884.3799
#define INV_G 0
#define INV_H 0.08971
8.兩個(gè)坐標(biāo)變換函數(shù)
typedef struct
{
double x;
double y;
} Site_xy; //定義浮點(diǎn)型結(jié)構(gòu)體
typedef struct
{
int16 x;
int16 y;
} Site_xy1; //定義整型結(jié)構(gòu)體
圖像轉(zhuǎn)實(shí)際函數(shù)
Site_xy get_inv_img(int16 xxx ,int16 yyy) //逆透視(xxx 為圖像行,yyy 為列)
{
Site_xy temp;
xxx++;
yyy++;
temp.y = (INV_A*yyy+INV_B*xxx+INV_C)/(INV_G*yyy+INV_H*xxx+1);
temp.x = (INV_D*yyy+INV_E*xxx+INV_F)/(INV_G*yyy+INV_H*xxx+1);
return temp;
}
/******************************************************************************
*****************************************************/
實(shí)際轉(zhuǎn)圖像函數(shù)
Site_xy1 get_invinv_img(double xxx,double yyy) //反逆透視(xxx 為實(shí)際行,yyy 為列)
{
Site_xy1 temp;
double uSrcImg,vSrcImg;//反逆透視坐標(biāo)
uSrcImg =(INV_B*INV_F - INV_C*INV_E + INV_E*yyy - INV_B*xxx - INV_F*INV_H*yyy +
INV_C*INV_H*xxx)/(INV_A*INV_E - INV_B*INV_D + INV_D*INV_H*yyy - INV_E*INV_G*yyy -
INV_A*INV_H*xxx + INV_B*INV_G*xxx);
vSrcImg =-(INV_A*INV_F - INV_C*INV_D + INV_D*yyy - INV_A*xxx - INV_F*INV_G*yyy +
INV_C*INV_G*xxx)/(INV_A*INV_E - INV_B*INV_D + INV_D*INV_H*yyy - INV_E*INV_G*yyy -
INV_A*INV_H*xxx + INV_B*INV_G*xxx);
temp.x=round(vSrcImg-1);
temp.y=round(uSrcImg-1);
return temp;
}
- % 鏡頭桶形失真校正(短焦鏡頭)
- clc,clear;
- img_origin1 = imread('555.bmp');
- img_origin = rgb2gray(img_origin1);
-
- k1 =-8.5e-06; % 形變參數(shù),根據(jù)實(shí)際情況調(diào)整
- k2 =-8.5e-06;
-
- img_size = size( img_origin );
- img_undist = zeros( img_size );
- img_undist = uint8( img_undist );
- C=zeros(img_size(1),img_size(2));
- D=zeros(img_size(1),img_size(2));
- 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 ) ); %文獻(xiàn)一公式
- y1 = round( y * ( 1 + k1 * x * x + k2 * y * y ) );
- y1 = y1 + img_size(1)/2;
- x1 = x1 + img_size(2)/2;
- y1 = uint8( y1 );
- x1 = uint8( x1 );
- if y1 > 0 || y1 <=img_size(1) || x1 > 0 || x1 <=img_size(2)
- C(l1,l2)=y1-1;
- D(l1,l2)=x1-1;
- end
- img_undist(l1,l2) = img_origin(y1, x1);
- end
- end
-
- figure(1);
- subplot(121); imshow(img_origin);title('原圖');
- subplot(122); imshow(img_undist);title('校正圖');
-
- imwrite(img_origin,'1.bmp');
- imwrite(img_undist,'2.bmp');
復(fù)制代碼
全部資料51hei下載地址:
桶形校正 逆投影變換GUIv1.zip
(2.53 MB, 下載次數(shù): 95)
2018-8-12 14:01 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|