Re: [問題] 讀灰階影像的問題(灰階值錯誤)
※ 引述《Ethan96 (他們稱呼我"鬥士")》之銘言:
: BitmapData sourceData = source.LockBits(new Rectangle(0, 0, width, height),
: ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
<中略>
: byte colorIndex = (byte)(((*pSource) * 0.3 + *(pSource + 1) * 0.59 +
: *(pSource + 2) * 0.11));
: 印出的值就不是17倍數了
: 參考看看
: unsafe要去專案屬性勾起來
這裡有 bug,
PixelFormat.Format8bppIndexed 代表的是使用 8bits 表示一個 pixel 的顏色,
所以一個 pixel 佔的空間就是 1 byte,
但上面這段程式實際上是拿三個 pixel 的值在做運算, 所以算出來的值都是錯誤的.
實際上單取 *(pSource), *(pSource + 1), *(pSource + 2),
值會跟原發文者的相同, 一樣都是 17 的倍數.
(另外這張圖本來就已經是灰階了, 並不需要套入 color to grayscale 的公式.)
還是維持在原推文內的觀點, 這張圖 "原來" 就只是張 16 階(4 bit)的灰階圖片,
因為被從 16 階顏色轉成 256 階顏色, 每一個值都經過 *17,
所以取出來的時候, 才會都是 17 的倍數.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.23.102
推
10/05 09:48, , 1F
10/05 09:48, 1F
→
10/05 15:31, , 2F
10/05 15:31, 2F
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章