天天看點

《數字圖像處理與機器視覺——Visual C++與Matlab實作(第2版)》一一1.3 讀取和寫入圖像檔案

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

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

matlab可以處理以下的圖像檔案類型:bmp、hdf、jpeg、pcx、tiff、xwd、ico、gif、cur。可以使用imread和imwrite函數對圖像檔案進行讀寫操作,使用imfinfo函數來獲得數字圖像的相關資訊。

1.imread()函數

imread()函數可以将指定位置的圖像檔案讀入工作區。對于除索引圖像以外的情況,其原型 如下。

參數說明:

filename指定圖像檔案的完整路徑和檔案名。如果要讀入的檔案在目前工作目錄中或者自動搜尋清單中給出的路徑下,則隻需提供檔案名;

fmt參數指定圖像檔案的格式所對應的标準擴充名,例如gif等,如果imread沒有找到filename所指定的檔案,它會嘗試filename.fmt。

傳回值:

a是一個包含圖像資料的矩陣。對于灰階圖,它是一個m行n列的矩陣;對于rgb真彩圖,則是一個m×n×3的矩陣。對于大多數圖像檔案,a的類型為uint8;而對于某些tiff和png圖像,a的類型為uint16。

對于索引圖像,情況有所不同,此時imread的調用形式如下。

此時的傳回值中,x為圖像資料矩陣,map則是顔色索引表。圖像中的顔色索引資料會被歸一化到0到1的範圍内。因為,對于索引圖像,不論圖像檔案本身使用何種資料類型,imread函數都會使用雙精度類型存儲圖像資料。

imread函數還可以處理rgba等格式存儲的圖像,可以通過在指令視窗中輸入help imread來檢視matlab中有關imread的線上幫助資訊。

2.imwrite函數

imwrite()将指定的圖像資料寫入檔案中,通過指定不同的儲存檔案擴充名,可以起到圖像格式轉換的作用(參見例1.4)。其調用格式如下。

filename參數指定檔案名(不必包含擴充名)。

fmt參數指定儲存檔案所采用的格式。

存儲索引圖像時,還需要一并存儲顔色索引表,則此時imwrite函數的使用方法應如下。

map是合法的matlab顔色索引表。

imwrite函數還可以控制圖像檔案的很多屬性,例如tiff檔案格式所選擇的彩色空間、gif格式中的透明色以及圖像檔案的作者、版權資訊、解析度和建立軟體等。

【例1.4】讀入一幅tif圖像檔案,并在寫入磁盤時将tif圖像轉換為bmp圖像。

3.imfinfo()函數

imfinfo()函數可以讀取圖像檔案中的某些屬性資訊,比如修改日期、大小、格式、高度、寬度、色深、顔色空間、存儲方式等。使用方法如下。

filename參數指定檔案名;

fmt參數是可選參數,指定檔案格式。

【例1.5】檢視圖像檔案資訊。

繼續閱讀