Re: [問題] 關於RGB轉灰階的程式碼問題

看板C_and_CPP (C/C++)作者 (devilrucifer)時間16年前 (2009/04/09 15:06), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串4/5 (看更多)
※ 引述《VictorTom (鬼翼&娃娃魚)》之銘言: : ※ 引述《devilrucifer (devilrucifer)》之銘言: : : 各位板大好: : : 小弟因為最近剛開始學影像處理,所以有很多東西不懂, : : 在此想請教一下各位先進關於灰階轉換的問題,常見的兩種的算式 : : Gray=(B*28+G*151+R*77)/256 : : OR : : gray=R*0.299+G*0.587+B*0.114 : 理論上, 後面這個比較精確, 常見的做法還會加一個四捨五入的0.5 : 但是, 在CPU上, 甚至一些embbed system, 前者會算的比較快.... : 有一個折衷的方案是: : gray = (R*299 + G*587 + B*114 + 500) / 1000; 不好意思我在請問一下一個問題, 請問這一邊加0.5四捨五入的用意是什麼呢? 是怕數值超過255嗎? 小弟是試過有加跟沒加都可以正常執行, 也看過有人沒加0.5而是在後面追加 if(gray>255)gray=255; if(gray<0)gray=0; 請問這幾個在執行上有甚麼差異嗎? 在此先謝謝各位版友。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.74.245.166

04/09 20:01, , 1F
等效 (gray>255)?255:((gray<0)?0:gray)
04/09 20:01, 1F

04/12 00:01, , 2F
加0.5只是為了四捨五入
04/12 00:01, 2F
文章代碼(AID): #19tPvccy (C_and_CPP)
文章代碼(AID): #19tPvccy (C_and_CPP)