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

📄 chap08.htm

📁 数字图像处理入门. 一位图像处理高手写的书. 从图像处理的最基础开始,然后慢慢以一些例子做说明,进入图像处理的更高阶段.学习图像处理不可多得的比较朴实的书
💻 HTM
📖 第 1 页 / 共 4 页
字号:
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>_lclose(hf);</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//<span
style='font-family:宋体;"Times New Roman"'>释放内存和资源</span></p>
  <p style='line-height:18.0pt'><span>&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp; ReleaseDC(hWnd,hDc);</p>  
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>LocalUnlock(hTempImgData);</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>LocalFree(hTempImgData);</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>GlobalUnlock(hImgData);</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return   
    TRUE;</p>
  <p style='line-height:18.0pt'><span lang=EN-US>}</span></p>
  <h2> <span
lang=EN-US>8.2</span> <span lang=EN-US> </span><a name="_Toc486331905"></a><a  
name="_Toc486332905"></a><a name="_Toc486339014"></a><a name="_Toc454810879"></a><a
name="_Toc454856653"><span><span>差影法</span></span></a></h2>
  <p style='line-height:18.0pt'><span style='font-family:宋体;
&quot;Times New Roman&quot;'>差影法的原理非常简单:将前后两幅图象相减,得到的差作为结果结果图象。图</span><span
lang=EN-US>8.6</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>、图</span><span lang=EN-US>8.7</span><span
style='font-family:宋体;"Times New Roman"'>、图</span><span lang=EN-US>8.8</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>能够说明差影法的原理。</span></p>
  <table border=0 cellspacing=0 cellpadding=0>
    <tr> 
      <td width=184 valign=top class="Normal"> 
        <p style='line-height:18.0pt'><span lang=EN-US> <img width=184 height=148
  src="chap08.files/image011.jpg"  v:shapes="_x0000_i1030"> </span></p>
        <p align=center style='text-align:center;line-height:18.0pt'><b><span
  style='font-family:宋体;"Times New Roman"'>图</span>8.6&nbsp;&nbsp;&nbsp;&nbsp;   
          </b><b><span style='font-family:
  宋体;&quot;Times New Roman&quot;'>前景</span><span
  lang=EN-US>+</span></b><b><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>背景</span><span
  lang=EN-US></span></b></p>
      </td>
      <td width=184 valign=top class="Normal"> 
        <p style='line-height:18.0pt'><span lang=EN-US> <img width=186 height=150
  src="chap08.files/image013.jpg"  v:shapes="_x0000_i1031"> </span></p>
        <p align=center style='text-align:center;line-height:18.0pt'><b><span
  style='font-family:宋体;"Times New Roman"'>图</span>8.7&nbsp;&nbsp;&nbsp;&nbsp;   
          </b><b><span style='font-family:
  宋体;&quot;Times New Roman&quot;'>背景</span><span
  lang=EN-US></span></b></p>
      </td>
      <td width=184 valign=top class="Normal"> 
        <p style='line-height:18.0pt'><span lang=EN-US> <img width=186 height=150
  src="chap08.files/image015.jpg"  v:shapes="_x0000_i1032"> </span></p>
        <p align=center style='text-align:center;line-height:18.0pt'><b><span
  style='font-family:宋体;"Times New Roman"'>图</span><span lang=EN-US>8.8 </span></b><b><span  
  style='font-family:宋体;"Times New Roman"'>图</span><span lang=EN-US>8.6</span></b><b><span
  style='font-family:宋体;"Times New Roman"'>、图</span><span lang=EN-US>8.7</span></b></p>
        <p align=center style='text-align:center;line-height:18.0pt'><b><span
  style='font-family:宋体;"Times New Roman"'>相减的结果</span></b></p>
      </td>
    </tr>
  </table>
  <p style='line-height:18.0pt'><span style='font-family:宋体;
&quot;Times New Roman&quot;'>图</span><span
lang=EN-US>8.6</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>)</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>加背景图</span><span
lang=EN-US>(</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>8.7</span><span style='font-family:
宋体;&quot;Times New Roman&quot;'>是背景图。图</span><span
lang=EN-US>8.6</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>减图</span><span lang=EN-US>8.7</span><span
style='font-family:宋体;"Times New Roman"'>的结果如图</span><span lang=EN-US>8.8</span><span
style='font-family:宋体;"Times New Roman"'>所示,这样就得到了前景</span><span lang=EN-US>(</span><span
style='font-family:宋体;"Times New Roman"'>不完全是前景,因为背景的灰度值并不为零,但至少可以得到前景的形状</span><span lang=EN-US>)</span><span
style='font-family:宋体;"Times New Roman"'>。</span></p>
  <p style='line-height:18.0pt'><span style='font-family:宋体;
&quot;Times New Roman&quot;'>差影法是非常有用的,比如说可以用在监控系统中。在银行金库内,摄像头每隔一小段时间,拍摄一幅图,与上一幅图做差影;如果差别超过了预先设置的阈值,说明有人,这时就应该拉响警报。</span></p>
  <p style='line-height:18.0pt'><span style='font-family:宋体;
&quot;Times New Roman&quot;'>我们在介绍灰度窗口变换时,曾经提到了电影“阿甘正传”特技中应用了“蓝幕”技术,其实也包含了差影法的原理。</span></p>
  <p style='line-height:18.0pt'><span style='font-family:宋体;
&quot;Times New Roman&quot;'>以下是差影法的源程序。要注意的是,第一幅图的文件名为</span><span
lang=EN-US>c:\test.bmp</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>,第二幅图的文件名是</span><span
lang=EN-US>c:\backgnd.bmp</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>。它们有着相同的灰度值和调色板。执行时,这两个文件都已经准备好。我们针对的虽然是二值图,但为了处理的方便,用的是</span><span
lang=EN-US>256</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>级灰度图,不过只用到了</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'><span lang=EN-US>BOOL Subtraction(HWND hWnd)</span></p>  
  <p style='line-height:18.0pt'><span lang=EN-US>{</span></p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
    OffBits,BufSize;</p>
  <p style='line-height:18.0pt'>LPBITMAPINFOHEADER&nbsp;&nbsp;&nbsp; lpImgData;</p>  
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>LPSTR&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;   
    lpPtr;</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>HGLOBAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hSecond;</p>  
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>LPBITMAPINFOHEADER&nbsp;&nbsp;&nbsp;   
    lpSecondImgData;</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>LPSTR&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;   
    lpSecondPtr;</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>HLOCAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hTempImgData;</p>  
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>LPBITMAPINFOHEADER&nbsp;&nbsp;&nbsp;   
    lpTempImgData;</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>LPSTR&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;   
    lpTempPtr;</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>HDC&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;   
    hDc;</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>HFILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hf;</p>  
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>LONG&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; x,y;</p>  
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int&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; num,pos;</p>  
  <p style='line-height:18.0pt'><span
lang=EN-US>//</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>用的是</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'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(   
    NumColors!=256){</p>
  <p style='line-height:
18.0pt'><span lang=EN-US>MessageBox(hWnd,&quot;Must be a mono bitmap with grayscale 
    palette!&quot;,</span></p>
  <p style='line-height:
18.0pt'><span lang=EN-US>&quot;Error Message&quot;,MB_OK|MB_ICONEXCLAMATION);</span></p>
  <p style='line-height:
18.0pt'><span lang=EN-US>return FALSE;</span></p>
  <p style='line-height:18.0pt'><span
lang=EN-US>}</span></p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp; </span>&nbsp; if((hf=_lopen(&quot;c:\\backgnd.bmp&quot;,OF_READ))==HFILE_ERROR){   
  </p>
  <p style='line-height:
18.0pt'><span lang=EN-US>//</span><span style='font-family:宋体;"Times New Roman";"Times New Roman"'>背景图没找到</span></p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;&nbsp;&nbsp;&nbsp;   
    MessageBox(hWnd,&quot;File c:\\backgnd.bmp not found!&quot;,&quot;Error Message&quot;,</p>  
  <p style='line-height:
18.0pt'><span lang=EN-US>MB_OK|MB_ICONEXCLAMATION);</span></p>
  <p style='line-height:
18.0pt'><span lang=EN-US>return FALSE;</span></p>
  <p style='line-height:18.0pt'><span
lang=EN-US>}</span></p>
  <p style='line-height:18.0pt'><span
lang=EN-US>//</span><span style='font-family:宋体;
&quot;Times New Roman&quot;'>到位图数据的偏移值</span></p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>OffBits=bf.bfOffBits-sizeof(BITMAPFILEHEADER);</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//<span
style='font-family:宋体;"Times New Roman"'>缓冲区大小</span></p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>BufSize=OffBits+bi.biHeight*LineBytes;</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//<span
style='font-family:宋体;"Times New Roman"'>为背景图的数据分配内存</span></p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if((hSecond=GlobalAlloc(GHND,BufSize))==NULL)</p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp; </span>&nbsp; {</p>  
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MessageBox(hWnd,&quot;Error   
    alloc memory!&quot;,&quot;Error Message&quot;,</p>  
  <p style='line-height:
18.0pt'><span lang=EN-US>MB_OK|MB_ICONEXCLAMATION);</span></p>
  <p style='line-height:18.0pt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    </span>_lclose(hf);</p>

⌨️ 快捷键说明

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