由于本人学的是非计算机专业,研究了几天的CxImage,终于做出了一个MFC小程序,并实现了图像的显示(bmp,jpg,tiff格式)
现在的问题是用CxImage中的哪些函数实现对tif文件的像素操作(例如图像的二值化)
请高手帮帮忙
能给示例源码的最好
感谢中!

解决方案 »

  1.   

    好象有一个GetData方法可以得到图像数据的指针,可以改变图像数据。要把图像二值化就比较复杂了,新建一个二值的Cximage对象,设好宽度高度,取原来的图像数据,如果>0x808080, 把新图的相应位写1,否则写0。注意,二值图形的一个字节存8个象素。如果原图是索引颜色的话,要从调色板中取对应的颜色。
      

  2.   

    不好意思,由于本人的专业水平不高,说出来的话不够准确
    我对二值化的看法是:看起来是“黑”或者“白”
    记得DIB图像二值化的时候,好像将r=g=b=0或者r=g=b=255就可以实现二值化,不知道tif文件中有没有定义r,g,b或c,m,y,k这样的参数,如果已经定义的话,怎样读取这些参数?
      

  3.   

    使用GETPIXELCOLOR和SETPIXELCOLOR方法来获取和设置RGB像素关于图像格式与颜色系统,建议楼主还是找本书看看,基础很重要的说
      

  4.   

    1.根据上面的几个交流回合,觉得6楼的意见很中肯;
    2.图书资料,貌似可以参看<数字图像处理vc++编程>;
    3.二值化方法很多,基本思路在于设定一个参考值,大于这个值为1,否则为0.在获得每个像素后,对每个像素进行这个比较,可以生成其二值图.
    4.tiff格式是彩图的一种,你首先需要变换为灰度图,才能二值化.
      

  5.   


    图像数据的格式很多,cximage 中有两种方法,一是argb实际颜色,就是每一个象素用四个字节表示他的实际颜色,a是透明度,0表示透明,255表示不透明; rgb分别红绿蓝三个颜色分量。你说的“好像将r=g=b=0或者r=g=b=255就可以实现二值化”可以用这种方法。用GetData和其它的方法把颜色数据取出来,进行你说的操作就行了。但是这样有一个问题,太浪费。于是有另外一种图像数据格式,索引颜色。在计算机里面,二值图像是一个标准术语,它是两个颜色的索引图像,不只是黑白,可以是任意两个颜色,还可以有透明度。分两个部分,一是调色板,调色板中有两个颜色,第二部分是图像数据,每个象素只占二进制一位0和1,0表示调色板中的第一个颜色,1表示调色板中的第二个颜色,这样的话,图像数据占的空间只有实际颜色的32分之1就说这么多,不知道说清楚了没有。
      

  6.   

    哈哈,果然是高手
    再请教一个问题,TIFF格式有4种类型,怎样才能知道读入的这个tiff文件是二值的、灰度的、RGB、还是CMYK?
      

  7.   

    感谢您的回答
    我之所以认为二值图像就是黑和白,这都是matlab闹得,以前用matlab将图像转为二值,显示出来的就是黑和白,所以……当然,这些都是次要的