01 引言
想象一下,當你拿起手機拍攝一張風景照時,由于角度或設備本身的限制,照片可能會有點歪斜或者變形。這時候,你是否希望有一種方法可以簡單地“拉直”這張照片,讓它看起來更加完美?或者,在構建虛擬現實(VR)和增強現實(AR)的世界時,如何讓虛擬的東西自然地融入真實環境中?這些都可以靠仿射變換實現。
仿射變換不僅限于修復和美化靜態圖像,它還廣泛應用于計算機視覺、機器人導航、醫學影像分析等多個高科技領域。比如:
- 計算機圖形學:在計算機圖形學中,仿射變換用于圖像和模型的變換,如旋轉、縮放和傾斜,以實現更豐富的視覺效果。
- 機器人技術:在機器人技術中,仿射變換用于路徑規劃和運動變換,幫助機器人在空間中導航。
- 醫療成像:在醫療成像領域,仿射變換用于圖像配準,將不同時間或不同模態的圖像對齊,以便進行比較、分析或融合。
- 遙感圖像處理:在遙感圖像處理中,仿射變換用于對齊不同來源或不同時間拍攝的圖像,以便進行比較、分析或融合。
- 增強現實:在增強現實技術中,仿射變換用于將虛擬圖像與現實世界對齊,以實現更加自然和無縫的交互體驗。
02 概念解答
什么是仿射變換?
簡單來說,就像是把圖片或者圖形旋轉、拉伸、縮放和移動,但是有個特點,就是它不會讓圖形的形狀變得奇奇怪怪,比如直線經過仿射變換后還是直線,角度和平行關系也都保持不變。
想象一下,你有一張紙,上面畫著一些圖案。現在,你想把這些圖案換個方向,或者讓它們變大變小,或者把整個圖案挪到紙的另一個位置。仿射變換就是幫你實現這些變化的數學工具。它就像是一套規則,告訴你怎么通過一些簡單的操作,讓圖案按照你想要的方式變化,但不會扭曲圖案的形狀。
接下來,我們以仿射變換中的“旋轉”為例,看一下具體的操作步驟。
03 操作步驟
打開華清遠見人工智能虛擬仿真本地服務管理平臺,點擊啟動,服務啟動一次即可。
進入到人工智能虛擬仿真系統,單擊“圖像旋轉”,進入實驗。
步驟一:圖片輸入
首先,導入一張原始圖片,可以用平臺默認的預設圖片,也可以自定義輸入圖片。
步驟二:單點旋轉
這一步要操作的是
1.將旋轉點平移到原點。
2.應用旋轉矩陣進行旋轉。
3.將旋轉后的點移回原來的位置。
這樣可以將任意點的旋轉問題簡化為原點旋轉問題,便于計算。(具體的計算過程在人工智能在線實驗平臺手冊中查看)
步驟三:圖片旋轉
明白了單個點的旋轉過程之后,其實圖像旋轉也很好理解,就是將圖像里的每個像素點都帶入仿射變換矩陣里,從而得到旋轉后的新坐標。在OpenCV中,要得到仿射變換矩陣可以使用cv2.getRotationMatrix2D(),通過這個函數即可直接獲取到上面的旋轉矩陣,該函數需要接收的參數為:
Center:表示旋轉的中心點,是一個二維的坐標點(x,y)
Angle:表示旋轉的角度
Scale:表示縮放比例,可以通過該參數調整圖像相對于原始圖像的大小變化
所以在這一步填入兩個參數:即要給圖像旋轉的角度(angle)和要縮放的比例(scale),根據這兩個數據,求出旋轉之后的坐標,就可以進行整個圖像的旋轉。
這里可能會有一個問題,由于三角函數的值是小數,那么其乘積也會是小數,雖然OpenCV中會對其進行取整操作,但是像素點旋轉之后的取整結果也有可能重合,這樣就會導致可能會在旋轉的過程中丟失-部分原始的像素信息。并且如果使用了scale參數進行圖像的縮放的話,當圖像放大時,比如一個10*10的圖像放大成20*20,圖像由100個像素點變成400個像素點,那么多余的300個像素點是怎么來的?而當圖像縮小時,比如一個20*20的圖像縮小為10*10的圖像,需要丟掉300個像素點,那到底要怎么丟才能保證圖像還能是一個正常的圖像?因此我們需要一種方法來幫我們計算旋轉后的圖像中每一個像素點所對應的像素值,從而保證圖像的完整性,這種方法就叫做插值法。
步驟四:插值方法
這一步可以看到平臺有五種插值方法:
- 最近鄰插值:目標像素點的像素值與對應的原圖像像素值相同。
- 雙線性插值:利用原圖中四個真實像素點的值來決定目標圖中的一個像素點的值。
- 像素區域插值:縮小圖像時取平均值,放大圖像時使用最近鄰或雙線性插值。
- 雙三次插值:需要原圖像中近鄰的16個點來加權。
- Lanczos插值:需要原圖像周圍的64個像素點,使用不同的權重函數。
通過這幾種方式可以解決圖像縮放或者旋轉等操作時,由于像素之間的間隔不一致而導致的信息丟失和圖像質量下降的問題。具體的每種方法計算方法,可在元宇宙實驗平臺操作手冊中查看。
步驟五:邊緣填充
為什么要填充邊緣呢?
可以看到,左圖在逆時針旋轉45度之后原圖的四個頂點在右圖中已經看不到了,同時,右圖的四個頂點區域其實是什么都沒有的,因此我們需要對空出來的區域進行一個填充。右圖就是對空出來的區域進行了像素值為(0,0,0)的填充,也就是黑色像素值的填充。除此之外,后續的一些圖像處理方式也會用到邊緣填充,平臺介紹了五個常用的邊緣填充方法。
- 邊界復制:復制邊界像素值。
- 邊界反射:根據原圖邊緣進行反射。
- 邊界反射101:反射邊緣像素點,但方式不同。
- 邊界常數:填充指定的常數值,默認為0。
- 邊界包裹:特殊類型的邊界處理。
步驟六:圖片輸出
點擊驗證,如顯示校驗成功,即代表邏輯無誤,驗證按鈕與校驗成功界面如下圖所示。
點擊運行,可以實現功能運行,并顯示結果輸出。點擊某張圖片可放大查看效果。
以上就是一個完整的圖像旋轉操作過程,仿射變換中的圖像旋轉在圖像識別應用場景中主要解決圖像因拍攝角度不同而導致的方向不一致問題,通過旋轉圖像使其與標準方向對齊,確保了識別算法能夠準確地識別和分析圖像內容,不受角度的影響,從而提高了識別系統的準確性和魯棒性。
仿射變換不只是圖像處理中的一個關鍵技術,它也是計算機視覺領域的重要組成部分。因此,如果你對圖像的幾何變換感興趣,想要深入了解其原理和應用,我們的Python+圖像處理OpenCV課程就能幫到你。
我們的課程會帶你從基礎開始,學習如何用Python編程,怎么用OpenCV處理圖像,還會手把手帶你實戰OpenCV車牌識別項目。重要的是,我們的課程還提供元宇宙人工智能在線實驗平臺,讓你能在一個模擬的環境中,邊學邊練,高效學習。自由探索,嘗試不同的算法,看看它們對圖像有什么影響,這對理解圖像增強的原理和應用特別有幫助。
后臺私信雯雯老師,一起學習人工智能OpenCV~!
?5年時間打造,元宇宙人工智能在線實驗平臺
?30天趣玩趣學,算法原理+代碼實現+項目實戰
?200余講課程,邊學邊練,在線答疑
-
圖像處理
+關注
關注
27文章
1302瀏覽量
56902 -
AI
+關注
關注
87文章
31574瀏覽量
270391 -
人工智能
+關注
關注
1796文章
47704瀏覽量
240364 -
仿射變換
+關注
關注
0文章
2瀏覽量
5730
發布評論請先 登錄
相關推薦
評論