微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 图像处理----图像二值化

图像处理----图像二值化

时间:10-02 整理:3721RD 点击:

    一、何为图像二值化
    图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。

    二、实现方式
    在上一篇【创龙TMS320C6748开发板试用】图像处理----图像灰度化处理中我们已经有将RGB图像转换为灰度的方式了。在这基础上,我们将灰度化后的图片数据区的每个像素点与我们选取的阀值做比较,大于阀值为255,小于阀值为0.
    所以,二值化的难点就在于阀值的选取。关于阀值的选取方法以后再说。这里我们看下创龙的例子。在Threshold工程中,关键算法如下:
   

  1.         for (i = 0; i imgBuf +
  2.                                 i*lineByte + j) info.biXPelsPermeter;//newBmpWidth;                        // 位图水平分辨率
  3.         newm.info.biYPelsPermeter = m->info.biYPelsPermeter;//newBmpHeight;                        // 位图垂直分辨率

复制代码

  PS:目前在公司用VS测试了下,改了后,生成的图像正常了:请看:


欢迎大家讨论。


2015.12.16 更新感谢@电子微创意 的提醒
创龙官方例程中最后生成的Out.bmp在Windows中用Windows图片查看器显示异常,但是用画图打开显示是正常的。
经过多方查找资料,这里给大家解释下:

    首先,bmp格式图片的结构中有biWidth,biHeight,biXPelsPermeter,biYPelsPermeter这四个属性。
其中biWidth,biHeight是bmp图片的实际宽度与实际高度,两者相乘即为图片实际像素点数目。
    而biXPelsPermeter,biYPelsPermeter这两个参数是 位图水平/垂直分辨率,每米像素数。这两个参数是给显示器打印机的参数,并不会影响到图片实际的内容。只对屏幕显示时的尺寸有影响。经查证,这个两参数在windows一般是设为3780的。而且,一些图片处理软件并不会理会图片自身的biXPelsPermeter和biYPelsPermeter参数,而是会设置成自己的特定值。
    下面我们说说为什么创龙例程中生成Out.bmp图片在Windows图片查看器中显示异常。创龙Threshold例程中的原始图片TL_C6748_Gray.bmp,该图片的biXPelsPermeter和biYPelsPermeter是0.而在二值化处理时,处理后的图片的这两个参数被强制指定为图片自身的高度与宽度(大于0而小于3780)。所以导致,生成的图片在windows图片查看器下显示异常了。这从侧面印证了一件事,即Windows图片查看在图片biXPelsPermeter,biYPelsPermeter参数为0时,使用系统默认值;在这两个参数大于0时使用图片自身的参数值。而画图软件则不采用图片自身参数值,强制使用系统默认值。
   
结论:
1.在图像处理时,如无特殊需求。建议使用原图片的参数值。
2.Windows下biXPelsPermeter,biYPelsPermeter参数值默认是3780

细心验证,赞一个

这也能发现,好仔细的攻城狮   赞一个

。。

欢迎顶帖啊

正好要用上这个算法

刚开始我也以为是程序出问题了,有一次一不小心用画图工具打开发现图像比例像素都正常,随后我也将图像上传到美图秀秀上发现也是正常的,所以我就以为是Windows照片查看器对图片缩放造成的假。上图为证。期待高手正解!




小编的这个帖子标题不合规范,所以没有统计上。你可以修改一下标题。

OK。少了一个中括号,现在好了吧?

感谢提醒,已在帖子内容中作出解释。

顺便申精,

学习了
多谢。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top