在 MATLAB 中翻轉影象
本教程將討論使用 Matlab 中的 flip()
函式垂直翻轉影象。
使用 MATLAB 中的 flip()
函式翻轉影象
影象由畫素組成。例如,如果你有一個 200 x 200 畫素的影象,這意味著垂直軸上有 200 個畫素,水平軸上有 200 個畫素。我們必須使用 imread()
函式在 Matlab 中讀取和儲存影象。它將儲存在一個矩陣中,矩陣的每個元素都是影象的每個畫素的值。要垂直翻轉影象,我們需要改變畫素的位置。例如,矩陣的最後一行將成為第一行,第一個誰將成為最後一行,依此類推。我們可以使用 Matlab 內建函式 flip()
來翻轉影象或矩陣。例如,讓我們使用 Matlab 中的 flip()
函式翻轉影象,並使用 subplot()
和 imshow()
函式將它們顯示在同一圖上。請參閱下面的程式碼。
img = imread('cat.jpg');
img2 = flip(img);
subplot(1,2,1)
imshow(img)
title('Original Image')
subplot(1,2,2)
imshow(img2)
title('Flipped Image')
輸出:
正如你在上面的輸出中看到的,影象被垂直翻轉。如果我們想水平翻轉影象,我們必須在 flip()
函式中新增第二個引數,即類似矩陣的 flip(img, 2)
的維度。例如,在上面的輸出中,我們已經按列翻轉了矩陣,為什麼影象是垂直翻轉的,但是如果我們想水平翻轉影象,我們必須按行翻轉矩陣。在 Matlab 中,矩陣的第一維是它的列,第二維是它的行。因此,要翻轉影象,我們必須將維度作為 flip()
函式中的第二個引數傳遞。預設情況下,flip()
函式將使用第一維(即列)翻轉矩陣。一些影象還有第三維,其中包含圖片中的顏色。如果我們翻轉第三維,影象不會翻轉,但影象的顏色會翻轉或改變。
在 MATLAB 中使用矩陣操作翻轉影象
我們還可以使用 Matlab 中的矩陣操作來翻轉矩陣。例如,如果我們想使用矩陣操作而不是 flip()
函式來翻轉影象,我們必須將上面程式碼中的 flip(img)
函式更改為 img(end:-1:1,:,:)
。在這段程式碼中,我們改變了列條目的位置,其他兩個維度將保持不變。我們使用冒號作為第二個和第三個引數,以便第二個和第三個維度保持不變。我們也可以改變第二維。例如,讓我們使用 Matlab 中的矩陣操作垂直和水平翻轉上面的影象。請參閱下面的程式碼。
img = imread('cat.jpg');
img2 = img(end:-1:1,end:-1:1,:);
subplot(1,2,1)
imshow(img)
title('Original Image')
subplot(1,2,2)
imshow(img2)
title('Flipped Image')
輸出:
正如你在上面的輸出中看到的,影象被垂直和水平翻轉。我們一次只能使用 flip()
函式翻轉一個維度,但我們可以使用矩陣操作翻轉多個維度。我們還可以使用 Matlab 中的迴圈來翻轉矩陣。