我試圖使用這些算法中的一個在RGB圖像轉換爲灰度級:如何申請,從彩色圖像轉換爲灰度算法到Android?
明度方法平均最突出的和最不突出的顏色: (MAX(R,G,B)+分鐘( R,G,B))/ 2。
平均方法簡單地平均化的值:(R + G + B)/ 3。
用於光度的公式是0.21 R + 0.71 G + 0.07 B.
但我得到非常奇怪的結果!我知道還有其他方法可以實現這一目標,但這樣做有可能嗎?
下面是代碼:
for(int i = 0 ; i < eWidth*eHeight;i++){
int R = (pixels[i] >> 16) ; //bitwise shifting
int G = (pixels[i] >> 8) ;
int B = pixels[i] ;
int gray = (R + G + B)/ 3 ;
pixels[i] = (gray << 16) | (gray << 8) | gray ;
}
你從哪兒得到這些數字?應該是0.299 R'+ 0.587 G'+ 0.114 B' – EboMike 2010-10-28 18:15:02
@EboMike,這些是HDTV使用的新版本的常量:http://en.wikipedia.org/wiki/YUV#BT.709_and_BT.601但是我認爲G應該是0.72而不是0.71。 – 2010-10-28 18:55:14
@EboMike,我發現這個博客上的數字:http://www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/ – Tony 2010-10-28 20:34:03