首页 > 编程知识 正文

像抖动技术原理,像抖动算法

时间:2023-05-06 17:44:52 阅读:253392 作者:2960

“抖动”是印刷行业和出版业中常用的一种工艺,老式的针式打印机只能打印出来黑点和白点,可是黑白图片是有灰度级的,那么如何打印出来图片呢?“抖动”由此而生,抖动试图通过在白色背景上生成黑色的二值图像来给出色调变化的直观印象,可以假想一下,黑点越密,那么远距离观察就越黑,如何控制黑点的分布就是“抖动”算法的核心,在此就不再讨论,在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);

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。