1、读出bmp灰度图像的灰度值是不是一定要通过读bmp文件里的数据区才可以获得正确的结果? 通过在View类里CClientDC dc(this);dc->getPixel(i,j)来读取显示View里的图像象素可以得到正确的灰度值吗?2、在看《VC++图像处理》时候,说起灰度都是R G B相等的。就是说0 0 0---255 255 255,这样正好是256个灰度值,但是不是bmp的灰度图像都是这样的格式呢?在bmp的数据区里只要读一个字节,即调色板的索引就可以了,就可以获得灰度值了,是这样吗?3、还有,2色、16色、24色、256色、真彩色32位bmp灰度图,都是什么区别啊?真得有点糊涂了!  谢谢大家能指点迷津!! 谢谢了!

解决方案 »

  1.   

    有调色板(<=256)的,颜色值体现在调色板索引上,R G B相等便为灰度图像
    没有调色板的,像素数据直接表示颜色值,即像素数据R G B相等便为灰度图像
      

  2.   

    <<vc++数字图象处理>>一书说的很明白
      

  3.   

    ucHuiDu=(0.299*(ired)+0.587*(igreen)+0.114*(iblue),因为灰度图调色板中ired=igreen=iblue,所以上式可以写成ucHuiDu==(0.299+0.587+0.114)*ired=ired=index,
    index就是你直接读出的数据.所以说在bmp的数据区里只要读一个字节,即调色板的索引就可以了,就可以获得灰度值了
      

  4.   

    1、读出bmp灰度图像的灰度值是不是一定要通过读bmp文件里的数据区才可以获得正确的结果? 通过在View类里CClientDC dc(this);dc->getPixel(i,j)来读取显示View里的图像象素可以得到正确的灰度值吗?可以,因为,它也是读取的数据区!!2、
    是的!!!!3、还有,2色、16色、24色、256色、真彩色32位bmp灰度图,都是什么区别啊?
    这个东西不好讲!关于,存储的格式,位数,以及结构!
    都不同!!!!
    需要上网查些资料!!!