零、前言
很久沒寫文章,簡單嘮一嘮。
不知道巧合還是蜀道同歸,部門領(lǐng)導(dǎo)設(shè)定了些研究課題,用于公司部門員工的超前發(fā)展,該課題是“2D to 3D的三維重建”,這一塊剛好是我個(gè)人看中的一個(gè)大方向,所以就有了這一系列的文章。其實(shí)我還發(fā)現(xiàn)不少同學(xué)是沒搞清楚 什么是 機(jī)器視覺?機(jī)器視覺和圖像處理的區(qū)別是什么?又有什么關(guān)聯(lián)?我們來看看文心一言是怎么說的。
機(jī)器視覺是人工智能的一個(gè)分支,它利用機(jī)器代替人眼來做測量和判斷。機(jī)器視覺系統(tǒng)通過機(jī)器視覺產(chǎn)品(即圖像攝取裝置,分CMOS和CCD兩種)將被攝取目標(biāo)轉(zhuǎn)換成圖像信號(hào),傳送給專用的圖像處理系統(tǒng),得到被攝目標(biāo)的形態(tài)信息,根據(jù)像素分布和亮度、顏色等信息,轉(zhuǎn)變成數(shù)字化信號(hào)。圖像系統(tǒng)對(duì)這些信號(hào)進(jìn)行各種運(yùn)算來抽取目標(biāo)的特征,進(jìn)而根據(jù)判別的結(jié)果來控制現(xiàn)場的設(shè)備動(dòng)作。機(jī)器視覺系統(tǒng)綜合了光學(xué)、機(jī)械、電子、計(jì)算機(jī)軟硬件等多方面技術(shù),涉及到計(jì)算機(jī)、圖像處理、模式識(shí)別、人工智能、信號(hào)處理、光機(jī)電一體化等多個(gè)領(lǐng)域。
圖像處理(image processing)是一種用計(jì)算機(jī)對(duì)圖像進(jìn)行分析,以達(dá)到所需結(jié)果的技術(shù)。它也被稱為影像處理。圖像處理技術(shù)的主要內(nèi)容包括圖像壓縮、增強(qiáng)復(fù)原、匹配描等。它的應(yīng)用范圍非常廣泛,包括測繪學(xué)、大氣科學(xué)、天文學(xué)、美圖、使圖像提高辨識(shí)等。此外,基于光學(xué)理論的處理方法依然占有重要的地位。圖像處理是信號(hào)處理的子類,另外與計(jì)算機(jī)科學(xué)、人工智能等領(lǐng)域也有密切的關(guān)系。當(dāng)前大多數(shù)的圖像均是以數(shù)字形式存儲(chǔ),因而圖像處理很多情況下指數(shù)字圖像處理。圖像屬于二維信號(hào),和一維信號(hào)相比,它有自己特殊的一面,處理的方式和角度也有所不同。
圖像處理和機(jī)器視覺是緊密相關(guān)的兩個(gè)領(lǐng)域。
圖像處理是對(duì)圖像進(jìn)行各種操作,包括圖像的增強(qiáng)、濾波、修復(fù)等,目的是讓圖像更美觀、更易于分析。而機(jī)器視覺則是讓機(jī)器能夠像人類一樣通過攝像頭等設(shè)備來感知和理解圖像的過程,它可以用來識(shí)別物體、檢測運(yùn)動(dòng)、測量距離等。
在機(jī)器視覺中,圖像處理技術(shù)被廣泛應(yīng)用。例如,在人臉識(shí)別過程中,首先需要對(duì)圖像進(jìn)行處理,提取出人臉的特征,然后再通過比對(duì)來判斷是否為同一個(gè)人。這個(gè)過程中,圖像處理技術(shù)起到了至關(guān)重要的作用。同時(shí),圖像處理也可以為機(jī)器視覺提供一些基礎(chǔ)工具,如邊緣檢測、圖像分割等技術(shù),這些都有助于機(jī)器視覺系統(tǒng)更好地理解圖像。
總的來說,圖像處理是機(jī)器視覺的一個(gè)重要組成部分,為其提供了必要的技術(shù)手段和方法。同時(shí),二者又各自獨(dú)立,分別具有其獨(dú)特的廣泛應(yīng)用領(lǐng)域。
一、成像原理——針孔相機(jī)模型
這一章主要介紹的是相機(jī)的成像原理,以及它的數(shù)學(xué)模型是如何建立的。在這個(gè)過程中我們需要了解相關(guān)坐標(biāo)系的定義,以及一些畸變成像的相關(guān)內(nèi)容。接下里正常進(jìn)入學(xué)習(xí)環(huán)節(jié)。
相機(jī)的作用是什么?是拍照(廢話)換成專業(yè)的術(shù)語就是 對(duì)三維世界進(jìn)行2D的投影變換。?對(duì)于成像之后的圖片,我們是不能從圖像中獲取其真實(shí)的信息。譬如上圖的球,在圖像中我們是不知道真實(shí)的球體究竟有多大,距離有多遠(yuǎn)。
那么我們能否從2D圖像中恢復(fù)三維世界的模型,從而推斷其近似的真實(shí)信息?答案是可以通過多視角的方式去推算,譬如雙目立體視覺就很好的進(jìn)行測距計(jì)算。那么如何通過攝像機(jī)拍出的二維照片,精確的恢復(fù)三維信息?這就需要先對(duì)相機(jī)的成像過程進(jìn)行數(shù)學(xué)建模,用嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)表達(dá)式來描述整個(gè)成像過程。
首先從鏡頭入手一步步的理解整個(gè)成像。一般的鏡頭都是通過很多層凹凸透鏡的堆疊,來以修改外部光的光路進(jìn)入到攝像機(jī),但在分析鏡頭的過程我們一般可以等效以上的一個(gè)模型,這是一張初中物理很經(jīng)典ppt,其描述了凸透鏡對(duì)光路折射匯聚的特點(diǎn)。其中經(jīng)過物體點(diǎn)和凸透鏡光心的光線是不會(huì)改變方向,那么如果要理解整個(gè)世界中的一點(diǎn)到2D圖像的成像點(diǎn)的時(shí)候,我們可以用這一簡單的光線去做等效,來簡化整個(gè)成像過程。
但是這個(gè)成像過程是基于一些假設(shè)的,就是說還存在一些問題點(diǎn),假設(shè)成像點(diǎn)沒有像素差;不考慮景深,能夠在成像面上投影出清晰的圖像。最終發(fā)現(xiàn) 這個(gè)成像過程 和 小孔成像的原理是一致的,因此我們可以把簡化后的相機(jī)成像模型稱之為針孔相機(jī)模型。
現(xiàn)在我們對(duì)世界的物體點(diǎn) 到成像的過程做了一個(gè)簡化模型,下一步討論 要如何計(jì)算世界中的物體點(diǎn)對(duì)應(yīng)成像面上的坐標(biāo)位置。
二、坐標(biāo)系轉(zhuǎn)換
(匯總圖)
這里通過一張總圖,介紹成像過程中涉及到一些坐標(biāo)系,以及它們的關(guān)聯(lián)。
- 世界坐標(biāo)系:
以被測物體上的點(diǎn)作為參考,定義的絕對(duì)坐標(biāo)系。坐標(biāo)標(biāo)記方式為Ow(Xw,Yw,Zw),也有把世界坐標(biāo)系和相機(jī)坐標(biāo)系定義重合為同一個(gè)坐標(biāo)系上。 - 相機(jī)坐標(biāo)系:
以相機(jī)光心為坐標(biāo)原點(diǎn),主光軸上 物體方朝焦點(diǎn)方向?yàn)閦軸,平行于Censor平面的兩條垂直邊分別為x和y軸。坐標(biāo)記為(Xc,Yc,Zc) - 圖像坐標(biāo)系:
以主光軸與sensor的交點(diǎn)為坐標(biāo)原點(diǎn),平行于sensor平面的兩條垂直邊分別為x和y軸,坐標(biāo)紀(jì)為(x,y)這個(gè)平面是建立在實(shí)際成像面上的,是個(gè)二維坐標(biāo)系 - 像素坐標(biāo)系:
平行于sensor的虛擬成像平面,左上角頂點(diǎn)為原點(diǎn)xy軸都平行于圖像平面,以像素為單位,坐標(biāo)標(biāo)記為(u,v)。
這里說說虛擬成像面和實(shí)際成像面的概念,虛擬成像面到光心的距離 等于 實(shí)際成像面與光心之間的距離,兩個(gè)相互平面,經(jīng)光心原點(diǎn)對(duì)稱。為什么要定義虛擬成像面?對(duì)于世界坐標(biāo)系中的一點(diǎn)P,它在實(shí)際成像面上的像點(diǎn)是Pr,在虛擬成像面上的像點(diǎn)是Pv,可以看到真實(shí)物體點(diǎn)在實(shí)際成像面是方向相反的(即倒立成像)但是在虛擬成像面的方向與真實(shí)世界坐標(biāo)系就是一致的。所以在進(jìn)行坐標(biāo)換算的時(shí)候,方向問題就可以暫時(shí)不用去考慮了。那么討論圖像坐標(biāo)系 和 像素坐標(biāo)系的關(guān)系,就不難發(fā)現(xiàn)其實(shí)兩個(gè)坐標(biāo)系是一個(gè)偏移+倍率縮放的變換。
世界坐標(biāo)系→相機(jī)坐標(biāo)系
第一步是最簡單的一步,世界坐標(biāo)系轉(zhuǎn)換到相機(jī)坐標(biāo)系,兩者其實(shí)就一個(gè)剛體變換,在上面也介紹了兩者甚至可以是重合的,在實(shí)際計(jì)算兩者互換的時(shí)候,搞清楚R和T的轉(zhuǎn)換。詳情可以到以前的文章了解矩陣的幾何變換?
相機(jī)坐標(biāo)系→圖像坐標(biāo)系
第二步就是相機(jī)坐標(biāo)系變換到圖像坐標(biāo)系,相機(jī)到圖像的變換其實(shí)就是 小孔成像的物理模型,其中的數(shù)學(xué)道理其實(shí)就是兩個(gè)相似三角形成正比。
即? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?X’ / X = f / Z
X' 是圖像坐標(biāo)系的橫軸;X 是相機(jī)坐標(biāo)系的橫軸;
f 是鏡頭的焦距;Z就是物體像點(diǎn)在相機(jī)坐標(biāo)系的距離;
上述給出了數(shù)學(xué)表達(dá)式,然后再轉(zhuǎn)換為齊次矩陣的表達(dá)方式,到這一步還沒啥特別難的部分。
圖像坐標(biāo)系→像素坐標(biāo)系
最后一步就是圖像到像素的轉(zhuǎn)換,上面也提到了,實(shí)際成像面(圖像)到虛擬成像面(像素)其實(shí)是一個(gè)圖像數(shù)字化的過程,它們是一個(gè)倍率和偏移的操作。用數(shù)學(xué)式表達(dá)如下
dx,dy:表示圖像單個(gè)像素的寬高,單位為mm/pixel
(cx, cy):表示圖像中心點(diǎn)的像素坐標(biāo)。即主光軸與sensor平面的交點(diǎn)。一般在設(shè)備制作CCD轉(zhuǎn)換就會(huì)有標(biāo)注。沒有的話,也可以通過后期標(biāo)定。
?整合:世界坐標(biāo)系→像素坐標(biāo)系
整個(gè)轉(zhuǎn)換過程如上圖,該公式應(yīng)該是從右往左依次解讀,世界物體點(diǎn)通過剛體變換,通過小孔成像的原理處理后,再經(jīng)過圖像數(shù)字化的倍率和偏移,最終得到屏幕的像素點(diǎn)。我們把跟相機(jī)相關(guān)的變量合并稱為內(nèi)參,RT剛體變換稱為外參,這就是往后需要介紹的參數(shù)標(biāo)定。
可以看到它其實(shí)是一個(gè)線性變換的過程,這是一個(gè)理想化的成像過程,但實(shí)際情況并不可能有這樣理想的成像過程,最普遍的在sensor的制造過程中,由于鏡頭的畸變,dx和dy會(huì)有偏差并不完成一致成正比。接下來看看在有畸變的情況下要如何處理。
三、畸變的產(chǎn)生及其數(shù)學(xué)模型
畸變其實(shí)是一種像素位置產(chǎn)生了偏差,是一種不會(huì)改變成像清晰度和質(zhì)量的一種偏差。初學(xué)者來說畸變分為兩類 徑向畸變?和?切向畸變。
徑向畸變是最常見的一種光學(xué)畸變,一般分為枕形畸變(正畸變)和桶形畸變(負(fù)畸變)越向透鏡邊緣移動(dòng),徑向畸變?cè)絿?yán)重。如下圖所示。
而切向畸變一般是由設(shè)備生成工藝組裝階段的誤差導(dǎo)致,這種畸變?cè)诠鈱W(xué)設(shè)計(jì)上是不應(yīng)該存在的。理想情況下鏡頭lens和sensor平面應(yīng)該是平行的,但實(shí)際上組裝的時(shí)候無法百分之百保證這種平行,兩個(gè)平面會(huì)產(chǎn)生小的傾斜旋轉(zhuǎn)。如下圖所示。
畸變的數(shù)學(xué)模型?
關(guān)于畸變模型詳細(xì)的推導(dǎo)原理,我們留著往后的章節(jié)再作討論?,F(xiàn)在先著重關(guān)注畸變模型對(duì)整個(gè)相機(jī)成像模型的理解。
徑向畸變模型如上圖所示,一般情況用K3量級(jí)去表示,OpenCV會(huì)用到K6的量級(jí)去實(shí)現(xiàn)。請(qǐng)注意,公式右邊的[x,y]表示的是理想的成像點(diǎn),左邊[Xrd, Yrd]是實(shí)際的畸變成像點(diǎn),其實(shí)這和整個(gè)標(biāo)定過程是一致的,理想的成像點(diǎn)和實(shí)際的成像點(diǎn)之間存在一個(gè)加畸變的過程。從公式還可以了解到徑向畸變是和圖像坐標(biāo)系的半徑有關(guān),其實(shí)就是和具體成像點(diǎn)的位置 和 主點(diǎn)的歐式距離相關(guān)聯(lián)。
切向畸變模型,一般用P1、P2兩個(gè)斜變率去表示,OpenCV也是用這個(gè)公式。
一般在去標(biāo)定畸變的時(shí)候,為了消除畸變系數(shù)的尺度因素,通常約定俗成的規(guī)定理想的成像點(diǎn)、畸變成像點(diǎn)都是在單位焦平面上,什么是單位焦平面?往上翻查(匯總圖)其實(shí)單位焦平面就是焦距f=1的時(shí)候,理想成像點(diǎn)、實(shí)際成像點(diǎn)所在的位置。為什么考慮在單位焦平面上做去畸變的運(yùn)算呢?因?yàn)樵谕粋€(gè)理想成像點(diǎn)的位置,如果攝像頭的焦距不一樣,實(shí)際成像點(diǎn)的位置也會(huì)不一樣,為了消除焦距 f 這因素導(dǎo)致的畸變量不一樣,所以統(tǒng)一在做去畸變的標(biāo)定時(shí)要用單位焦平面,相當(dāng)于是歸一化的處理,這樣在實(shí)際焦距發(fā)生變化的時(shí)候,畸變量乘以焦距 f 就可以了。
最后把兩種畸變的數(shù)學(xué)模型合并,得到的就是常用K3畸變模型。
四、相機(jī)的標(biāo)定
綜合以上描述的所有內(nèi)容,我們可以把相機(jī)的成像模型,或者說相機(jī)標(biāo)定的數(shù)學(xué)模型 等價(jià)為一個(gè)理想的模型加一個(gè)誤差模型,理想模型就是針孔相機(jī)模型,誤差模型就是畸變引起的一個(gè)誤差。結(jié)合針孔相機(jī)模型+鏡頭畸變,那么相機(jī)標(biāo)定模型的建立過程如下圖所示:
整理把整個(gè)流程總結(jié)一遍:世界坐標(biāo)系中的一點(diǎn),通過剛體變換到相機(jī)坐標(biāo)系下,再通過小孔成像的原理到圖像坐標(biāo)系,然后歸一化到單位焦平面上去做去畸變的處理,最后就是把圖像進(jìn)行一個(gè)圖像數(shù)字化處理,轉(zhuǎn)化到像素坐標(biāo)系上。? ?文章來源:http://www.zghlxwxcb.cn/news/detail-777765.html
以上過程的可以用上面的線性數(shù)學(xué)式來表達(dá)。其實(shí)所謂的標(biāo)定,就是求相機(jī)的內(nèi)參k、畸變參數(shù)d、以及RT變換參數(shù)e。文章來源地址http://www.zghlxwxcb.cn/news/detail-777765.html
到了這里,關(guān)于機(jī)器視覺【1】相機(jī)的成像(畸變)模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!