Related Posts with Thumbnails

2009年2月25日 星期三

[程設] Matlab - 圖片平移&放大&旋轉


程式碼如下

clear; %清除螢幕和變數資料
f = imread('testtube.tif'); %讀入"testtube.tif"圖片檔案給f變數
imshow(f); %繪出f變數
[M,N]=size(f); %將f變數矩陣的size,Y軸傳給M,X軸傳給N
g=uint8(zeros(M+200,M+200)); %新增一個空白圖片(大小為M+200,N+200)
%figure , imshow(g); %另繪圖片g

temp = [1 0 0;0 1 0;0 0 1];   %製作線性方程式

for i=1:M
    for j=1:N
        a = [i;j;1]; %將X,Y點位置放入矩陣計算
        b = temp*a; %計算X,Y改變後的位置
        %g(b(1,1)-1:b(1,1),b(2,1)-1:b(2,1))=f(i,j); %放大倍率用(填滿效果)
  g(b(1,1),b(2,1))=f(i,j); %平移用        
    end
end 

figure, imshow(g); %另繪圖片g



平移效果
其中藍色部分的線性方程式是3*3矩陣
可以修改矩陣內的值讓輸出的圖片做平移&放大&旋轉的效果
如果要要修改的話請照下面方式修改
[1,2,3]
[4,5,6]
[7,8,9]
1:X軸放大倍率or旋轉角度
5:Y軸放大倍率or旋轉角度
3:平移位置
2.4.7.8.9固定不變

平移效果如下:





縮放效果如下:


為什麼會有黑色線條?
因為放大倍率像素雖然增加了兩倍,但是有資訊的點還是只有原來的像素點!
鎖已放大的時候我們自己把其他空白的點填補起來(也就是程式碼藍色區域)!
填滿效果如下:

2 則留言:

  1. 看不大懂~有空再來研究一下!!
    強呀

    回覆刪除
  2. 請問M與N+200的用意為何?
    還有為什麼我做出來的圖都是重複三張的?
    最後輸出要怎麼才會變成白色?
    以及怎麼補滿空白點?

    不好意思,剛學MATLAB問題比較多

    回覆刪除

歡迎各位來看我的Blogger,希望大家都可以多多留言,或是提供意見給我喔!!