⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 第4章 图象的半影调和抖动技术.htm

📁 介绍了图像的半影调和抖动技术的原理和数学基础.
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0045)http://www-scf.usc.edu/~flv/ipbook/chap04.htm -->
<HTML><HEAD><TITLE>第4章 图象的半影调和抖动技术</TITLE>
<META http-equiv=Content-Type content="text/html; charset=GB2312"><LINK 
href="./chap04.files/editdata.mso" rel=Edit-Time-Data><LINK 
href="./chap04.files/oledata.mso" rel=OLE-Object-Data>
<STYLE>.Normal {
	TEXT-JUSTIFY: inter-ideograph; FONT-SIZE: 10.5pt; TEXT-INDENT: 0pt; LINE-HEIGHT: normal; FONT-FAMILY: "Times New Roman"; TEXT-ALIGN: justify
}
.a {
	FONT-SIZE: 12pt; TEXT-INDENT: 0pt; LINE-HEIGHT: 20pt; FONT-FAMILY: "Times New Roman"; TEXT-ALIGN: center
}
</STYLE>

<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD>
<BODY class=Normal lang=ZH-CN vLink=purple link=blue bgColor=#ffffff>
<DIV style="LAYOUT-GRID:  15.6pt none">
<H1><A name=_Toc486331877></A><A name=_Toc486332877></A><A 
name=_Toc486338986></A><A name=_Toc454810851></A><A 
name=_Toc454856625><SPAN><SPAN>第<SPAN 
lang=EN-US>4</SPAN></SPAN></SPAN></A><SPAN><SPAN><SPAN 
style="FONT-FAMILY: 黑体">章</SPAN> </SPAN></SPAN><SPAN><SPAN><SPAN 
style="FONT-FAMILY: 黑体">图象的半影调和抖动技术</SPAN></SPAN></SPAN></H1>
<P style="LINE-HEIGHT: 18pt"><SPAN 
style="FONT-FAMILY: 宋体">在介绍本章内容之前,先提出一个问题?普通的黑白针式打印机能打出灰度图来吗?如果说能,从针式打印机的打印原理来分析,似乎是不可能的。因为针打是靠撞针击打色带在纸上形成黑点的,不可能打出灰色的点来;如果说不能,可是我们的确见过用针式打印机打印出来的灰色图象。到底是怎么回事呢?</SPAN></P>
<P style="LINE-HEIGHT: 18pt"><SPAN 
style="FONT-FAMILY: 宋体">你再仔细看看那些打印出来的所谓的灰色图象,最好用放大镜看。你会发现,原来这些灰色图象都是由一些黑点组成的,黑点多一些,图象就暗一些;黑点少一些,图案就亮一些。下面这几张图就很能说明这一点。</SPAN></P>
<P style="LINE-HEIGHT: 18pt; TEXT-ALIGN: center" align=center><SPAN 
lang=EN-US><IMG height=56 src="第4章 图象的半影调和抖动技术.files/image001.gif" width=259 
v:shapes="_x0000_i1025"> </SPAN></P>
<P style="LINE-HEIGHT: 18pt; TEXT-ALIGN: center" align=center><B><SPAN 
style="FONT-FAMILY: 宋体">图</SPAN><SPAN lang=EN-US>4.1 </SPAN></B><B><SPAN 
style="FONT-FAMILY: 宋体">用黑白两种颜色打印出灰度效果</SPAN><SPAN lang=EN-US></SPAN></B></P>
<P style="LINE-HEIGHT: 18pt"><SPAN style="FONT-FAMILY: 宋体">图</SPAN><SPAN 
lang=EN-US>4.1</SPAN><SPAN 
style="FONT-FAMILY: 宋体">中最左边的是原图,是一幅真正的灰度图,另外三张图都是黑白二值图。容易看出,最左的那幅和原图最接近。</SPAN></P>
<P style="LINE-HEIGHT: 18pt"><SPAN 
style="FONT-FAMILY: 宋体">由二值图象显示出灰度效果的方法,就是我们今天要讲的半影调</SPAN><SPAN 
lang=EN-US>(halftone)</SPAN><SPAN 
style="FONT-FAMILY: 宋体">技术,它的一个主要用途就是在只有二值输出的打印机上打印图象。我们介绍两种方法:图案法和抖动法。</SPAN></P>
<H2><SPAN lang=EN-US>4.1</SPAN> <SPAN lang=EN-US></SPAN><A 
name=_Toc486331878></A><A name=_Toc486332878></A><A name=_Toc486338987></A><A 
name=_Toc454810852></A><A 
name=_Toc454856626><SPAN><SPAN>图案法</SPAN></SPAN></A></H2>
<P style="LINE-HEIGHT: 18pt"><SPAN style="FONT-FAMILY: 宋体">图案法</SPAN><SPAN 
lang=EN-US>(patterning)</SPAN><SPAN 
style="FONT-FAMILY: 宋体">是指灰度可以用一定比例的黑白点组成的区域表示,从而达到整体图象的灰度感。黑白点的位置选择称为图案化。</SPAN></P>
<P style="LINE-HEIGHT: 18pt"><SPAN 
style="FONT-FAMILY: 宋体">在具体介绍图案法之前,先介绍一下分辨率的概念。计算机显示器,打印机,扫描仪等设备的一个重要指标就是分辨率,单位是</SPAN><SPAN 
lang=EN-US>dpi(dot per inch)</SPAN><SPAN 
style="FONT-FAMILY: 宋体">,即每英寸点数,点数越多,分辨率就越高,图象就越清晰。让我们来计算一下,计算机显示器的分辨率有多高。设显示器为</SPAN><SPAN 
lang=EN-US>15</SPAN><SPAN style="FONT-FAMILY: 宋体">英寸</SPAN><SPAN 
lang=EN-US>(</SPAN><SPAN style="FONT-FAMILY: 宋体">指对角线长度</SPAN><SPAN 
lang=EN-US>)</SPAN><SPAN style="FONT-FAMILY: 宋体">,最多显示</SPAN><SPAN 
lang=EN-US>1280</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>1024</SPAN><SPAN style="FONT-FAMILY: 宋体">个点。因为宽高比为</SPAN><SPAN 
lang=EN-US>4</SPAN><SPAN style="FONT-FAMILY: 宋体">:</SPAN><SPAN 
lang=EN-US>3</SPAN><SPAN style="FONT-FAMILY: 宋体">,所以宽有</SPAN><SPAN 
lang=EN-US>12</SPAN><SPAN style="FONT-FAMILY: 宋体">英寸,高有</SPAN><SPAN 
lang=EN-US>9</SPAN><SPAN style="FONT-FAMILY: 宋体">英寸,则该显示器的水平分辨率为</SPAN><SPAN 
lang=EN-US>106dpi</SPAN><SPAN style="FONT-FAMILY: 宋体">,垂直分辨率为</SPAN><SPAN 
lang=EN-US>113.8dpi</SPAN><SPAN 
style="FONT-FAMILY: 宋体">。一般的激光打印机的分辨率有</SPAN><SPAN lang=EN-US>300dpi</SPAN><SPAN 
style="FONT-FAMILY: 宋体">×</SPAN><SPAN lang=EN-US>300dpi</SPAN><SPAN 
style="FONT-FAMILY: 宋体">,</SPAN><SPAN lang=EN-US>600dpi</SPAN><SPAN 
style="FONT-FAMILY: 宋体">×</SPAN><SPAN lang=EN-US>600dpi</SPAN><SPAN 
style="FONT-FAMILY: 宋体">,</SPAN><SPAN lang=EN-US>720dpi</SPAN><SPAN 
style="FONT-FAMILY: 宋体">×</SPAN><SPAN lang=EN-US>720dpi</SPAN><SPAN 
style="FONT-FAMILY: 宋体">。所以打出来的图象要比计算机显示出来的清晰的多。扫描仪的分辨率要高一些,数码相机的分辨率更高。</SPAN></P>
<P style="LINE-HEIGHT: 18pt"><SPAN 
style="FONT-FAMILY: 宋体">言归正传,前面讲了,图案化使用图案来表示象素的灰度,那么我们来做一道计算题。假设有一幅</SPAN><SPAN 
lang=EN-US>240</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>180</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>8bit</SPAN><SPAN style="FONT-FAMILY: 宋体">的灰度图,当用分辨率为</SPAN><SPAN 
lang=EN-US>300dpi</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>300dpi</SPAN><SPAN style="FONT-FAMILY: 宋体">的激光打印机将其打印到</SPAN><SPAN 
lang=EN-US>12.8</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>9.6</SPAN><SPAN style="FONT-FAMILY: 宋体">英寸的纸上时,每个象素的图案有多大?</SPAN></P>
<P style="LINE-HEIGHT: 18pt"><SPAN 
style="FONT-FAMILY: 宋体">这道题很简单,这张纸最多可以打</SPAN><SPAN lang=EN-US>(300</SPAN><SPAN 
style="FONT-FAMILY: 宋体">×</SPAN><SPAN lang=EN-US>12.8) </SPAN><SPAN 
style="FONT-FAMILY: 宋体">×</SPAN><SPAN lang=EN-US>(300</SPAN><SPAN 
style="FONT-FAMILY: 宋体">×</SPAN><SPAN lang=EN-US>9.6)=3840</SPAN><SPAN 
style="FONT-FAMILY: 宋体">×</SPAN><SPAN lang=EN-US>2880</SPAN><SPAN 
style="FONT-FAMILY: 宋体">个点,所以每个象素可以用</SPAN><SPAN 
lang=EN-US>(3840/240)</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>(2880/180)=16</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>16</SPAN><SPAN style="FONT-FAMILY: 宋体">个点大小的图案来表示,即一个象素</SPAN><SPAN 
lang=EN-US>256</SPAN><SPAN style="FONT-FAMILY: 宋体">个点。如果这</SPAN><SPAN 
lang=EN-US>16</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>16</SPAN><SPAN 
style="FONT-FAMILY: 宋体">的方块中一个黑点也没有,就可以表示灰度</SPAN><SPAN 
lang=EN-US>256</SPAN><SPAN style="FONT-FAMILY: 宋体">;有一个黑点,就表示灰度</SPAN><SPAN 
lang=EN-US>255</SPAN><SPAN style="FONT-FAMILY: 宋体">;依次类推,当都是黑点时,表示灰度</SPAN><SPAN 
lang=EN-US>0</SPAN><SPAN style="FONT-FAMILY: 宋体">。这样,</SPAN><SPAN 
lang=EN-US>16</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>16</SPAN><SPAN style="FONT-FAMILY: 宋体">的方块可以表示</SPAN><SPAN 
lang=EN-US>257</SPAN><SPAN style="FONT-FAMILY: 宋体">级灰度,比要求的</SPAN><SPAN 
lang=EN-US>8bit</SPAN><SPAN style="FONT-FAMILY: 宋体">共</SPAN><SPAN 
lang=EN-US>256</SPAN><SPAN 
style="FONT-FAMILY: 宋体">级灰度还多了一个。所以上面的那幅图的灰度级别完全能够打印出来。</SPAN></P>
<P style="LINE-HEIGHT: 18pt"><SPAN 
style="FONT-FAMILY: 宋体">这里有一个图案构成的问题,即黑点打在哪里?比如说,只有一个黑点时,我们可以打在正中央,也可以打</SPAN><SPAN 
lang=EN-US>16</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>16</SPAN><SPAN 
style="FONT-FAMILY: 宋体">的左上角。图案可以是规则的,也可以是不规则的。一般情况下,有规则的图案比随即图案能够避免点的丛集,但有时会导致图象中有明显的线条。</SPAN></P>
<P style="LINE-HEIGHT: 18pt"><SPAN style="FONT-FAMILY: 宋体">如图</SPAN><SPAN 
lang=EN-US>4.1</SPAN><SPAN style="FONT-FAMILY: 宋体">中,</SPAN><SPAN 
lang=EN-US>2</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>2</SPAN><SPAN style="FONT-FAMILY: 宋体">的图案可以表示</SPAN><SPAN 
lang=EN-US>5</SPAN><SPAN style="FONT-FAMILY: 宋体">级灰度,当图象中有一片灰度为的</SPAN><SPAN 
lang=EN-US>1</SPAN><SPAN style="FONT-FAMILY: 宋体">的区域时,如图</SPAN><SPAN 
lang=EN-US>4.2</SPAN><SPAN style="FONT-FAMILY: 宋体">所示,有明显的水平和垂直线条。</SPAN></P>
<DIV align=center>
<TABLE cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR>
    <TD class=Normal vAlign=bottom width=276>
      <P style="LINE-HEIGHT: 18pt; TEXT-ALIGN: center" align=center><B><SPAN 
      lang=EN-US><IMG height=89 src="第4章 图象的半影调和抖动技术.files/image002.gif" 
      width=316 v:shapes="_x0000_i1027"> </SPAN></B></P>
      <P style="LINE-HEIGHT: 18pt; TEXT-ALIGN: center" align=center><B><SPAN 
      style="FONT-FAMILY: 宋体">图</SPAN>4.2&nbsp;&nbsp;&nbsp;&nbsp; 2</B><B><SPAN 
      style="FONT-FAMILY: 宋体">×</SPAN><SPAN lang=EN-US>2</SPAN></B><B><SPAN 
      style="FONT-FAMILY: 宋体">的图案</SPAN><SPAN lang=EN-US></SPAN></B></P></TD>
    <TD class=Normal vAlign=bottom width=276>
      <P style="LINE-HEIGHT: 18pt; TEXT-ALIGN: center" align=center><B><SPAN 
      lang=EN-US><IMG height=98 src="第4章 图象的半影调和抖动技术.files/image003.gif" 
      width=162 v:shapes="_x0000_i1028"> </SPAN></B></P>
      <P style="LINE-HEIGHT: 18pt; TEXT-ALIGN: center" align=center><B><SPAN 
      style="FONT-FAMILY: 宋体">图</SPAN>4.3&nbsp;&nbsp;&nbsp;&nbsp; </B><B><SPAN 
      style="FONT-FAMILY: 宋体">规则图案导致线条</SPAN><SPAN 
  lang=EN-US></SPAN></B></P></TD></TR></TBODY></TABLE></DIV>
<P style="LINE-HEIGHT: 18pt"><SPAN style="FONT-FAMILY: 宋体">如果想存储</SPAN><SPAN 
lang=EN-US>256</SPAN><SPAN style="FONT-FAMILY: 宋体">级灰度的图案,就需要</SPAN><SPAN 
lang=EN-US>256</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>16</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>16</SPAN><SPAN 
style="FONT-FAMILY: 宋体">的二值点阵,占用的空间还是相当可观的。有一个更好的办法是:只存储一个整数矩阵,称为标准图案,其中的每个值从</SPAN><SPAN 
lang=EN-US>0</SPAN><SPAN style="FONT-FAMILY: 宋体">到</SPAN><SPAN 
lang=EN-US>255</SPAN><SPAN 
style="FONT-FAMILY: 宋体">。图象的实际灰度和阵列中的每个值比较,当该值大于等于灰度时,对应点打一黑点。下面举一个</SPAN><SPAN 
lang=EN-US>25</SPAN><SPAN style="FONT-FAMILY: 宋体">级灰度的例子加以说明。</SPAN></P>
<P class=a style="LINE-HEIGHT: 18pt"><SPAN lang=EN-US><IMG height=124 
src="第4章 图象的半影调和抖动技术.files/image005.jpg" width=285 v:shapes="_x0000_i1029"> 
</SPAN></P>
<P style="LINE-HEIGHT: 18pt; TEXT-ALIGN: center" align=center><B><SPAN 
style="FONT-FAMILY: 宋体">图</SPAN>4.4&nbsp;&nbsp;&nbsp;&nbsp; </B><B><SPAN 
style="FONT-FAMILY: 宋体">标准图案举例</SPAN><SPAN lang=EN-US></SPAN></B></P>
<P style="LINE-HEIGHT: 18pt"><SPAN style="FONT-FAMILY: 宋体">图</SPAN><SPAN 
lang=EN-US>4.4</SPAN><SPAN style="FONT-FAMILY: 宋体">中,左边为标准图案,右边为灰度为</SPAN><SPAN 
lang=EN-US>15</SPAN><SPAN style="FONT-FAMILY: 宋体">的图案,共有</SPAN><SPAN 
lang=EN-US>10</SPAN><SPAN style="FONT-FAMILY: 宋体">个黑点,</SPAN><SPAN 
lang=EN-US>15</SPAN><SPAN style="FONT-FAMILY: 宋体">个白点。其实道理很简单,灰度为</SPAN><SPAN 
lang=EN-US>0</SPAN><SPAN style="FONT-FAMILY: 宋体">时全是黑点,灰度每增加</SPAN><SPAN 
lang=EN-US>1</SPAN><SPAN style="FONT-FAMILY: 宋体">,减少一个黑点。要注意的是,</SPAN><SPAN 
lang=EN-US>5</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>5</SPAN><SPAN style="FONT-FAMILY: 宋体">的图案可以表示</SPAN><SPAN 
lang=EN-US>26</SPAN><SPAN style="FONT-FAMILY: 宋体">种灰度,当灰度是</SPAN><SPAN 
lang=EN-US>25</SPAN><SPAN style="FONT-FAMILY: 宋体">才是全白点,而不是灰度为</SPAN><SPAN 
lang=EN-US>24</SPAN><SPAN style="FONT-FAMILY: 宋体">时。</SPAN></P>
<P style="LINE-HEIGHT: 18pt"><SPAN 
style="FONT-FAMILY: 宋体">下面介绍一种设计标准图案的算法,是由</SPAN><SPAN 
lang=EN-US>Limb</SPAN><SPAN style="FONT-FAMILY: 宋体">在</SPAN><SPAN 
lang=EN-US>1969</SPAN><SPAN style="FONT-FAMILY: 宋体">年提出的。</SPAN></P>
<P style="LINE-HEIGHT: 18pt"><SPAN style="FONT-FAMILY: 宋体">先以一个</SPAN><SPAN 
lang=EN-US>2</SPAN><SPAN style="FONT-FAMILY: 宋体">×</SPAN><SPAN 
lang=EN-US>2</SPAN><SPAN style="FONT-FAMILY: 宋体">的矩阵开始:设</SPAN><SPAN 
lang=EN-US>M<SUB>1</SUB>=<SUB> <IMG height=48 
src="第4章 图象的半影调和抖动技术.files/image007.gif" width=49 v:shapes="_x0000_i1030"> 
</SUB></SPAN><SPAN style="FONT-FAMILY: 宋体">,通过递归关系有</SPAN><SPAN 
lang=EN-US>M<SUB>n+1</SUB>=<SUB> <IMG height=51 
src="第4章 图象的半影调和抖动技术.files/image009.gif" width=181 v:shapes="_x0000_i1031"> 
</SUB></SPAN><SPAN style="FONT-FAMILY: 宋体">,其中</SPAN><SPAN 
lang=EN-US>M<SUB>n</SUB></SPAN><SPAN style="FONT-FAMILY: 宋体">和</SPAN><SPAN 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -