在 MATLAB 中調整影象大小
本教程將討論使用 Matlab 中的 imresize()
函式調整影象大小。
使用 MATLAB 中的 imresize()
函式調整影象大小
我們可以使用 imresize()
函式在 Matlab 中調整影象大小。此功能通過增加或減少畫素來調整影象大小。例如,如果我們將影象大小調整為 100×100 的兩倍,則其最終大小將為 200×200。此函式使用鄰域中已有的畫素值建立更多畫素。如果我們想減小影象的大小,我們可以使用小於 1 的調整縮放比例值。在這種情況下,imresize()
函式將根據調整大小值從影象中刪除畫素。如果調整大小為 0.5,畫素將變為一半。第一個引數是要調整大小的影象。它可以是邏輯型別、數字型別和分類型別,但數字值應該是實數。第二個引數是比例或調整大小因子,它應該是一個正數。例如,讓我們使用 imread()
函式讀取影象並使用 imresize()
函式調整其大小,然後使用 imshow()
函式繪製兩者。請參閱下面的程式碼。
clc
RGB = imread('cat.jpg');
RI = imresize(RGB,10);
figure
imshow(RGB)
figure
imshow(RI)
輸出:
左圖是輸出中的原始影象,右圖是調整後的影象。也可以檢視儲存兩張輸出影象的變數的大小,會比原來的大小大十倍。如果影象包含兩個以上的維度,imresize()
函式只會改變前兩個維度的大小,其他維度保持不變。例如,在上述程式碼的情況下,如果你檢視 Matlab 中的工作區,你將知道原始影象和調整大小的影象的第三維是相同的。我們可以使用向量來定義輸出影象的大小,而不是使用整數作為調整大小的比例值,例如 [100 100] 以獲得大小為 100×100 的輸出影象。例如,讓我們調整上面的影象大小以獲得大小為 100×100 的影象。請參閱下面的程式碼。
clc
RGB = imread('cat.jpg');
RI = imresize(RGB,[100 100]);
figure
imshow(RGB)
figure
imshow(RI)
輸出:
左圖是輸出中的原始影象,右圖是調整後的影象。你還可以在右側影象的頂部看到輸出影象的大小,即 100×100。第三維沒有改變,因為它包含影象中存在的顏色值。我們還可以使用 imresize()
函式調整索引影象的大小。索引影象與 RGB 影象不同,它由一個 2D 陣列組成,其中儲存了位元組資料,我們還可以將不同型別的資料放入其中,例如 double、int16 等。RGB 影象包含顏色作為第三維,但索引影象包含顏色作為單獨的顏色圖。要調整索引影象的大小,我們必須在 imresize()
函式中使用第二個變數,它是輸入影象的顏色圖,我們可以使用 imread()
函式的第二個輸出來獲得它。resize 函式將為我們提供一個新的 2D 陣列和一個新的顏色圖。要繪製索引影象,我們必須使用二維陣列和 Map。例如,讓我們讀取索引影象並調整其大小。請參閱下面的程式碼。
clc
[OI,map] = imread("corn.tif");
[RI,Nmap] = imresize(OI,map,2);
figure
imshow(OI,map)
figure
imshow(RI,Nmap)
輸出:
右圖是輸出中的原始影象,左圖是調整後的影象。我們還可以更改插值方法,用於調整影象大小。預設方法是雙三次,但我們可以通過在 imresize()
函式中輸入包含新方法名稱的字串將其更改為最接近或雙線性。在最近插值方法中,輸出畫素被分配為該點所在畫素的值。在雙線性插值方法中,為輸出畫素分配一個值,該值是最近的 2×2 鄰域中畫素的加權平均值。在雙三次插值方法中,為輸出畫素分配一個值,該值是最近 4×4 鄰域中畫素的加權平均值。