国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ARM的廣角相機(jī)畸變校正系統(tǒng)設(shè)計(jì)

2022-02-28 04:14:18趙子國(guó)閔祥濤
電子元器件與信息技術(shù) 2022年12期
關(guān)鍵詞:內(nèi)參廣角角點(diǎn)

趙子國(guó),閔祥濤

中國(guó)電波傳播研究所,山東 青島 266107

0 引言

相機(jī)光學(xué)系統(tǒng)在設(shè)計(jì)、加工及裝配過(guò)程中,由于加工誤差及工藝水平的影響,使得成像系統(tǒng)不能在整視場(chǎng)滿足針孔成像模型,進(jìn)而導(dǎo)致原始圖像發(fā)生扭曲、變形,不能真實(shí)客觀地反映3D物理世界的空間位置信息[1]。特別對(duì)于90°至120°左右的廣角相機(jī),畸變更加嚴(yán)重。目前,國(guó)內(nèi)外學(xué)者已經(jīng)對(duì)廣角相機(jī)的圖像畸變校正做了大量的研究工作,探索出了如張正友標(biāo)定法等效果較好的校正方法,但國(guó)內(nèi)的相關(guān)研究主要是對(duì)預(yù)采集完成的圖像在PC端軟件進(jìn)行畸變校正,缺少對(duì)廣角相機(jī)進(jìn)行實(shí)時(shí)校正的研究。在一些需現(xiàn)場(chǎng)更換鏡頭的場(chǎng)景,傳統(tǒng)基于PC端軟件的校正難以滿足實(shí)時(shí)性需求。本文設(shè)計(jì)了一種基于ARM的廣角相機(jī)畸變校正系統(tǒng),將相機(jī)畸變校正算法在ARM中實(shí)現(xiàn),無(wú)需借助PC機(jī)即可完成,提升了校正系統(tǒng)的實(shí)時(shí)性。

1 系統(tǒng)原理

1.1 畸變校正原理

本文使用棋盤(pán)格標(biāo)定板,采用數(shù)字圖像處理方法進(jìn)行相機(jī)畸變校正。首先通過(guò)角點(diǎn)匹配建立畸變圖像與標(biāo)定板的映射變換矩陣。然后根據(jù)映射變換矩陣計(jì)算出相機(jī)內(nèi)外參,將其作為后續(xù)優(yōu)化的初始值。其次,加入相機(jī)畸變模型,完善變換矩陣,通過(guò)非線性優(yōu)化方法得出相機(jī)內(nèi)參及畸變系數(shù)的最優(yōu)值。最后,利用相機(jī)內(nèi)參及畸變系數(shù)的最優(yōu)值對(duì)畸變圖像進(jìn)行畸變校正。

1.1.1 映射變換矩陣

(1)坐標(biāo)系建立。像素坐標(biāo)系:以數(shù)字圖像左上角為坐標(biāo)原點(diǎn),以像素為單位建立的直角坐標(biāo)系,如圖1(a)中O0-UV坐標(biāo)系。圖像物理坐標(biāo)系:原點(diǎn)定義在相機(jī)光軸與圖像平面的交點(diǎn),采用實(shí)際物理長(zhǎng)度單位,如圖1(a)中O1-XY坐標(biāo)系。相機(jī)坐標(biāo)系:以相機(jī)光心O為原點(diǎn),Xc、Yc分別平行于x軸和y軸,Zc與光軸重合,建立O-XcYcZc坐標(biāo)系。光心到圖像平面的距離為相機(jī)焦距f。世界坐標(biāo)系:在物理三維環(huán)境中,建立世界坐標(biāo)系Ow-XwYwZw。

圖1 坐標(biāo)系示意圖

(2)變換關(guān)系。假設(shè)空間中一點(diǎn)P在世界坐標(biāo)系的坐標(biāo)為Pw=(xw,yw,zw),在圖像物理坐標(biāo)系的坐標(biāo)為P1=(x,y),在像素坐標(biāo)系下坐標(biāo)為P0=(u,v)。(u0,v0)為圖像物理坐標(biāo)系原點(diǎn)O1在像素坐標(biāo)系下的坐標(biāo),dx、dy分別為x軸和y軸的像元尺寸大小。

假設(shè)相機(jī)為針孔相機(jī)模型[2],且選擇定義物理平面,使得Zw=0,則有:

1.1.2 H矩陣求內(nèi)外參

則有:

則兩個(gè)約束可以寫(xiě)成:

如果對(duì)棋盤(pán)格平面采集n個(gè)圖像,通過(guò)角點(diǎn)匹配并計(jì)算得到n個(gè)單應(yīng)性矩陣H,代入上述方程組,則可以得到2n個(gè)方程。求解這個(gè)方程組,即可得到矩陣B。

1.1.3 相機(jī)畸變模型

相機(jī)畸變主要可分為徑向畸變和切向畸變兩類(lèi)[4]。

徑向畸變是沿著相機(jī)鏡頭透鏡半徑方向分布的畸變,產(chǎn)生原因是光線在遠(yuǎn)離透鏡中心的地方比靠近中心的地方更加彎曲,徑向畸變主要包括桶形畸變和枕形畸變兩種。相機(jī)光軸中心的畸變?yōu)?,沿著鏡頭半徑方向向邊緣移動(dòng),畸變?cè)絹?lái)越嚴(yán)重?;兊臄?shù)學(xué)模型可以用主點(diǎn)周?chē)奶├占?jí)數(shù)展開(kāi)式的前幾項(xiàng)進(jìn)行描述,通常使用前兩項(xiàng),即k1和k2,對(duì)于畸變很大的鏡頭,如廣角鏡頭,可以增加使用第三項(xiàng)k3來(lái)進(jìn)行描述。

切向畸變是由于透鏡本身與相機(jī)傳感器平面(成像平面)或圖像平面不平行而產(chǎn)生的,這種情況多是由于透鏡被粘貼到鏡頭模組上的安裝偏差導(dǎo)致。

綜合考慮相機(jī)的徑向畸變和切向畸變,可得到相機(jī)畸變校正模型為:

1.2 畸變校正算法流程

根據(jù)1.1中所述畸變校正原理,可按照以下步驟進(jìn)行校正。

(1)準(zhǔn)備棋盤(pán)格標(biāo)定板,打開(kāi)廣角相機(jī)并從多角度拍攝標(biāo)定板,獲取10~20張含完整標(biāo)定板的圖像。

(2)檢測(cè)圖像中的特征角點(diǎn),建立每張圖像與實(shí)際物理棋盤(pán)格標(biāo)定板的映射關(guān)系,求解單應(yīng)性矩陣H。

(3)利用公式(1)構(gòu)建方程組,估算相機(jī)內(nèi)參和外參,并作為后續(xù)優(yōu)化的初始值。

(4)加入相機(jī)畸變模型,建立優(yōu)化模型進(jìn)行優(yōu)化:

式中mij表示世界坐標(biāo)系下的點(diǎn)Pj在第i張圖像上的投影點(diǎn),表示通過(guò)內(nèi)外參及畸變系數(shù)計(jì)算出的投影點(diǎn)坐標(biāo)。

上述方程為非線性方程組,通過(guò)LM方法進(jìn)行迭代求解,進(jìn)而得到相機(jī)內(nèi)參、外參及畸變系數(shù)的最優(yōu)解。

(5)根據(jù)計(jì)算得到的相機(jī)內(nèi)參、畸變系數(shù)的最優(yōu)解,代入變換模型得到校正后的圖像。

2 系統(tǒng)實(shí)現(xiàn)

本部分將從平臺(tái)構(gòu)建、軟件設(shè)計(jì)兩個(gè)方面進(jìn)行敘述。

2.1 平臺(tái)構(gòu)建

2.1.1 硬件平臺(tái)

硬件平臺(tái)選擇以ARM-Cortex-A7為內(nèi)核的I.MX6ULL芯片作為核心處理芯片,外圍搭配接口處理電路、存儲(chǔ)電路等構(gòu)成數(shù)據(jù)處理板,數(shù)據(jù)處理板連接攝像頭模組、LCD顯示器等,完成相機(jī)圖像數(shù)據(jù)采集及處理。數(shù)據(jù)處理板硬件資源:CPU主頻800MHz;內(nèi)存256MB;FLASH容量256MB;擁有LCD、USB、攝像頭及TF卡等接口。

廣角相機(jī)參數(shù):圖像傳感器的像元尺寸為1.4μm,300萬(wàn)像素;鏡頭的焦距為1.5mm,DFOV為102°。

2.1.2 Linux軟件平臺(tái)

本文相機(jī)畸變校正算法基于Linux-Opencv實(shí)現(xiàn),首先需在ARM平臺(tái)上移植嵌入式Linux系統(tǒng),再將Opencv庫(kù)移植到嵌入式Linux系統(tǒng)中,最后根據(jù)1.2中所述算法流程編寫(xiě)代碼實(shí)現(xiàn)對(duì)廣角相機(jī)的畸變校正。

(1)嵌入式Linux移植。一個(gè)完整的嵌入式Linux系統(tǒng)包含bootloader、Linux內(nèi)核以及根文件系統(tǒng)組成。嵌入式Linux系統(tǒng)移植過(guò)程如下。

①bootloader移植:本文使用的bootloader為uboot,以NXP官方發(fā)布的uboot為基礎(chǔ),通過(guò)添加處理板默認(rèn)配置文件、頭文件、板級(jí)文件夾,修改硬件驅(qū)動(dòng)等步驟使uboot適配數(shù)據(jù)處理板,再編譯下載uboot至ARM中。

②Linux內(nèi)核移植:本文選擇Linux-4.1.15版本,以Linux源碼為基礎(chǔ),使用imx_v7_mfg_defconfig配置文件配置Linux內(nèi)核,修改設(shè)備驅(qū)動(dòng),再對(duì)Linux內(nèi)核進(jìn)行編譯生成zImage鏡像文件以及設(shè)備樹(shù)文件,最后下載至ARM中。

③根文件系統(tǒng)移植:本文使用BusyBox構(gòu)建根文件系統(tǒng),通過(guò)修改Makefile文件、配置BusyBox等步驟生成rootfs目錄文件,再添加lib庫(kù),創(chuàng)建dev、proc等文件夾,修改rcS、fstab、inittab等文件,最后下載至ARM中。

(2)OpenCV庫(kù)移植。OpenCV是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺(jué)處理開(kāi)源軟件庫(kù),可在包括Windows、Linux等不同系統(tǒng)平臺(tái)上使用。

本文選擇opencv-3.4.1版本,移植過(guò)程如下:①將獲取到的opencv-3.4.1源碼在Linux環(huán)境下解壓;②通過(guò)cmake-gui圖形化工具根據(jù)需求選擇需要的庫(kù)進(jìn)行配置,并生成Makefile等文件;③使用make指令進(jìn)行編譯,安裝至創(chuàng)建的install目錄下后,再拷貝至根文件系統(tǒng)/usr/lib下。

至此,基于ARM平臺(tái)的Linux系統(tǒng)及其圖像處理庫(kù)構(gòu)建完畢。

2.2 軟件設(shè)計(jì)

軟件實(shí)現(xiàn)主要包括相機(jī)圖像采集、校正算法實(shí)現(xiàn)兩部分。

2.2.1 相機(jī)圖像采集

本文采用Linux內(nèi)核中視頻類(lèi)設(shè)備驅(qū)動(dòng)框架V4L2編寫(xiě)相機(jī)驅(qū)動(dòng)實(shí)現(xiàn)圖像采集,該驅(qū)動(dòng)框架提供了一套統(tǒng)一的接口規(guī)范,每一個(gè)videoX設(shè)備文件代表一個(gè)視頻類(lèi)設(shè)備。應(yīng)用程序通過(guò)對(duì)videoX設(shè)備文件進(jìn)行I/O操作來(lái)使用該類(lèi)設(shè)備[5]。

編寫(xiě)應(yīng)用程序?qū)崿F(xiàn)相機(jī)圖像采集時(shí),應(yīng)遵循V4L2設(shè)備驅(qū)動(dòng)框架規(guī)范,其編程流程如下。

(1)使用open函數(shù)打開(kāi)相機(jī)設(shè)備文件。

(2)查詢相機(jī)的屬性、功能。

(3)設(shè)置相機(jī)參數(shù),如使用ioctl(fd,VIDIOC_S_FMT,&fmt)設(shè)置幀格式。

(4)申請(qǐng)幀緩沖,再進(jìn)行內(nèi)存映射。

(5)開(kāi)啟幀緩沖入隊(duì),而后通過(guò)調(diào)用ioctl(fd,VIDIOC_STREAMON,&type)進(jìn)行圖像采集。

(6)幀緩沖出隊(duì),并從幀緩沖中獲取數(shù)據(jù)、進(jìn)行處理。

(7)處理完后,再次將幀緩沖入隊(duì),往復(fù)。

(8)停止相機(jī)采集,取消內(nèi)存映射,關(guān)閉設(shè)備。

通過(guò)上述相機(jī)圖像采集應(yīng)用程序從多角度采集15張含完整標(biāo)定板的圖像,并存入FLASH中供后續(xù)校正算法使用。

2.2.2 畸變校正

系統(tǒng)相機(jī)畸變校正軟件基于OpenCV庫(kù)實(shí)現(xiàn),其編程流程如下。

(1)讀取FLASH中保存的15張圖片,對(duì)每張圖片提取特征角點(diǎn),如果檢測(cè)到的所有角點(diǎn)排布方式與棋盤(pán)格標(biāo)定板角點(diǎn)的排布方式相同,則認(rèn)定該幅照片有效并生成圖像特征點(diǎn)位置數(shù)組,否則直接丟棄并繼續(xù)處理下一張圖片。可使用cornerSubPix函數(shù)作進(jìn)一步優(yōu)化計(jì)算,使角點(diǎn)的位置精度達(dá)到亞像素級(jí)別。

(2)根據(jù)棋盤(pán)格標(biāo)定板特征角點(diǎn)的排列位置關(guān)系建立物理特征點(diǎn)位置數(shù)組,利用FindHomography函數(shù)求解圖像特征點(diǎn)位置數(shù)組與物理特征點(diǎn)位置數(shù)組的映射關(guān)系,得到單應(yīng)性矩陣H。

(3)由H矩陣,利用Solve函數(shù)、FindExtrinsic CameraParams2函數(shù)分別得到相機(jī)內(nèi)參、外參,并作為優(yōu)化初始值。

(4)在相機(jī)映射變換矩陣基礎(chǔ)上加入相機(jī)畸變模型,構(gòu)建優(yōu)化模型,運(yùn)用LM方法使所有視圖的重投影誤差之和最小,取最小點(diǎn)處相機(jī)內(nèi)參、外參及畸變系數(shù)的值作為最優(yōu)值。

(5)根據(jù)計(jì)算得到的相機(jī)內(nèi)參、畸變系數(shù)的最優(yōu)值,可通過(guò)getOptimalNewCameraMatrix函數(shù)獲得新內(nèi)參值以去除畸變校正后圖像四周黑色區(qū)域,再利用undistort函數(shù)得到校正后的圖像。

3 效果

系統(tǒng)上電并等待Linux系統(tǒng)啟動(dòng)后,運(yùn)行相機(jī)驅(qū)動(dòng)程序完成對(duì)棋盤(pán)格標(biāo)定板多視角采集,圖像采集數(shù)量為15張。采集的圖像如圖2(a)所示。

圖2 相機(jī)采集圖像

運(yùn)行系統(tǒng)相機(jī)畸變校正軟件,讀取采集到的15張圖片,經(jīng)過(guò)計(jì)算得到相機(jī)內(nèi)參及畸變系數(shù)。再選取待校正圖片,如圖2(b),點(diǎn)擊校正,即可得到校正完成后的圖片,如圖2(c)??梢?jiàn),系統(tǒng)對(duì)畸變圖像有較好的校正效果。

4 結(jié)語(yǔ)

本文設(shè)計(jì)了一種基于ARM平臺(tái)的廣角相機(jī)畸變校正系統(tǒng),擺脫了傳統(tǒng)基于PC端進(jìn)行校正的方法,將廣角相機(jī)校正算法在嵌入式ARM平臺(tái)得到了實(shí)現(xiàn),使系統(tǒng)實(shí)時(shí)性得到了提升,取得了較好的校正效果,具有一定的實(shí)際工程應(yīng)用價(jià)值。后續(xù)將對(duì)算法進(jìn)行優(yōu)化,使實(shí)時(shí)性得到進(jìn)一步提升。

猜你喜歡
內(nèi)參廣角角點(diǎn)
文化廣角
文化廣角
內(nèi)參報(bào)道如何在全媒體時(shí)代“出圈”
基于FAST角點(diǎn)檢測(cè)算法上對(duì)Y型與X型角點(diǎn)的檢測(cè)
辦好黨報(bào)內(nèi)參的思考與探索
基于邊緣的角點(diǎn)分類(lèi)和描述算法
電子科技(2016年12期)2016-12-26 02:25:49
基于圓環(huán)模板的改進(jìn)Harris角點(diǎn)檢測(cè)算法
廣角
內(nèi)參影響力與媒體公信力
新聞傳播(2015年10期)2015-07-18 11:05:39
廣角
中阳县| 泾川县| 天气| 保亭| 高碑店市| 疏附县| 封开县| 闻喜县| 泗水县| 榆社县| 平度市| 来宾市| 丰宁| 阳曲县| 汽车| 伊金霍洛旗| 平利县| 康平县| 泽州县| 澜沧| 龙井市| 乐安县| 灌云县| 湾仔区| 萨迦县| 临武县| 乌兰县| 西充县| 百色市| 金寨县| 岚皋县| 永嘉县| 荔波县| 泰兴市| 钟山县| 隆德县| 大同县| 政和县| 珲春市| 秀山| 彝良县|