图案法显示灰度图————利用Bayer表来对图像值进行二值显示
来源:互联网 发布:淘宝买家延期收货 编辑:程序博客网 时间:2024/05/22 13:16
图案法是指灰度可以用一定比例的黑白点组成的区域表示,从而达到整体图像的灰度感。黑白点的位置选择成为图案化。
假设打印的时候,有一幅160*120*8bit的灰度图,需要用分辨率为200dpi*200dpi的激光打印机将其打印到128*9.6英寸的纸上。由于这张纸最多可以打(200*12.8)*(200*9.6)=2560*1920个点,所以每个像素可以用256个点大小的图案来表示灰度256.。而16*16的方块可以表示257个灰度级,所以灰度图像可以完全打印出来。
但是有个问题?就是图案构成的问题,即黑点打在哪里?例如,只有一个黑点的时候,我们可以打在中央,也可以打在边上。所以最后用来表示灰度的图案可以使规则的,也可以不是规则的。
现在假设用16*16个二值点来打印一个灰度像素,如果想存储256级灰度的图案的标准模板,就需要256*16*16的二值点阵,占用的空间比较大。一个更好的办法是:只存储一个16*16整数矩阵,成为标准图案,矩阵元素的取值为0~255.像素的实际灰度和阵列中的每一个值进行比较,当该值大于等于灰度时,标准图案中标号大于或等于灰度值额对应点打一黑点。
8*8的标准图案M3比较特殊,称为Bayer抖动表。但是如果用M3抖动表,每一个像素要用8*8的图案进行表示,一幅N*N的图将变成8N*8N大小。如果要在保持原图大小的情况下利用图案化技术,则只需要在所对应的图案中取一点,即重新采样。然后再用图案化技术,就能够保持原图大小。对于M3来说,即在原图中每8*8个点中取一点。但是实际上,这种方法并不可行,因为实际不知道这8*8个点中哪一点比较合适,而且8*8的间隔实在太大,生成的图像和原图肯定相差很大。
采用如下方法可以解决问题:
if((p[y][x]>>2) > bayer[y%8][x%8])
then 显示白点
else显示黑点
p[y][x]代表该点灰度。在显示的时候首先将灰度右移两位,变成64级的,然后将x,y做模8运算,找到bayer表中的对应点,两者作比较,判断当前的像素输出为黑色还是白色。可以看到,模8运算使得原图分成了多个8*8的小块,每个小块和8*8的Bayer表相对应。小块中的每一个点都参与了比较,这样就避免了上面提到的划分过大的问题和选点的问题。
- 图案法显示灰度图————利用Bayer表来对图像值进行二值显示
- opencv学习笔记2——载入,显示,复制,旋转,保存图像及灰度图
- 根据灰度值矩阵显示图像
- 改变图像的灰度值后显示图像
- Flash显示灰度图像
- opencv—显示图像
- matlab—图像显示
- 用三种不同的方法对图像进行灰度插值
- 图像处理Matlab(一)——图像灰度值
- ASCII Art—使用纯文本来显示图像:综述
- android 使用NDK进行图像处理(openCV)时的图像转换问题(灰度图显示)
- opencv读取图像的灰度值并显示出来
- 利用种子填充法对二值图像进行连通域标记
- 彩色图像、灰度图像、二值图像
- 百度地图API应用之——利用定位SDK和地图SDK来进行定位和显示当前位置
- 利用Python-caffe进行图像分类,卷积核的显示,激活值特征图的显示以及全连接层直方图显示
- 图像处理—灰度处理
- 图像增强—灰度拉伸
- 转:wait, sleep, suspend in jsp/javascript
- 转:Javascript弹出子窗口
- 定制进度条图像
- 转:jsp调用长时间运行java 程序,如何防止浏览器超时断连
- 信息加密试验(基于C的一个简单的对称加密算法实现)
- 图案法显示灰度图————利用Bayer表来对图像值进行二值显示
- 转:关于Endnote使用中的问题
- 转:使用 python 开发 Web Service
- 写算法的时候的心态。
- 转:Windows Live Writer 支持的博客
- 内存中html源码用IHTMLDocument2进行DOM方式解析
- 转:ENDNOTE教程
- 导出 delphi 的dll 函数名,没有参数,先记下,下次再来研究.
- TCP/IP协议族简介 — TCP/IP协议栈之UDP协议