? ? ? ?5、圖像的縮放
下面值來介紹一下圖像的縮放主要是根據(jù)函數(shù)imresize來實現(xiàn)的,我們先來看看代碼和效果圖,然后分析圖像的縮放函數(shù)。代碼和效果圖像所示:
close all ;
clear all ;
clc ;
[im,map] = imread(‘Hydrangeas.bmp’);%讀入圖片
im0 = imresize(im,0.26);%進行縮放到原來的0.26倍
im1 = imresize(im,1);%縮放原來的比例
im2 = imresize(im,3.5);%進行縮放到原來的3.5倍
im3 = imresize(im,[64 40]);%進行圖像的縮放并設(shè)置圖像的行列
im4 = imresize(im,1.6,‘bilinear’);%進行線性插值實現(xiàn)縮放
im5 = imresize(im,1.6,‘triangle’);
set(0,‘defaultFigurePosition’,[100,100,1000,500]);%設(shè)置窗口大小
set(0,‘defaultFigureColor’,[1 1 1]);%設(shè)置窗口顏色
figure;%打開一個窗口,用來顯示(多幅)圖像
subplot(1,2,1), imshow(im,map);%顯示圖片,一行兩列,第一幅
subplot(1,2,2), imshow(im0,map);%顯示圖片,一行兩列,第二幅
figure;%打開一個窗口,用來顯示(多幅)圖像
subplot(1,2,1), imshow(im,map);%顯示圖片,一行兩列,第一幅
subplot(1,2,2), imshow(im1,map);%顯示圖片,一行兩列,第二幅
figure;%打開一個窗口,用來顯示(多幅)圖像
subplot(1,2,1), imshow(im,map);%顯示圖片,一行兩列,第一幅
subplot(1,2,2), imshow(im2,map);%顯示圖片,一行兩列,第二幅
figure;%打開一個窗口,用來顯示(多幅)圖像
subplot(1,2,1), imshow(im,map);%顯示圖片,一行兩列,第一幅
subplot(1,2,2), imshow(im3,map);%顯示圖片,一行兩列,第二幅
figure;%打開一個窗口,用來顯示(多幅)圖像
subplot(1,2,1), imshow(im,map);%顯示圖片,一行兩列,第一幅
subplot(1,2,2), imshow(im4,map);%顯示圖片,一行兩列,第二幅
figure;%打開一個窗口,用來顯示(多幅)圖像
subplot(1,2,1), imshow(im,map);%顯示圖片,一行兩列,第一幅
subplot(1,2,2), imshow(im5,map);%顯示圖片,一行兩列,第二幅
縮小:
?
等大:
?
放大
?
縮放并且設(shè)置行列:
?
線性插值:
?
? ? ? ?
下面介紹一下imresize函數(shù)的使用信息(可以通過在matlab 使用help imresize查看):
該函數(shù)主要用來調(diào)整圖像大小。
B = imresize(A,SCALE)返回一個圖像,大小是原來的SCALE倍;A是灰度、RGB或者二進制圖像。
B = imresize(A,[NUMROWS NUMCOLS])調(diào)整圖像大小,使其具有指定數(shù)量的行和列。 NUMROWS或NUMCOLS可能都是NaN,在這種情況下,將自動計算行數(shù)或列數(shù),以便保留圖像寬高比。
[Y,NEWMAP] = imresize(X,MAP,SCALE)調(diào)整索引圖像的大小,其中按照SCALE的倍數(shù)對原圖像進行調(diào)整。
[Y,NEWMAP] = imresize(X,MAP,[NUMROWS NUMCOLS])調(diào)整索引圖像的大小,通過調(diào)整行數(shù)和列數(shù)進行調(diào)整。
要控制imresize使用的插值方法,可以在上面的語法中添加一個METHOD參數(shù),如下所示:
(A,SCALE,METHOD)
(A,[NUMROWS NUMCOLS],METHOD),
imresize(X,MAP,M,METHOD)
imresize(X,MAP,[NUMROWS NUMCOLS],METHOD)
METHOD可以是一個命名一般插值方法的字符串:
‘nearest’ - 最近鄰插值
‘bilinear’ - 雙線性插值
‘bicubic’ - 三次插值;默認方法
METHOD也可以是一個命名插值內(nèi)核的字符串:
‘box’ - 用盒形內(nèi)核插值
‘triangle’ - 三角形內(nèi)核插值 (相當于“雙線性”)
‘cubic’ - 用立方核插值 (相當于“bicubic”)
‘lanczos2’ - 用Lanczos-2內(nèi)核插值
‘lanczos3’ - 插入Lanczos-3內(nèi)核
最后,METHOD可以是{f,w}形式的雙元素單元陣列,其中f是自定義內(nèi)插內(nèi)核的處理函數(shù),w是自定義內(nèi)核的寬度。在區(qū)間-w / 2 《= x 《w / 2之外,f(x)必須為零。可以使用標量或向量輸入來調(diào)用處理函數(shù)f。
可以通過使用上述任何語法之后的參數(shù)/值對來實現(xiàn)對imresize的附加控制。例如:
B = imresize(A,SCALE,PARAM1,VALUE1,PARAM2,VALUE2,。..)
參數(shù)包括:
‘Antialiasing’- 真假指定縮小圖像時是否執(zhí)行抗鋸齒。默認值取決于您選擇的插值方法。對于‘nearest’ METHOD參數(shù),默認值為false;對于所有其他方法,默認值為true。
‘Colormap’ - (僅與索引圖像相關(guān)) ‘original’ 或 ‘optimized’;如果‘original’ ,則輸出newmap與輸入圖相同。如果是“優(yōu)化”,則會創(chuàng)建一個新的優(yōu)化顏色映射。默認值為“optimized”。
‘Dither’ - (僅適用于索引圖像)true或false; 指定是否執(zhí)行顏色抖動。默認值為true。
‘Method’ - 如上所述
‘OutputSize’ - 一個雙元素向量[MROWS NCOLS], 指定輸出大小。一個元素可以是NaN,在這種情況下,自動計算另一個值以保留圖像的寬高比。
‘Scale’ - 一個標量或兩元素向量,指定調(diào)整大小的比例因子。如果它是標量,則將相同的比例因子應(yīng)用于每個維度。如果它是向量,它分別包含行和列尺寸的比例因子。
例子:
使用默認的雙三次插值和抗混疊縮小兩倍:
I = imread(‘rice.png’);
J = imresize(I,0.5);
figure,imshow(I), figure,imshow(J)
使用最近鄰內(nèi)插收縮因子2。 (這是最快的方法,但質(zhì)量最差):
J2 = imresize(I,0.5,‘nearest’);
調(diào)整索引圖像的大小:
[X,map] = imread(‘trees.tif’);
[Y,newmap] = imresize(X,map,0.5);
imshow(Y,newmap)
調(diào)整RGB圖像的大小以獲得64行,自動計算列數(shù):
RGB = imread(‘peppers.png’);
RGB2 = imresize(RGB,[64 NaN]);
圖像的幾何變化差不多就到這里了,matlab中有很多函數(shù)可以實現(xiàn)圖像的幾何變換,這里就不詳細說明了。
評論
查看更多