Re: [問題] RGB轉出灰階圖
※ 引述《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
07/07 22:49, 1F
→
07/07 22:50, , 2F
07/07 22:50, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):