天天看點

《數字圖像處理與機器視覺——Visual C++與Matlab實作》——1.4 讀取和寫入圖像檔案

本節書摘來自異步社群出版社《數字圖像處理與機器視覺——visual c++與matlab實作》一書中的第1章,第1.4節,作者: 張铮 , 王豔平 , 薛桂香,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

數字圖像處理與機器視覺——visual c++與matlab實作

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函數用于将指定的圖像資料寫入檔案中,通過指定不同的儲存檔案擴充名,起到圖像格式轉換的作用(參見例2.4)。其調用格式為:

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

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

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

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

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

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

3.imfinfo函數

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

filename參數指定檔案名。

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

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

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀