【MATLAB Image Processing Toolbox 入門教程九】“匯入、匯出和轉換”之“影像序列和批處理”

大頭的博旅日誌發表於2020-12-18

【MATLAB Image Processing Toolbox 入門教程九】


影像序列是一組與時間或空間位置相關聯的影像。影像序列又稱為影像堆疊或者視訊。本次所講解的內容就是MATLAB中如何顯示影像序列以及如何對影像序列進行批處理。


1 implay函式

在MATLAB中輸入implay可以開啟視訊檢視器,使用視訊檢視器可以播放視訊、電影或影像序列,可以跳到序列的特定幀,或者更改顯示的幀速率。也可以開啟多個視訊檢視器觀看不同的視訊。implay函式還有以下的用法:

  • implay(filename):開啟視訊檢視器並播放filename指定的檔案,視訊檢視器一次讀取一幀,目的是在播放過程中節約記憶體。
  • implay(I):開啟視訊檢視器並播放影像序列I中的第一幀。
  • implay(_,fps):用於指定要檢視視訊或影像序列的幀速率。fps是幀速率,以每秒幀數為單位,指定為正數。如果省略,視訊檢視器將使用檔案中指定的幀速率或預設值20。
    接下來我們舉幾個例子演示一下implay函式的用法。
    首先是用implay函式播放影像序列:
load cellsequence; %載入影像序列
implay(cellsequence,5); %用每秒5幀的速率播放

在這裡插入圖片描述
接下來用implay函式播放視訊:

implay('rhinos.avi');

在這裡插入圖片描述

2 montage函式

montage除了蒙太奇的意思之外,還有拼接影像的意思。在MATLAB中,montage函式的功能就是將多個影像幀放在一個矩形裡顯示。此函式的使用方式有下面幾種:

  • montage(I):顯示影像序列I的所有幀。在預設情況下,montage函式將這些影像幀進行排列使他們大致形成一個正方形。I作為多幀影像序列,若其為K個二值影像或灰度影像,那麼I為m×n×K的數值陣列,若其為K個真彩色影像,那麼I為m×n×3×K的數值陣列。
  • montage(imagelist):顯示單元格陣列imagelist的一組影像。imagelist指定為大小為m×n或m×n×3的數值矩陣的單元陣列。
  • montage(filename):顯示檔名為filename的檔案中的影像集。
  • montage(imds):顯示影像資料庫imds的影像集。
  • montage(__,map):在使用此語法時,montage函式將二值影像灰度影像看做索引影像,並用指定的顏色圖map顯示。如果用檔名filename或資料集imds來制定要顯示的影像,那麼montage函式則用指定的map覆蓋原影像中的任何顏色對映。對於彩色影像,montage不改變其colormap。對於顏色對映map,可以指定為元素值在[0 1]內的c×3的矩陣陣列,也可以指定為下圖中的colormap名稱。
    在這裡插入圖片描述
  • montage(__,Name,Value):使用Name-Value對montage函式的其他引數進行自定義設定,主要有以下幾個:
    ①’BackgroundColor’:背景色,預設為’black’,指定為MATLAB Colorspec,如下圖所示。montage函式用這指定的顏色填充圖片中的空白。一旦指定了背景色,那麼montage函式將輸出變為RGB影像。在這裡插入圖片描述
    ②’BorderSize’:用於填充縮圖的邊界,以畫素為單位,預設為[0 0],可以指定為非負整數或1×2維非負整數矩陣。montage函式用’BackgroundColor’指定的顏色填充邊界。
    ③’DisplayRange’:指定灰度影像的顯示範圍,定義為[low high],畫素值小於等於low的為黑色,大於或等於high的為白色。若指定為空矩陣[ ],那麼montage函式將影像中畫素最小值指定為low,最大值指定為high。
    ④’Indices’:指定mintage函式顯示影像序列的幀,預設情況下,montage函式顯示所有的影像。例如montage(I,‘Indices’,1:4)則代表顯示影像集I的前4幀。
    ⑤’Interpolation’:縮放影像時使用的插值方法。有兩個對應值:‘nearest’(default)和’bilinear’。‘nearest’代表最近鄰插值。‘bilinear’代表雙線性插值。
    ⑥’Parent’:由montage函式建立的影像物件的父物件。指定為一個軸物件。
    ⑦’Size’:指定影像顯示的行數和列數,指定為[nrows ncols]。
    ⑧’ThumbnailSize’:每個縮圖的大小,以畫素為單位,指定為正整數的二元素矩陣,每個影像的高寬比會被保留,空白處由BackgroundColor指定的顏色填充。
  • img=montage(__):返回包含所有幀的單個影像物件的控制程式碼。

可算是把montage函式用法講完了,我知道大家看完一定一頭霧水,沒關係,下面舉幾個例子,就知道這玩意該怎麼用了☺。
一、用montage函式顯示多幀影像
此例中,我們用montage函式顯示4張相同尺寸的灰度影像。

img1 = imread('AT3_1m4_01.tif');
img2 = imread('AT3_1m4_02.tif');
img3 = imread('AT3_1m4_03.tif');
img4 = imread('AT3_1m4_04.tif');
montage({img1,img2,img3,img4});

在這裡插入圖片描述
接著,我們改變影像的排列方式,使用’Size’引數:

montage({img1,img2,img3,img4},'Size',[1 4]);

在這裡插入圖片描述
可以看出,影像用1行4列的方式排列。

二、用montage函式顯示不同尺寸和型別的影像
此例中,我們使用montage函式顯示不同尺寸和型別的3張影像,並改變他們的背景顏色。

imgRGB=imread('peppers.png');
imgGray=imread('coins.png');
subplot(1,2,1);montage({imgRGB,imgGray,'cameraman.tif'}); %預設背景顏色為黑色
subplot(1,2,2);montage({imgRGB,imgGray,'cameraman.tif'},'BackgroundColor','y'); %背景顏色改成黃色

在這裡插入圖片描述
三、自定義montage函式顯示影像的數量
首先使用預設設定的montage函式顯示mri資料集中的所有27張影像:

load mri;
subplot(1,3,1);
montage(D);
subplot(1,3,2);
montage(D,jet); %修改montage顯示影像的colormap
subplot(1,3,3);
montage(D,spring);

在這裡插入圖片描述
接著,我們使用’Indices’引數設定montage顯示影像的數量:

figure;
montage(D,'Indices',1:9);

在這裡插入圖片描述
至此,影像序列和批處理就講解完畢了,下節見:)

相關文章