本節書摘來自異步社群出版社《數字圖像處理與機器視覺——visual c++與matlab實作(第2版)》一書中的第1章,第1.2節,作者:張铮 , 徐超 , 任淑霞 , 韓海玲,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
數字圖像處理與機器視覺——visual c++與matlab實作(第2版)
1.圖像存儲格式的互相轉換
有時必須将圖像存儲格式加以轉換才能使用某些圖像處理函數。例如,當使用某些matlab内置的濾鏡時,需要将索引圖像轉換為rgb圖像或者灰階圖像,matlab才會将圖像濾鏡應用于圖像資料本身,而不是索引圖像中的顔色索引值表(這将産生無意義的結果)。
matlab提供了一系列存儲格式轉換函數,如表1.11所示。它們的名字都很便于記憶,例如ind2gray可以将索引圖像轉化為灰階圖像。

也可以使用一些矩陣操作函數實作某些格式的轉換。例如,下面的語句可以将一幅灰階圖像轉換為rgb圖像。
2.圖像資料類型轉換
matlab圖像處理工具箱中支援的預設圖像資料類型是uint8,使用imread函數讀取圖像檔案一般都為uint8類型。然而,很多數學函數如sin等并不支援double以外的類型,例如當試圖對uint8類型直接使用sin函數進行操作時,matlab會提示如下的錯誤資訊。
針對這種情況,除了使用小節介紹的強制類型轉換方法外,還可利用圖像處理工具箱中的内置圖像資料類型轉換函數。内置轉換函數的優勢在于它們可以幫助處理資料偏移量和歸一化變換,進而簡化了使用者的程式設計工作。
可以在使用matlab數學函數前将圖像轉換為double類型,而在準備将圖像寫入檔案時再将其轉換為uint8類型,如下所示。