转换成黑白图像很简单,你根据自己的要求判断每个彩色像素点的rgb值在哪些范围内的变成黑点,其他变成白点,重新拼成一个单色位图就行了。细致一点,你可以先将彩色位图先转换成单色灰度图像,再用单色纹样点阵代替不同灰度的像素点,这样就比较形象一些。

解决方案 »

  1.   

    如果要做简单的图像识别,直接设定并判断像素的rgb值的范围最简单。用单色点阵抖动来代替灰度像素可以得到较逼真的效果。当然抖动还有很多优化方法。
      

  2.   

    用了公式
    int final = (int)(.299 * (double)r) + (.587 * (double)g) + (.114 * (double)b));
    但是结果出来后模糊的很,不知所谓的阀值设多少才好,我已试过n个了
      

  3.   

    从一幅图中,按一定规则划分出感兴趣的部分或区域称为分割。基本思想是使像素值小于指定阈值的像素转换成黑(白)像素[2]。像素值等于或大于指定阈值的像素换成白(黑)像素,在这里,我们对上面放大后的图像进行分割,就是要得到血管和背景的二值图像。图像二值化的方法很多,有阈值法[3]、FCM2D法[4]等,本文根据文献中有关广义模糊集的定义,提出了一种快速高效的分割方法。其过程如下:
      一个灰度级为 L的 M×N的二维灰度图像,可以看作是一个广义模糊单敦构成的阵列,其中每个元素的广义隶属函数的绝对值表示相对于最大亮度L-1的亮度程度[5],故可记为:
      其广义性质域的值P={Pij}为:
      其中Xmax为最大灰度级,i=1,2,...,M ,j=1,2,...,N, D为可调参数,
    应用下面公式,经多次循环操作(10次左右),将P′={P′ij}映射为普通性质集P'={P'ij}:
      

  4.   

    你的灰度转换公式中的系数一般的图像处理书很容易找到,是根据r,g,b分量对人眼感受的亮度的贡献来的标准处理方式。但是肯定有信息损失,一个亮度为(1/.299)的红色点与一个亮度为(1/.587)的绿色点转换出来就是相同的灰度。彩色图像中太多这样的点可以看,转换出来就没什么信息了。这时只有不按人的习惯系数去转换了。
      

  5.   

    to z_sky:
    其实我的图象中只有黑白文字,我试过直接将r=0、g=0、b=0转成黑色,将r=255、g=255、b=255转成白色,但好象形成的图象还是看不出原来的文字!
      

  6.   

    to z_sky:
    图象是白底黑字,没有其他颜色。
    转换的结果很模糊,有一些笔画变形了。
      

  7.   

    已经搞定,原来是我把RGB值取错了