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

📄 chap04.htm

📁 数字图像处理入门. 一位图像处理高手写的书. 从图像处理的最基础开始,然后慢慢以一些例子做说明,进入图像处理的更高阶段.学习图像处理不可多得的比较朴实的书
💻 HTM
📖 第 1 页 / 共 5 页
字号:
&quot;Times New Roman&quot;'>到</span><span lang=EN-US>255</span><span
style='font-family:宋体;"Times New Roman"'>。图象的实际灰度和阵列中的每个值比较,当该值大于等于灰度时,对应点打一黑点。下面举一个</span><span
lang=EN-US>25</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>级灰度的例子加以说明。</span></p>
  <p class=a style='line-height:18.0pt'><span lang=EN-US> <img width=285 height=124
src="chap04.files/image005.jpg"  v:shapes="_x0000_i1029"> </span></p>
  <p align=center style='text-align:center;line-height:18.0pt'><b><span
style='font-family:宋体;"Times New Roman"'>图</span>4.4&nbsp;&nbsp;&nbsp;&nbsp; </b><b><span  
style='font-family:宋体;"Times New Roman"'>标准图案举例</span><span lang=EN-US></span></b></p>
  <p style='line-height:18.0pt'><span
style='font-family:宋体;"Times New Roman"'>图</span><span lang=EN-US>4.4</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>中,左边为标准图案,右边为灰度为</span><span
lang=EN-US>15</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>的图案,共有</span><span lang=EN-US>10</span><span
style='font-family:宋体;"Times New Roman"'>个黑点,</span><span lang=EN-US>15</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>个白点。其实道理很简单,灰度为</span><span
lang=EN-US>0</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>时全是黑点,灰度每增加</span><span lang=EN-US>1</span><span
style='font-family:宋体;"Times New Roman"'>,减少一个黑点。要注意的是,</span><span lang=EN-US>5</span><span
style='font-family:宋体;"Times New Roman"'>×</span><span lang=EN-US>5</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>的图案可以表示</span><span
lang=EN-US>26</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>种灰度,当灰度是</span><span lang=EN-US>25</span><span
style='font-family:宋体;"Times New Roman"'>才是全白点,而不是灰度为</span><span lang=EN-US>24</span><span
style='font-family:宋体;"Times New Roman"'>时。</span></p>
  <p style='line-height:18.0pt'><span
style='font-family:宋体;"Times New Roman"'>下面介绍一种设计标准图案的算法,是由</span><span lang=EN-US>Limb</span><span
style='font-family:宋体;"Times New Roman"'>在</span><span lang=EN-US>1969</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>年提出的。</span></p>
  <p style='line-height:18.0pt'><span
style='font-family:宋体;"Times New Roman"'>先以一个</span><span lang=EN-US>2</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>×</span><span
lang=EN-US>2</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>的矩阵开始:设</span><span lang=EN-US>M<sub>1</sub>=<sub> 
    <img width=49 height=48
src="chap04.files/image007.gif"  v:shapes="_x0000_i1030"> </sub> </span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>,通过递归关系有</span><span
lang=EN-US>M<sub>n+1</sub>=<sub> <img width=181 height=51
src="chap04.files/image009.gif"  v:shapes="_x0000_i1031"> </sub> </span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>,其中</span><span
lang=EN-US>M<sub>n</sub></span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>和</span><span
lang=EN-US>U<sub>n</sub></span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>均为</span><span
lang=EN-US>2<sup>n</sup></span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>×</span><span
lang=EN-US>2<sup>n</sup></span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>的方阵,</span><span
lang=EN-US>U<sub>n</sub></span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>的所有元素都是</span><span
lang=EN-US>1</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>。根据这个算法,可以得到</span><span lang=EN-US>M<sub>2</sub>=<sub> 
    <img width=120 height=96
src="chap04.files/image011.gif"  v:shapes="_x0000_i1032"> </sub> </span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>,为</span><span
lang=EN-US>16</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>级灰度的标准图案。</span></p>
  <p style='line-height:18.0pt'><span
lang=EN-US>M<sub>3</sub>(8</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>×</span><span
lang=EN-US>8</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>阵</span><span lang=EN-US>)</span><span
style='font-family:宋体;"Times New Roman"'>比较特殊,称为</span><span lang=EN-US>Bayer</span><span
style='font-family:宋体;"Times New Roman"'>抖动表。</span><span lang=EN-US>M<sub>4</sub></span><span
style='font-family:宋体;"Times New Roman"'>是一个</span><span lang=EN-US>16</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>×</span><span
lang=EN-US>16</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>的矩阵。</span></p>
  <p style='line-height:18.0pt'><span
style='font-family:宋体;"Times New Roman"'>根据上面的算法,如果利用</span><span lang=EN-US>M<sub>3</sub></span><span
style='font-family:宋体;"Times New Roman"'>一个象素要用</span><span lang=EN-US>8</span><span
style='font-family:宋体;"Times New Roman"'>×</span><span lang=EN-US>8</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>的图案表示,则一幅</span><span
lang=EN-US>N</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>×</span><span lang=EN-US>N</span><span
style='font-family:宋体;"Times New Roman"'>的图将变成</span><span lang=EN-US>8N</span><span
style='font-family:宋体;"Times New Roman"'>×</span><span lang=EN-US>8N</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>大小。如果利用</span><span
lang=EN-US>M<sub>4</sub></span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>,就更不得了,变成</span><span
lang=EN-US>16N</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>×</span><span lang=EN-US>16N</span><span
style='font-family:宋体;"Times New Roman"'>了。能不能在保持原图大小的情况下利用图案化技术呢?一种很自然的想法是:如果用</span><span
lang=EN-US>M<sub>2</sub></span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>阵,则将原图中每</span><span
lang=EN-US>8</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>×</span><span lang=EN-US>8</span><span
style='font-family:宋体;"Times New Roman"'>个点中取一点,即重新采样,然后再应用图案化技术,就能够保持原图大小。实际上,这种方法并不可行。首先,你不知道这</span><span
lang=EN-US>8</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>×</span><span lang=EN-US>8</span><span
style='font-family:宋体;"Times New Roman"'>个点中找哪一点比较合适,另外,</span><span lang=EN-US>8</span><span
style='font-family:宋体;"Times New Roman"'>×</span><span lang=EN-US>8</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>的间隔实在太大了,生成的图象和原图肯定相差很大,就象图</span><span
lang=EN-US>4.1</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>最右边的那幅图一样。</span></p>
  <p style='line-height:18.0pt'><span
style='font-family:宋体;"Times New Roman"'>我们可以采用这样的做法:假设原图是</span><span lang=EN-US>256</span><span
style='font-family:宋体;"Times New Roman"'>级灰度,利用</span><span lang=EN-US>Bayer</span><span
style='font-family:宋体;"Times New Roman"'>抖动表,做如下处理</span></p>
  <p align=center style='text-align:center;line-height:18.0pt'><span
lang=EN-US>if (g[y][x]&gt;&gt;2) &gt; bayer[y&amp;7][x&amp;7] then </span><span  
style='font-family:宋体;"Times New Roman"'>打一白点</span><span lang=EN-US> else </span><span  
style='font-family:宋体;"Times New Roman"'>打一黑点</span></p>
  <p style='line-height:18.0pt'><span
style='font-family:宋体;"Times New Roman"'>其中,</span><span lang=EN-US>x,y</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>代表原图的象素坐标,</span><span
lang=EN-US>g[y][x]</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>代表该点灰度。首先将灰度右移两位,变成</span><span
lang=EN-US>64</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>级,然后将</span><span lang=EN-US>x</span><span
style='font-family:宋体;"Times New Roman"'>,</span><span lang=EN-US>y</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>做模</span><span
lang=EN-US>8</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>运算,找到</span><span lang=EN-US>Bayer</span><span
style='font-family:宋体;"Times New Roman"'>表中的对应点,两者做比较,根据上面给出的判据做处理。</span></p>
  <p style='line-height:18.0pt'><span
style='font-family:宋体;"Times New Roman"'>我们可以看到,模</span><span lang=EN-US>8</span><span
style='font-family:宋体;"Times New Roman"'>运算使得原图分成了一个个</span><span lang=EN-US>8</span><span
style='font-family:宋体;"Times New Roman"'>×</span><span lang=EN-US>8</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>的小块,每个小块和</span><span
lang=EN-US>8</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>×</span><span lang=EN-US>8</span><span
style='font-family:宋体;"Times New Roman"'>的</span><span lang=EN-US>Bayer</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>表相对应。小块中的每个点都参与了比较,这样就避免了上面提到的选点和块划分过大的问题。模</span><span
lang=EN-US>8</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>运算实质上是引入了随机成分,这就是我们下面要讲到的抖动技术。</span></p>
  <p style='line-height:18.0pt'><span
style='font-family:宋体;"Times New Roman"'>图</span><span lang=EN-US>4.5</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>就是利用了这个算法,使用</span><span
lang=EN-US>M<sub>3</sub>(Bayer</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>抖动表</span><span
lang=EN-US>)</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>阵得到的;图</span><span lang=EN-US>6</span><span
style='font-family:宋体;"Times New Roman"'>是使用</span><span lang=EN-US>M<sub>4</sub></span><span
style='font-family:宋体;"Times New Roman"'>阵得到的,可见两者的差别并不是很大,所以一般用</span><span lang=EN-US>Bayer</span><span
style='font-family:宋体;"Times New Roman"'>表就可以了。</span></p>
  <p align=center style='text-align:center;line-height:18.0pt'><span
lang=EN-US> <img width=409 height=259
src="chap04.files/image012.gif"  v:shapes="_x0000_i1033"> </span></p>
  <p align=center style='text-align:center;line-height:18.0pt'><b><span
style='font-family:宋体;"Times New Roman"'>图</span>4.5&nbsp;&nbsp;&nbsp;&nbsp; </b><b><span  
style='font-family:宋体;"Times New Roman"'>利用</span><span lang=EN-US>M3</span></b><b><span
style='font-family:宋体;"Times New Roman"'>抖动生成的图</span><span lang=EN-US></span></b></p>
  <p align=center style='text-align:center;line-height:18.0pt'><b><span
lang=EN-US> <img width=409 height=259
src="chap04.files/image013.gif"  v:shapes="_x0000_i1034"> </span></b></p>
  <p align=center style='text-align:center;line-height:18.0pt'><b><span
style='font-family:宋体;"Times New Roman"'>图</span>4.6&nbsp;&nbsp;&nbsp;&nbsp; </b><b><span  
style='font-family:宋体;"Times New Roman"'>利用</span><span lang=EN-US>M4</span></b><b><span
style='font-family:宋体;"Times New Roman"'>抖动生成的图</span><span lang=EN-US></span></b></p>
  <p style='line-height:18.0pt'><span
style='font-family:宋体;"Times New Roman"'>下面是算法的源程序,是针对</span><span lang=EN-US>Bayer</span><span
style='font-family:宋体;"Times New Roman"'>表的。因为它是个常用的表,我们不再利用</span><span lang=EN-US>Limb</span><span
style='font-family:宋体;"Times New Roman"'>公式,而是直接给出。针对</span><span lang=EN-US>M<sub>4</sub></span><span
style='font-family:宋体;"Times New Roman"'>阵的算法是类似的,不同的地方在于,要用</span><span lang=EN-US>Limb</span><span
style='font-family:宋体;"Times New Roman"'>公式得到</span><span lang=EN-US>M<sub>4</sub></span><span
style='font-family:宋体;"Times New Roman"'>阵,灰度也不用右移</span><span lang=EN-US>2</span><span
style='font-family:宋体;"Times New Roman"'>位。要注意的是,为了处理的方便,我们的结果图仍采用</span><span lang=EN-US>256</span><span
style='font-family:宋体;"Times New Roman"'>级灰度图,不过只用到了</span><span lang=EN-US>0</span><span
style='font-family:宋体;"Times New Roman"'>和</span><span lang=EN-US>255</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>两种灰度。</span></p>
  <p style='line-height:18.0pt'>BYTE BayerPattern[8][8]={&nbsp; 0,32,8,40,2,34,10,42,</p>  
  <p style='line-height:
18.0pt'><span lang=EN-US>48,16,56,24,50,18,58,26,</span></p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
    12,44,4,36,14,46,6,38,</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
    60,28,52,20,62,30,54,22,</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
    3,35,11,43,1,33,9,41,</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
    51,19,59,27,49,17,57,25,</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

⌨️ 快捷键说明

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