資源簡介
使用matlab來實現一個圖像的旋轉處理 一種幾何變換
資源是matlab的一個m文件 代碼都在里面 帶有一點釋放方便理解 :)
具體實現描述:
http: blog csdn net abee23 article details 7398749
(支持原創哈)
測試平臺: linux + matlab2009b
代碼片段和文件信息
function?img_rotate=my_img_rotate(origin_imgradian)
%?旋轉后圖像=my_img_rotate(源圖像旋轉弧度)?0<旋轉弧度
%?算法: 圖像旋轉處理(順時針)
%?創建時間: 2012-3-26(晚)
%?創建人: abee
%?博客: http://blog.csdn.net/abee23
%?QQ: 8281845
%?(abee:我會非常推薦你保留上面5行message的)
%得到包圍盒圖的大小(保存旋轉后的圖像)
[hwdump]=size(origin_img);
new_img_size? =?(h^2+w^2)^0.5;
img_rotate =?uint8(zeros(new_img_sizenew_img_size3)); %像素是整數
img_rotate_ipt =?imrotate(origin_img-radian*57.3); %IPT提示的旋轉函數
%注意訪問矩陣時下標是整型的.
%如果單是一個轉移那么將有一點些的像素復制不過去(像素空洞問題)
%但是向上+0.5或者向下-0.5時多兩次復制這樣就能夠復制全部點過去了.
cos_val =?cos(radian);
sin_val =?sin(radian);
%計算(xy)的新坐標并把像素復制到新坐標(包圍盒圖).
%時間復雜度:O(n^2)
for?x0=1:w
for?y0=1:h
x?=?uint32(x0*cos_val?-?y0*sin_val?+?h
評論
共有 條評論