图像“抖动”原理

 转载自博主:NWSUAF_LiuZhenHua,博客地址:https://blog.csdn.net/wzz110011/article/details/78170516?biz_id=102&utm_term=%E5%8A%A8%E5%9B%BE%E6%8A%96%E5%8A%A8&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-0-78170516&spm=1018.2118.3001.4187


“抖动”是印刷行业和出版业中常用的一种工艺,老式的针式打印机只能打印出来黑点和白点,可是黑白图片是有灰度级的,那么如何打印出来图片呢?“抖动”由此而生,抖动试图通过在白色背景上生成黑色的二值图像来给出色调变化的直观印象,可以假想一下,黑点越密,那么远距离观察就越黑,如何控制黑点的分布就是“抖动”算法的核心,在此就不再讨论,在matlab中通过函数dither()可以将灰度图像或者彩色图像经抖动处理生成二值(binary images)图像。下面我用matlab直观显示一下:

首先,打开一幅灰度图像

close all;
clear all;
clc;
a = imread('wzz.jpg');
a_gray = rgb2gray(a);
figure,imshow(a_gray);

经抖动处理转变为二值图像:

bw = dither(a_gray);
figure,imshow(bw);


由此我们可以看到,虽然该图像为二值图像,但是轮廓依然可以显现出来,但是“可远观而不可亵玩焉”。

“抖动”技术之所以会成为印刷业和出版业中的主要方法,特别是在纸张质量和印刷分辨率不高的情况下(如报纸的印刷),该方法是可行的。

再拓展一下,我们仅仅用了两个灰度级(0和1)就能够显示灰度变化,那么如果我们的灰度级更多,例如4个,或许可以显示出灰度变化更好的图像,因此基于这种原理,可以在保持图像的质量上,压缩图像的灰度级。这样更加利于图像在计算机中保存,或者其他的用途。有时间以后再做研究。

以下展示8个颜色级下抖动处理的效果:

首先读入一张彩色图像:


                                       

利于[X,map] = rgb2ind(rgb_image,n,dither_option)将上面的图片转变为8中颜色:

[X1 ,map1] = rgb2ind(a,8,'nodither');
figure,imshow(X1,map1);


可以看出来,当图片的颜色数变少之后,彩色图片变得有点像油画,出现的“伪轮廓”,下面我们依然采用8中颜色,但是进行抖动处理。

[X2,map2] = rgb2ind(a,8,'dither');
figure,imshow(X2,map2);


这次我们看到,经过抖动处理之后,图像出现的好多小点点,伪轮廓明显变少,图像有点模糊,但是视觉上的效果要优于没有抖动处理的。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值