Re: [問題] 讀灰階影像的問題(灰階值錯誤)

看板C_Sharp (C#)作者 (rotareti)時間12年前 (2012/10/05 04:33), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串3/6 (看更多)
※ 引述《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
哈 沒想到原本用24pp算就對了 感謝大大的解惑~
10/05 09:48, 1F

10/05 15:31, , 2F
這篇文章最後的觀點有誤!
10/05 15:31, 2F
文章代碼(AID): #1GRVA0K3 (C_Sharp)
文章代碼(AID): #1GRVA0K3 (C_Sharp)