請問大家,如何讀取16位影像某點的灰度值?范圍在0~65535
uj5u.com熱心網友回復:
不就是取RGB嗎?uj5u.com熱心網友回復:
彩色圖象的灰度其實在轉化為黑白影像后的像素值(是一種廣義的提法),轉化的方法看應用的領域而定,一般按加權的方法轉換,R, G,B 的比一般為3:6:1。任何顏色都由紅、綠、藍三基色組成,假如原來某點的顏色為RGB(R,G,B),那么,我們可以通過下面幾種方法,將其轉換為灰度:
1.浮點演算法:Gray=R*0.3+G*0.59+B*0.11
2.整數方法:Gray=(R*30+G*59+B*11)/100
3.移位方法:Gray =(R*77+G*151+B*28)>>8;
4.平均值法:Gray=(R+G+B)/3;
5.僅取綠色:Gray=G;
通過上述任一種方法求得Gray后,將原來的RGB(R,G,B)中的R,G,B統一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來的RGB(R,G,B)就是灰度圖了。
uj5u.com熱心網友回復:
我用c#的GetPixel()獲得的灰度值范圍是0~255間的,如何獲得16位的灰度值?范圍在0~65535間的。uj5u.com熱心網友回復:
不是彩色影像灰度化,現有的就是16位的灰度影像。uj5u.com熱心網友回復:
就是說你的圖片是 PixelFormat.Format16bppGrayScale 格式的可通過 BitmapData 鎖定圖片資料,直接讀取出灰度資料,由于 每像素 16 位(2個位元組)即 UINT16
也可以用檔案流方式跳過頭(52位元組)直接讀取
uj5u.com熱心網友回復:
謝謝!我的圖片很奇怪,查看圖片屬性位深度是16位,但是我用c#查看 PixelFormat是Format32bppArgb,請問您知道這是怎么回事嗎?
uj5u.com熱心網友回復:
把你的圖片放到網盤上,給我看看如果你把圖片用 GDI 打開,那么 PixelFormat 是會變的
uj5u.com熱心網友回復:
鏈接:https://pan.baidu.com/s/1qZCWC2o 密碼:9eyg
uj5u.com熱心網友回復:
你好,我用vtkvolume16reader讀16位灰度圖有錯位問題,使用你說的“跳過52位元組的頭”方法,影像錯位被極大改善了,但仍有像素級的小幅度錯位,不是完美的,請問為什么這個頭是52位元組呢?
uj5u.com熱心網友回復:
https://blog.csdn.net/flyfight88/article/details/8504326看一下這個
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/146956.html
標籤:C#
