1. 程式人生 > >【MATLAB】imwrite rgb2ind坑的記錄

【MATLAB】imwrite rgb2ind坑的記錄

上週在使用imwrite(A,map,filename)引數形式的時候,將我生成的顏色查詢表lut和我自己使用歐式距離對應上去的索引影象indexPic,得到的圖片效果很差。搞得我一度懷疑是我的顏色查詢表生成的時候出現了問題。

後面仔細檢視官方文件的時候才發現:

imwrite(A,map,filename) 將 A 中的索引影象及其關聯的顏色圖寫入由 map filename 指定的檔案。 如果 A 是屬於資料型別 double 或 single 的索引圖片,則 imwrite 通過從每個元素中減去 1 來將索引轉換為從零開始的索引,然後以 uint8 形式寫入資料。如果 A 中的資料是 single,則在將其寫入 GIF 或 TIFF 檔案之前將 A 轉換為 double。

原來預設的索引影象的索引是從0開始的,如果你的索引是從1開始,則將其改成double型別再傳到函式裡面。

更為簡單的方法是得到了查詢表之後,使用rgb2ind(A, map, 'nodither');這樣返回的直接就是從0開始的索引影象,然後呼叫imwrite就能得到正常的影象。

還有就是不要使用自己沒有搞清楚的函式,這樣會浪費更多的時間。比如imagesccolormap(我現在還沒有搞清楚),下次有緣再研究研究吧。