1. 程式人生 > >數字影象處理:第一章 概述

數字影象處理:第一章 概述

第一章 概述

數字圖象處理是一門關於如何用計算機對圖象進行處理的學科,本課程主要講解基本原理和方法,針對計算機系的學生,強調程式設計實踐和建立圖象處理應用系統的方法。推薦的教材與圖象程式設計參考書包括:

  1. R.C. Gonzalez, R.E. Woods,Digital Image Processing, (影印) 電子工業出版社& Prentice Hall,2002.
  2. R.C. Gonzalez, R.E. Woods, (阮秋琦、阮宇智等譯),數字影象處理,第二版,電子工業出版社& Prentice Hall, 2003.
  3. K. R. Castleman, Digital Image Processing, (影印) 清華大學出版社& Prentice Hall,1998.
  4. K. R. Castleman, (朱志剛、林學閆、石定機等譯), 數字圖象處理,電子工業出版社& Prentice Hall, 1998.
  5. M. Sonka, V. Hlavac, and R. Boyle, Image processing, analysis, and machine vision, Chapman & Hall Computing, London, 2nd Edition, Brooks/Cole Publishing, 2002. (影印) 影象處理、分析與機器視覺,人民郵電出版社
  6. M. Sonka, V. Hlavac, and R. Boyle, (艾海舟、武勃 等譯), 影象處理、分析與機器視覺,人民郵電出版社, 2003.9。
  7. 章毓晉,圖象工程 上冊 圖象處理和分析,清華大學出版社, 1999
  8. 崔屹,數字圖象處理技術與應用,電子工業出版社,1997.3
  9. 呂風軍,數字圖象處理程式設計入門,清華大學出版社,1999.9
  10. 周長發,精通Visual C++影象程式設計,電子工業出版社,2000.1
  11. 郎銳,數字影象處理學Visual C++實現,北京希望電子出版社,2002.12

最近出版的新書:

  1. 章毓晉,圖象工程,第二版,清華大學出版社, 2007.5

目錄

作業

1. 什麼是數字圖象?

數字圖象是指由被稱作象素的小塊區域組成的二維矩陣。對於單色即灰度圖象而言,每個象素的亮度用一個數值來表示,通常數值範圍在0到255之間,即可用一個位元組來表示,0表示黑、255表示白,而其它表示灰度。如下圖所示:

    

圖1.1 灰度圖象(128x128)及其對應的數值矩陣(僅列出一部分(26x31))

彩色圖象可以用紅、綠、藍三元組的二維矩陣來表示。通常,三元組的每個數值也是在0到255之間,0表示相應的基色在該象素中沒有,而255則代表相應的基色在該象素中取得最大值,這種情況下每個象素可用三個位元組來表示。

    

圖1.2 彩色圖象(128x128)及其對應的數值矩陣(僅列出一部分(25x31))

數字圖象是對二維連續光函式進行等距離矩形網格取樣,再對幅度進行等間隔量化得到的二維資料矩陣。取樣是測量每個象素值而量化是將該值數字化的過程。

數字圖象在本質上是二維訊號,因此訊號處理(以一維訊號為物件展開的課程)中的基本技術(如FFT)可以用在數字圖象處理中。但是,由於數字圖象只是一種非常特殊的二維訊號,反映場景的視覺屬性,只是二維連續訊號的非常稀疏的取樣,希望從單個或少量取樣中獲得有意義的描述或特徵,無法照搬一維訊號處理的方法,需要專門的技術。實際上數字圖象處理更多地依賴於具體應用問題,是一系列的特殊技術的彙集,缺乏貫穿始終的嚴格的理論體系。

數字圖象處理是一個多學科交叉的領域,涉及光學、電子學、數學、攝影技術、計算機技術等眾多學科,是一個高度綜合的技術學科。

解釋:

數字圖象處理是一門計算機的技術課程,而且是一種非常特殊的專業課程,而非有系統理論體系的基礎課程。

本課程只講述基本原理和一般方法,不涉及具體領域中的特殊方法,如醫學圖象處理已經成為一個專門的研究領域,有許多特殊的處理方法。

學生在學習時的感覺是內容的系統性不強,涉及的知識面寬但不很深(高階部分除外,如小波變換等),需要出色的綜合能力。而在技術上需要很強的程式設計能力,可以說圖象處理是門對學生的技術能力即動手能力要求很高的課程。

圖象在計算機中表現為二維資料矩陣,難點是矩陣所涉及的各種變換與其在訊號原理中的對應關係。圖象處理涉及很多變化引數,為了達到好的圖象處理效果,引數的選擇是關鍵。為了實現好的圖象處理功能,方便的互動手段包括調整引數、圖象的顯示、儲存等是很重要的。

2.數字圖象處理系統的基本組成結構

數字圖象處理系統由圖象數字化裝置、圖象處理計算機和圖象輸出裝置組成,如下圖所示:

圖1.3 數字圖象處理系統

 圖象數字化裝置:掃描器、數碼相機、攝象機與圖象採集卡等

 圖象處理計算機:PC、工作站等

 圖象輸出裝置:印表機等

3. 數字圖象處理的應用

隨著微電子與計算機技術的高速發展,圖象數字化裝置如CCD攝象機、掃描器、數碼相機、圖象採集卡的成本大大降低,普通的微機已經可以勝任部分圖象處理任務,使得圖象處理的應用越來越廣泛,可以預見在不久的將來,圖象及視訊處理的應用將與目前語音處理的應用一樣變得日益普及和重要。

圖象處理的重要應用包括:

 遙感

 視覺監視、保安

 工業檢測與測量

 宇宙探險、軍事偵察、高精度制導

 醫療診斷

 通訊

 影視業、娛樂、公眾服務

解釋:

數字圖象處理是與模式識別與計算機視覺等學科緊密相關的學科方向。數字圖象處理通常作為模式識別或計算機視覺系統的預處理部分,用於圖象採集、變換、特徵提取等前期工作,如圖象增強、幾何矯正、邊緣提取、輪廓跟蹤等;而模式識別則重點在於抽取有效特徵,分類和識別物體,如指紋識別、簽字驗證等;計算機視覺的核心任務是景物理解,追求人工的視覺功能,如立體資訊的獲取,運動分析等。

4.數字圖象處理中的資料結構

數字圖象處理中常用的資料結構包括矩陣、鏈碼、屬性圖等;此外還常用分層表示的資料結構,如金字塔和四叉樹(pyramids and quadtrees)結構。

資料結構是指資料的組織方式,對演算法的選擇和其實現的容易程度有明顯的影響。資料結構的選擇在程式設計中是關鍵性的步驟。

演算法 + 資料結構 = 程式 (Algorithm + Data Structure = Program)

邏輯 + 控制 = 演算法  (Logic + Control = Algorithm)

本節是如下資料的摘譯:Milan Sonka, Chapter 3, Data Structures in Image Analysis (..\..\download_IPCVPR\DIP of Milan Sonka\datastructureinimageprocessing.htm)。建議讀者閱讀原文。

4.1 圖象資料的表示層次

      圖象資料的表示層次反映圖象處理的不同階段,表達圖象資料的不同抽象程度。總的來說有如下幾個逐級升高的表示層次。

*   象素層圖象:由原始資料組成,是象素亮度的整數矩陣;

*   分割圖象:圖象被分割為可能屬於同一物體的區域;

*   幾何表示:2D和3D 形狀資訊;

*   關係模型: 資料更高層次的抽象,使使用資料更為有效。

4.2 規範的圖象資料結構

規範的圖象資料結構有矩陣、鏈碼、圖、物體屬性表、關係資料庫 等(matrices,chains, graphs, lists of object properties, relational databases, etc.)。它們不僅用於圖象資訊的直接表示,而且還是更復雜的圖象分層表示方法的基礎,如金字塔和四叉樹(pyramids and quadtrees)結構。

*   矩陣:低層圖象表示的最普通的資料結構,矩陣元素是整型數值;這類圖象資料通常是圖象獲取裝置(攝象機、掃描器等)的直接輸出。

*   鏈碼:描述物體的邊界,鏈碼中的符號一般對應於圖象基元的鄰接關係。如下圖所示。鏈碼可以用靜態資料結構來表示,如1維陣列,取其大小為鏈碼的最大可能長度;也可以用動態資料結構來表示,且這樣在節省儲存空間方面更合適。



*   行程編碼:通常用於圖象矩陣中符號串的表示。例如 ,傳真機就使用這種方式。在二值圖象中,行程編碼僅記錄圖象中屬於物體的區域,該區域表示成以表為元素的表。圖象的每行表示成一個子表,它的第一個元素為行號,然後是兩個縱座標構成的項,第一個為行程的開始的縱座標(列號),第二個為行程的結束的縱座標。一行中可以有若干個這樣的序列項。如下圖所示:

行程編碼也可用於含有多個亮度層次圖象的表示,這時子表中必須記錄序列的亮度值。

*   拓撲資料結構:圖象描述成一組元素及其相互關係的圖結構。例如,賦值的屬性圖,區域鄰接圖。區域鄰接圖例子如下:



*   關係結構:資訊集中在語義上重要的圖象組成部分(它們是圖象分割的結果)即物體之間的關係上,適合用於高層次的圖象理解工作。例如,使用關係結構描述自然場景的示意圖(物體及其關係屬性表)如下:



4.3分層資料結構

分層資料結構將圖象描述成若干不同粒度的層次,使演算法可以根據需要將處理控制在較小的資料量上;只有必要時,處理才會在最細的資料解析度上進行。兩種典型的分層表示資料結構是金字塔和四叉樹(pyramids and quadtrees)結構。

*  金字塔(pyramids)

     圖象的M-pyramid金字塔結構是一個圖象序列{ML, ML-1, ..., M0} ,其中ML 是具有原圖象解析度的圖象,即原圖象本身,然後依次降低一倍解析度得到該圖象序列。當原圖象的解析度是2的整數冪時,M0 則僅對應於一個象素。當需要對圖象的不同分辨率同時進行處理時,可以採用這種資料結構。解析度每降低一層,資料量則減少4倍,因而處理速度差不多提高4倍。

M-pyramid金字塔結構儲存所有圖象矩陣需要的象素個數為:

   一般而言,同時使用幾個解析度層次比僅使用單個層次優越。這些圖象可以表示成樹狀金字塔結構: T-pyramid. T-pyramid是樹結構,每個結點有4個子結點,如下圖所示:



    T-pyramid金字塔結構的儲存表示與T-pyramid相似,樹的弧不必儲存,這是因為由於其結構的規範性樹的子結點和父結點的地址都很容易計算出來。

*  四叉樹(Quadtrees)

    四叉樹是對T-pyramids的改進,除葉子結點外每個結點有4個子結點(西北NW: north-western, 東北NE: north-eastern, 西南SW: south-western, 西南SE: south-eastern).與T-pyramids一樣,在每個層次圖象被分解4個象限,但無須保留所有的葉結點。如果父結點有4個與它的值(如,亮度)一樣的子結點,則無須保留這些子結點。如下圖所示。




分層圖象表示的缺欠是:

*  依賴於物體的位置、方向和相對大小;

* 兩個僅有微小差別的相似圖象可能會具有非常不同的金字塔結構或四叉樹結構;

* 甚至當兩個圖象描述的是完全相同而只是略微移動了的景物時,可能會產生完全不同的表示。

說明:有關連結參考資料的自學問題

課件中涉及相當多的通過連結方式訪問的參考資料(如htm/html網頁、pdf或word文件,等等。),主要的目的是提供豐富的素材,便於不同程度的讀者自由學習,不是基本要求,感興趣的讀者可以參考。這種內容是傳統教材無法實現的,是電子課件的主要特點之一。學生如果能夠充分發揮主觀能動性,將會突破課件自身內容侷限性,對課程的學習十分有益。  

參考文獻

Milan Sonka, Chapter 3, Data Structures in Image Analysis (..\..\download_IPCVPR\DIP of Milan Sonka\datastructureinimageprocessing.htm)。

--------------------------------------------------------------------------------

作業

1.    編制讀入並顯示bmp格式的程式,用滑鼠選擇區域,將其象素資料寫入陣列,並以文字檔案txt輸出。

(有關點陣圖(bmp)的格式請參考:第一章,Windows點陣圖和調色盤,“數字圖象處理程式設計入門”,呂風軍,清華大學出版社,1999.9:..\Readings\chapter01\bitmapformat.doc

清華大學計算機系 艾海舟

最近修改時間:2000年1月10日

出處:http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/chapter01/chapt01_ahz.htm