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