作者timon (Tim On Five)
看板C_Sharp
標題[問題] 讀灰階影像的問題(灰階值錯誤)
時間Fri Sep 28 22:53:24 2012
大家好!我目前正在使用C#學習有關影像處理的程式撰寫。
目前遇到一個問題困擾我很久,請各位解答一下,如下:
Bitmap bimage = new Bitmap("test.jpg");
int[,] grayData = new int[bimage.Width, bimage.Height];
for (int y = 0; y < bimage.Height; y++)
{
for (int x = 0; x < bimage.Width; x++)
{
Color color = bimage.GetPixel(x, y);
grayData[x, y] = (color.R + color.G + color.B) / 3;
}
}
測試影像為8-bit的灰階影像,為何抓出來的灰階值(grayData中)都是17的倍數??
抓出來的灰階值都與原圖不一樣,都是:0, 51, 102, 153, 238...等等(17的倍數?)
如果是24-bit彩色影像就沒這樣的問題,我在網路搜尋都沒有這相關的文章!
可能是非常基本的問題! >"< 請各位幫忙提示一下 @@"
感激不盡! 謝謝大家!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.184.86
1F:→ killer1121:灰階影像會有rgb這三個東西嗎 就只是個0~255的值 09/28 23:50
2F:→ killer1121:就程式碼來說 我看到限定彩色轉灰階 09/28 23:57
3F:→ timon:那請問要如何讀取8-bit灰階影像至陣列中呢@@? 09/29 02:55
4F:→ erspicu:把你的jpg檔給大家看看 另外灰階的jpg檔 其實還是有rgb 09/29 03:41
5F:→ erspicu:只是每個pixel的R=G=B而已 所以你任抓R.G.B其中一者 09/29 03:41
6F:→ erspicu:不用再三者相加/3了 09/29 03:41
7F:→ erspicu:而且rgb相加/3也不是很正確的轉換方式 只是概略計算 09/29 03:44
9F:→ qqwwee33:我電腦跑都一樣啊= = 09/29 10:54
10F:→ tongzhou:我猜應該是Color.R Color.G Color.B的關係吧 09/29 22:00
11F:→ iterator:因為你原圖 "本來" 就只有 16 階顏色吧.. 09/30 01:05
12F:→ sand1050:灰階公式應該用錯了 是R*0.299+B*0.587+G*0.114 10/02 13:03
13F:推 laevatain103:grayvalue[,]= color.GetBrightness;// try it 10/02 23:57
14F:推 Ethan96:我用unsafe去做R*0.3+G*0.59+B*0.11 值也都是17倍數 10/04 23:52
15F:推 Ethan96:大概找到問題 請改用LockBits方法 10/04 23:58