您當前的位置:首頁 > 舞蹈

數字影象處理二(旋轉)

作者:由 撐雨傘的小男孩 發表于 舞蹈時間:2021-12-15

影象旋轉原理

(1)影象座標系轉到數學座標系下;

(2)在數學座標系進行旋轉;

(3)將數學座標系轉化為影象座標系。

在影象旋轉過程中,設計兩個座標系轉化過程。影象座標系轉化為數學座標,經過旋轉之後,數學座標系轉化為影象座標系。在一副影象中,影象座標系的原點在影象左上角,X軸正向朝右,Y軸正向朝下。數學座標系的原點在影象的中心,X軸正向朝右,Y軸正向朝上。如下圖所示。

數字影象處理二(旋轉)

寫出對應的座標系相對於另一個座標系的描述,即轉換關係。

影象座標系相對於數學座標系的表達為

數字影象處理二(旋轉)

數學座標系相對於影象座標系的表達為

數字影象處理二(旋轉)

矩陣中的W,H表示影象的寬度和高度。

數字影象處理二(旋轉)

順時針旋轉

\theta

角的旋轉矩陣為:

數字影象處理二(旋轉)

根據轉化關係,對應的原始影象座標,旋轉前的影象點座標左乘對應的矩陣關係,即可得到轉化之後的影象點座標。其他地方是右乘矩陣關係的,其實是本質是一樣的。他們得到的是1X3的座標矩陣,這裡得到的是3X1的矩陣。只是形式不一樣。轉置了一下。

數字影象處理二(旋轉)

上式中的W‘,H’是旋轉後圖像的寬度和高度。經過旋轉之後,影象的W,H可能會改變。

下面是呼叫的MATLAB的介面,跑的旋轉影象的實驗程式碼及現象。

A=imread(‘1。jpg’);

J=imrotate(A, 90);

subplot(1,2,1);imshow(A);title(‘原圖’);

subplot(1,2,2);imshow(J);title(‘旋轉後的圖’);

imrotate功能:對影象進行旋轉操作。

呼叫格式:

(1)

B = imrotate(A,angle)

將影象A(影象的資料矩陣)繞影象的中心點旋轉angle度, 正數表示逆時針旋轉, 負數表示順時針旋轉。返回旋轉後的影象矩陣。

(2)

B = imrotate(A,angle,method)

使用method引數可以改變插值演算法,method引數可以為下面這三個值:

‘nearest’:最鄰近插值(Nearest-neighbor interpolation)

‘bilinear’: 雙線性插值(Bilinear interpolation)

‘bicubic’: 雙三次插值(或叫做雙立方插值)(Bicubic interpolation)

(3)

B = imrotate(A,angle,method,bbox)

bbox引數用於指定輸出影象屬性:

‘crop’: 透過對旋轉後的影象B進行裁剪, 保持旋轉後輸出影象B的尺寸和輸入影象A的尺寸一樣。

‘loose’: 使輸出影象足夠大, 以保證源影象旋轉後超出影象尺寸範圍的畫素值沒有丟失。 一般這種格式產生的影象的尺寸都要大於源影象的尺寸。

輸出結果:

數字影象處理二(旋轉)

標簽: 影象  座標系  旋轉  矩陣  imrotate