程式碼如下
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固定不變
平移效果如下:
縮放效果如下:
為什麼會有黑色線條?
因為放大倍率像素雖然增加了兩倍,但是有資訊的點還是只有原來的像素點!
鎖已放大的時候我們自己把其他空白的點填補起來(也就是程式碼藍色區域)!
填滿效果如下:
看不大懂~有空再來研究一下!!
回覆刪除強呀
請問M與N+200的用意為何?
回覆刪除還有為什麼我做出來的圖都是重複三張的?
最後輸出要怎麼才會變成白色?
以及怎麼補滿空白點?
不好意思,剛學MATLAB問題比較多