Matlab 圖像平移、旋轉、縮放、鏡像


今天學習了用Matlab實現對圖像的基本操作。在Matlab中,圖像是按照二維矩陣的形式表示的。所以對圖像的操作就是對矩陣的操作。 

對圖像進行縮放、平移、旋轉,都可以轉化為矩陣的運算。 
關於變換矩陣的構造,請參考: 
《 [gym 101047C Robotics Competition] 矩陣快速冪求解點旋轉平移N次之后的位置》 
參考原圖: 
原圖

1. 圖像平移

init = imread('Fig3.tif'); % 讀取圖像 [R, C] = size(init); % 獲取圖像大小 res = zeros(R, C); % 構造結果矩陣。每個像素點默認初始化為0(黑色) delX = 50; % 平移量X delY = 50; % 平移量Y tras = [1 0 delX; 0 1 delY; 0 0 1]; % 平移的變換矩陣 for i = 1 : R for j = 1 : C temp = [i; j; 1]; temp = tras * temp; % 矩陣乘法 x = temp(1, 1); y = temp(2, 1); % 變換后的位置判斷是否越界 if (x <= R) & (y <= C) & (x >= 1) & (y >= 1) res(x, y) = init(i, j); end end end; imshow(uint8(res)); % 顯示圖像

圖像平移

2. 圖像旋轉

init = imread('Fig3.tif'); % 讀取圖像 [R, C] = size(init); % 獲取圖像大小 res = zeros( R, C); % 構造結果矩陣。每個像素點默認初始化為0(黑色) alfa = -15 * 3.1415926 / 180.0; % 旋轉角度 tras = [cos(alfa) -sin(alfa) 0; sin(alfa) cos(alfa) 0; 0 0 1]; % 旋轉的變換矩陣 for i = 1 : R for j = 1 : C temp = [i; j; 1]; temp = tras * temp;% 矩陣乘法 x = uint16(temp(1, 1)); y = uint16(temp(2, 1)); % 變換后的位置判斷是否越界 if (x <= R) & (y <= C) & (x >= 1) & (y >= 1) res(i, j) = init(x, y); end end end; imshow(uint8(res)); % 顯示圖像

圖像旋轉

3. 圖像縮放

init = imread('Fig3.tif'); % 讀取圖像 [R, C] = size(init); % 獲取圖像大小 timesX = 3; % X軸縮放量 timesY = 3; % Y軸縮放量 res = zeros(timesX * R, timesY * C); % 構造結果矩陣。每個像素點默認初始化為0(黑色) tras = [1/timesX 0 0; 0 1/timesY 0; 0 0 1]; % 縮放的變換矩陣 for i = 1 : timesX * R for j = 1 : timesY * C temp = [i; j; 1]; temp = tras * temp; % 矩陣乘法 x = uint8(temp(1, 1)); y = uint8(temp(2, 1)); % 變換后的位置判斷是否越界 if (x <= R) & (y <= C) & (x >= 1) & (y >= 1) res(i, j) = init(x, y); end end end; imshow(uint8(res)); % 顯示圖像

圖像縮放

4. 圖像鏡像(水平)

init = imread('Fig3.tif'); [R, C] = size(init); res = zeros(R, C); for i = 1 : R for j = 1 : C x = i; y = C - j + 1; res(x, y) = init(i, j); end end imshow(uint8(res));

圖像鏡像


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM