Re: [問題] RGB轉出灰階圖

看板MATLAB作者 (~口卡口卡 修~)時間12年前 (2012/07/07 13:37), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《jeff126f (jeff)》之銘言: : 小弟目前在做一些影像對比增強的實驗 : 因為需要將彩色圖片做一些處理 : 想請問 : 1. : 原本我利用rgb2gray(image)將RGB影像的灰階直取出 : (公式應該是Y = 0.299R + 0.587G + 0.114B) : 因為要對灰階處理 : 再轉回彩色圖片 : 所以需要保留色彩資料 : 使用YCbCr色域 : rgb2YCbCr(image) : 但取出的Y值卻與rgb2gray(image)不同 : 那哪個才是對的灰階值 都是正確的灰階值 ( 或 Luminance ) 差別在於 matlab 它在 YCbCr 上有做過一些數值上的調整 (請自行 help) 畢竟 YCbCr 它不是一個標準色彩空間 所以會有很多種定義版本 因此若你想轉到 YUV domain 上處理 建議自己寫一個 I/O 轉換 不要使用 matlab 提供的函數 : 2. : 我利用f= rgb2YCbCr(image)之後 : imshow(f); : 結果顯示圖片的顏色 : 原本黃的地方變偏紫色 : 黑的地方變成偏綠色 : 在轉回去RGB並顯示圖片卻又正常 : ( image_new=YCbCr2rgb(f); : imshow(image_new); ) : 請問是哪個地方出錯了 : 謝謝大家解答了 用 imshow(f) 本來就不對 = =lll f 他是 yuv format, 不是 rgb format imshow(.) 是讓你 display 出 rgb (或 gray level) 的圖 這就好比像是吃東西的時候, 要使用正確的工具來吃當下的東西 例如 吃飯要用湯匙或筷子、吃牛排要用刀叉、用吸管喝飲料 可是你會用刀叉吃飯、用吸管吃牛排嗎 XD? 當然若你想把 f 的資訊直接秀出來 可以上網抓 yuv display 程式來播放 但還是強調一下, 不要使用 matlab 提供的函式 它跟一般標準使用的 range 不太一樣 ~~ 除非你很清楚每個轉換函式之間的關係為何 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.211.139

07/07 22:49, , 1F
之前學長在教學的時候就說要show出圖片就用imshow = =
07/07 22:49, 1F

07/07 22:50, , 2F
所以完全不知道他是RGB形式 總算解決了 謝謝~
07/07 22:50, 2F
文章代碼(AID): #1Fzyh_Bf (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1Fzyh_Bf (MATLAB)