天天看點

《數字圖像處理與機器視覺——Visual C++與Matlab實作(第2版)》一一1.4 圖像的顯示

本節書摘來自異步社群出版社《數字圖像處理與機器視覺——visual c++與matlab實作(第2版)》一書中的第1章,第1.4節,作者:張铮 , 徐超 , 任淑霞 , 韓海玲,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

數字圖像處理與機器視覺——visual c++與matlab實作(第2版)

一般使用imshow函數來顯示圖像,該函數可以建立一個圖像對象,并可以自動設定圖像的諸多屬性,進而簡化程式設計操作。這裡介紹imshow函數的幾種常見調用方式。

1.imshow函數

imshow函數用于顯示工作區或圖像檔案中的圖像,在顯示的同時可控制部分效果,常用的調用形式如下。

i為要顯示的圖像矩陣。

可選參數[low high]指定顯示灰階圖像時的灰階範圍,灰階值低于low的像素被顯示為黑色,高于high的像素被顯示為白色,介于low和high之間的像素被按比例顯示為各種等級的灰色。如果将此參數指定為空矩陣[ ],則函數會将圖像矩陣中的最小值指定為low、最大值指定為high,進而達到灰階拉伸的顯示效果。這個參數常常用于改善灰階圖像的顯示效果。

可選參數param1、value1、param2、value2等可以用來指定顯示圖像的特定方法。

map為顔色索引表,除了顯示索引圖像,這在顯示僞彩色圖像時也可用到。

filename參數指定圖像檔案名,這樣可以不必将圖像檔案首先讀入工作區。

【例1.6】圖像檔案的讀取、顯示、回寫。

2.多幅圖像的顯示

有時需要将多幅圖像一起顯示以比較它們之間的異同,這在考察不同算法對同一幅圖像的處理效果時尤為有用。

可以在同一視窗或者不同的視窗顯示多幅圖像,這兩種方式的實作如例1.7所示。

【例1.7】顯示多幅圖像。

上述程式中figure函數用于新建立一個顯示視窗,進而避免新圖像的顯示覆寫原圖像;subplot(m,n,p)函數的含義是,打開一個有m行n列圖像位置的視窗,并将焦點位于第p個位置上。

注意 在多幅索引圖像的顯示中存在着潛在的問題。由于索引圖像使用的顔色表可能不同,而系統的全局顔色表在預設情況下是8位的,最多隻能存儲256種顔色,這樣一來,如果所有圖像總顔色種類超過256種,則超出的部分将不會被正确顯示。是以,通常先使用ind2rgb(i)将圖像轉換為rgb模式。此外,也可以使用subimage(i,map),這個函數在顯示圖像之前會自動将其轉換為rgb格式。

3.多幀圖像的顯示

在顯示多幀圖像時,可以顯示多幀中的一幀,或者将它們顯示在同一個視窗内,也可以将多幀圖像轉化成電影播放出來。這3種方式的實作分别如例1.8所示。

【例1.8】多幅圖像d,存儲了一組索引圖像,map為顔色索引表。分别以上述的3種方式顯示它們。

4.圖像的放縮

有時需要将圖像的某一部分放大以檢視局部的詳細情況。隻需輸入zoom on指令即可實作圖像的放縮,zoom off可以關閉圖像放縮功能。打開圖像放縮功能之後,就可以通過簡單的滑鼠操作觀察圖像細部了。

5.像素值檢視工具

使用imshow函數顯示一幅圖像之後,可以通過輸入impixelinfo指令在最後顯示的圖像視窗的左下角,随滑鼠光标的移動顯示滑鼠指針所指位置處的像素值,如圖1.12所示。

《數字圖像處理與機器視覺——Visual C++與Matlab實作(第2版)》一一1.4 圖像的顯示

還可以通過imdistline指令以互動的方式檢視圖像中兩點之間的距離,如圖1.13所示。

《數字圖像處理與機器視覺——Visual C++與Matlab實作(第2版)》一一1.4 圖像的顯示

繼續閱讀