01 引言
想象一下,當(dāng)你拿起手機(jī)拍攝一張風(fēng)景照時,由于角度或設(shè)備本身的限制,照片可能會有點(diǎn)歪斜或者變形。這時候,你是否希望有一種方法可以簡單地“拉直”這張照片,讓它看起來更加完美?或者,在構(gòu)建虛擬現(xiàn)實(shí)(VR)和增強(qiáng)現(xiàn)實(shí)(AR)的世界時,如何讓虛擬的東西自然地融入真實(shí)環(huán)境中?這些都可以靠仿射變換實(shí)現(xiàn)。
仿射變換不僅限于修復(fù)和美化靜態(tài)圖像,它還廣泛應(yīng)用于計算機(jī)視覺、機(jī)器人導(dǎo)航、醫(yī)學(xué)影像分析等多個高科技領(lǐng)域。比如:
- 計算機(jī)圖形學(xué):在計算機(jī)圖形學(xué)中,仿射變換用于圖像和模型的變換,如旋轉(zhuǎn)、縮放和傾斜,以實(shí)現(xiàn)更豐富的視覺效果。
- 機(jī)器人技術(shù):在機(jī)器人技術(shù)中,仿射變換用于路徑規(guī)劃和運(yùn)動變換,幫助機(jī)器人在空間中導(dǎo)航。
- 醫(yī)療成像:在醫(yī)療成像領(lǐng)域,仿射變換用于圖像配準(zhǔn),將不同時間或不同模態(tài)的圖像對齊,以便進(jìn)行比較、分析或融合。
- 遙感圖像處理:在遙感圖像處理中,仿射變換用于對齊不同來源或不同時間拍攝的圖像,以便進(jìn)行比較、分析或融合。
- 增強(qiáng)現(xiàn)實(shí):在增強(qiáng)現(xiàn)實(shí)技術(shù)中,仿射變換用于將虛擬圖像與現(xiàn)實(shí)世界對齊,以實(shí)現(xiàn)更加自然和無縫的交互體驗(yàn)。
02 概念解答
什么是仿射變換?
簡單來說,就像是把圖片或者圖形旋轉(zhuǎn)、拉伸、縮放和移動,但是有個特點(diǎn),就是它不會讓圖形的形狀變得奇奇怪怪,比如直線經(jīng)過仿射變換后還是直線,角度和平行關(guān)系也都保持不變。
想象一下,你有一張紙,上面畫著一些圖案。現(xiàn)在,你想把這些圖案換個方向,或者讓它們變大變小,或者把整個圖案挪到紙的另一個位置。仿射變換就是幫你實(shí)現(xiàn)這些變化的數(shù)學(xué)工具。它就像是一套規(guī)則,告訴你怎么通過一些簡單的操作,讓圖案按照你想要的方式變化,但不會扭曲圖案的形狀。

接下來,我們以仿射變換中的“旋轉(zhuǎn)”為例,看一下具體的操作步驟。
03 操作步驟
打開華清遠(yuǎn)見人工智能虛擬仿真本地服務(wù)管理平臺,點(diǎn)擊啟動,服務(wù)啟動一次即可。

進(jìn)入到人工智能虛擬仿真系統(tǒng),單擊“圖像旋轉(zhuǎn)”,進(jìn)入實(shí)驗(yàn)。

步驟一:圖片輸入
首先,導(dǎo)入一張原始圖片,可以用平臺默認(rèn)的預(yù)設(shè)圖片,也可以自定義輸入圖片。
步驟二:單點(diǎn)旋轉(zhuǎn)
這一步要操作的是
1.將旋轉(zhuǎn)點(diǎn)平移到原點(diǎn)。
2.應(yīng)用旋轉(zhuǎn)矩陣進(jìn)行旋轉(zhuǎn)。
3.將旋轉(zhuǎn)后的點(diǎn)移回原來的位置。
這樣可以將任意點(diǎn)的旋轉(zhuǎn)問題簡化為原點(diǎn)旋轉(zhuǎn)問題,便于計算。(具體的計算過程在人工智能在線實(shí)驗(yàn)平臺手冊中查看)

步驟三:圖片旋轉(zhuǎn)
明白了單個點(diǎn)的旋轉(zhuǎn)過程之后,其實(shí)圖像旋轉(zhuǎn)也很好理解,就是將圖像里的每個像素點(diǎn)都帶入仿射變換矩陣?yán)?,從而得到旋轉(zhuǎn)后的新坐標(biāo)。在OpenCV中,要得到仿射變換矩陣可以使用cv2.getRotationMatrix2D(),通過這個函數(shù)即可直接獲取到上面的旋轉(zhuǎn)矩陣,該函數(shù)需要接收的參數(shù)為:
Center:表示旋轉(zhuǎn)的中心點(diǎn),是一個二維的坐標(biāo)點(diǎn)(x,y)
Angle:表示旋轉(zhuǎn)的角度
Scale:表示縮放比例,可以通過該參數(shù)調(diào)整圖像相對于原始圖像的大小變化
所以在這一步填入兩個參數(shù):即要給圖像旋轉(zhuǎn)的角度(angle)和要縮放的比例(scale),根據(jù)這兩個數(shù)據(jù),求出旋轉(zhuǎn)之后的坐標(biāo),就可以進(jìn)行整個圖像的旋轉(zhuǎn)。

這里可能會有一個問題,由于三角函數(shù)的值是小數(shù),那么其乘積也會是小數(shù),雖然OpenCV中會對其進(jìn)行取整操作,但是像素點(diǎn)旋轉(zhuǎn)之后的取整結(jié)果也有可能重合,這樣就會導(dǎo)致可能會在旋轉(zhuǎn)的過程中丟失-部分原始的像素信息。并且如果使用了scale參數(shù)進(jìn)行圖像的縮放的話,當(dāng)圖像放大時,比如一個10*10的圖像放大成20*20,圖像由100個像素點(diǎn)變成400個像素點(diǎn),那么多余的300個像素點(diǎn)是怎么來的?而當(dāng)圖像縮小時,比如一個20*20的圖像縮小為10*10的圖像,需要丟掉300個像素點(diǎn),那到底要怎么丟才能保證圖像還能是一個正常的圖像?因此我們需要一種方法來幫我們計算旋轉(zhuǎn)后的圖像中每一個像素點(diǎn)所對應(yīng)的像素值,從而保證圖像的完整性,這種方法就叫做插值法。
步驟四:插值方法
這一步可以看到平臺有五種插值方法:
- 最近鄰插值:目標(biāo)像素點(diǎn)的像素值與對應(yīng)的原圖像像素值相同。
- 雙線性插值:利用原圖中四個真實(shí)像素點(diǎn)的值來決定目標(biāo)圖中的一個像素點(diǎn)的值。
- 像素區(qū)域插值:縮小圖像時取平均值,放大圖像時使用最近鄰或雙線性插值。
- 雙三次插值:需要原圖像中近鄰的16個點(diǎn)來加權(quán)。
- Lanczos插值:需要原圖像周圍的64個像素點(diǎn),使用不同的權(quán)重函數(shù)。

通過這幾種方式可以解決圖像縮放或者旋轉(zhuǎn)等操作時,由于像素之間的間隔不一致而導(dǎo)致的信息丟失和圖像質(zhì)量下降的問題。具體的每種方法計算方法,可在元宇宙實(shí)驗(yàn)平臺操作手冊中查看。
步驟五:邊緣填充
為什么要填充邊緣呢?
可以看到,左圖在逆時針旋轉(zhuǎn)45度之后原圖的四個頂點(diǎn)在右圖中已經(jīng)看不到了,同時,右圖的四個頂點(diǎn)區(qū)域其實(shí)是什么都沒有的,因此我們需要對空出來的區(qū)域進(jìn)行一個填充。右圖就是對空出來的區(qū)域進(jìn)行了像素值為(0,0,0)的填充,也就是黑色像素值的填充。除此之外,后續(xù)的一些圖像處理方式也會用到邊緣填充,平臺介紹了五個常用的邊緣填充方法。
- 邊界復(fù)制:復(fù)制邊界像素值。
- 邊界反射:根據(jù)原圖邊緣進(jìn)行反射。
- 邊界反射101:反射邊緣像素點(diǎn),但方式不同。
- 邊界常數(shù):填充指定的常數(shù)值,默認(rèn)為0。
- 邊界包裹:特殊類型的邊界處理。

步驟六:圖片輸出
點(diǎn)擊驗(yàn)證,如顯示校驗(yàn)成功,即代表邏輯無誤,驗(yàn)證按鈕與校驗(yàn)成功界面如下圖所示。

點(diǎn)擊運(yùn)行,可以實(shí)現(xiàn)功能運(yùn)行,并顯示結(jié)果輸出。點(diǎn)擊某張圖片可放大查看效果。
以上就是一個完整的圖像旋轉(zhuǎn)操作過程,仿射變換中的圖像旋轉(zhuǎn)在圖像識別應(yīng)用場景中主要解決圖像因拍攝角度不同而導(dǎo)致的方向不一致問題,通過旋轉(zhuǎn)圖像使其與標(biāo)準(zhǔn)方向?qū)R,確保了識別算法能夠準(zhǔn)確地識別和分析圖像內(nèi)容,不受角度的影響,從而提高了識別系統(tǒng)的準(zhǔn)確性和魯棒性。
仿射變換不只是圖像處理中的一個關(guān)鍵技術(shù),它也是計算機(jī)視覺領(lǐng)域的重要組成部分。因此,如果你對圖像的幾何變換感興趣,想要深入了解其原理和應(yīng)用,我們的Python+圖像處理OpenCV課程就能幫到你。
我們的課程會帶你從基礎(chǔ)開始,學(xué)習(xí)如何用Python編程,怎么用OpenCV處理圖像,還會手把手帶你實(shí)戰(zhàn)OpenCV車牌識別項(xiàng)目。重要的是,我們的課程還提供元宇宙人工智能在線實(shí)驗(yàn)平臺,讓你能在一個模擬的環(huán)境中,邊學(xué)邊練,高效學(xué)習(xí)。自由探索,嘗試不同的算法,看看它們對圖像有什么影響,這對理解圖像增強(qiáng)的原理和應(yīng)用特別有幫助。
后臺私信雯雯老師,一起學(xué)習(xí)人工智能OpenCV~!
?5年時間打造,元宇宙人工智能在線實(shí)驗(yàn)平臺
?30天趣玩趣學(xué),算法原理+代碼實(shí)現(xiàn)+項(xiàng)目實(shí)戰(zhàn)
?200余講課程,邊學(xué)邊練,在線答疑
-
圖像處理
+關(guān)注
關(guān)注
27文章
1315瀏覽量
57158 -
AI
+關(guān)注
關(guān)注
87文章
32504瀏覽量
271711 -
人工智能
+關(guān)注
關(guān)注
1800文章
48107瀏覽量
242256 -
仿射變換
+關(guān)注
關(guān)注
0文章
2瀏覽量
5750
發(fā)布評論請先 登錄
相關(guān)推薦
嵌入式人工智能的就業(yè)方向有哪些?
FPGA在人工智能中的應(yīng)用有哪些?
人工智能技術(shù)—AI
了解AI人工智能背后的科學(xué)?
人工智能的就業(yè)方向詳解
初學(xué)AI人工智能需要哪些技術(shù)?這幾本書為你解答
人工智能:超越炒作
人工智能——MATLAB圖像處理及機(jī)器學(xué)習(xí)
史上最全AI人工智能入門+進(jìn)階學(xué)習(xí)視頻全集(200G)【免費(fèi)領(lǐng)取】
《移動終端人工智能技術(shù)與應(yīng)用開發(fā)》人工智能的發(fā)展與AI技術(shù)的進(jìn)步
【每天學(xué)點(diǎn)AI】實(shí)戰(zhàn)圖像增強(qiáng)技術(shù)在人工智能圖像處理中的應(yīng)用

評論