- 2D 計算機視覺:原理、算法及應用
- 章毓晉編著
- 6805字
- 2021-10-29 23:40:31
1.2 視覺和圖像
視覺對象是眼睛直接感受到的圖像,源自客觀世界中物體的影像,一般稱為“連續圖像”?!斑B續”在這里指圖像在空間上和亮度上都是密集取值的。連續圖像也稱為模擬圖像,與此對應的是數字圖像或離散圖像?!半x散”在這里指圖像在空間上和亮度上都是間斷采樣的。利用計算機對數字圖像進行加工、操作等的技術統稱為數字圖像技術。因為計算機所能操作的對象都是數字化的,所以數字圖像技術也可直接稱為圖像技術,數字圖像也可直接稱為圖像。
計算機視覺需要借助許多圖像技術來實現??陀^世界在空間上是3D的,但大部分成像裝置都將3D世界投影到2D像平面上,所以得到的圖像是2D的。2D計算機視覺基本上基于各種2D圖像技術。
下面介紹如何定義、表示圖像及其基本單元——像素,介紹圖像存儲與文件格式、圖像顯示和打印方法,并利用對打印所用的半調輸出和抖動技術的介紹,進一步加深讀者對圖像空間和幅度(像素灰度)的理解。
1.2.1 圖像和數字圖像
圖像可定義為用各種觀測系統,以不同形式和手段觀測客觀世界而獲得的、可以直接或間接作用于人眼并進而產生視知覺的實體。例如,人的視覺系統就是一個觀測系統,通過它得到的圖像就是客觀物體在人眼中形成的影像。視覺信息均來源于圖像,這里的圖像是比較廣義的,如照片、繪畫、草圖、動畫、視頻等。圖像帶有大量的信息,“百聞不如一見”“一圖值千字”都說明了這個事實。
一幅圖像一般可以用一個2D函數f(x, y)(在計算機中為一個2D數組)來表示,這里(x, y)表示2D空間XY中一個坐標點的位置,而f則代表圖像在點(x, y)處的某種性質F的值。例如,常用的圖像一般是灰度圖,這時f表示灰度值,當用可見光成像時,灰度值對應客觀物體被觀察到的亮度。
圖像的概念在近幾年得到許多擴展。雖然一般談到的圖像常指2D圖像,但3D圖像、立體圖像、彩色圖像、多光譜圖像及多視圖像等也越來越多見;雖然一般談到的圖像常指靜止的單幅圖像,但圖像序列、運動圖像(如視頻)等也得到了越來越廣泛的應用;雖然圖像常用對應輻射量的灰度點陣的形式顯示,但圖像灰度所代表的也可能是客觀世界中的距離或深度值(深度圖)、紋理變化(紋理圖像)、物質吸收值(計算機斷層掃描圖像)等。近年來,隨著科學的進步和技術的發展,成像已從可見光擴展到其他輻射波段,如在低頻端,有紅外線、微波、無線電波等;在高頻端,有紫外光、X光、g射線、宇宙射線等,此時圖像的亮度值或灰度值可以對應各種輻射量度。
從廣義來說,圖像可表示一種輻射能量的空間分布,這種分布可以是5個變量的矢量函數,記為T(x, y, z, t, λ),其中x、y、z是空間變量,t是時間變量,λ是頻譜變量(波長),而對于同一組變量,其函數值T可以是矢量(彩色圖像包括三個分量,多光譜圖像可能包括成百上千個分量)。由于實際圖像在時空、頻譜和能量上都是有限的,所以T(x, y, z, t, λ)是一個5D有限函數。
順便指出,在早期的英文書籍里,一般用“Picture”表示圖像,隨著數字技術的發展,現在都用“Image”代表各種離散化的數字圖像,包括前述的各種廣義形式的圖像,Image與中文“圖像”一詞的含義更接近。
例1-1 圖像示例
圖1-4給出的是兩幅典型的公開圖像(Lena和Cameraman,本書許多處理和分析的例子以其為原始圖像)。圖1-4(a)中的坐標系常在屏幕顯示中采用,它的原點O位于圖像的左上角,縱軸標記圖像的行,橫軸標記圖像的列。圖1-4(b)中的坐標系常在圖像計算中采用,它的原點位于圖像的左下角,橫軸為X軸,縱軸為Y軸。在兩幅圖中,f(x, y)既可代表整幅圖像,也可表示在坐標(x, y)處圖像的屬性值f。

圖1-4 數字圖像及其顯示示例
1.2.2 圖像和像素表示
一幅圖像可分解為許多單元,每個基本單元稱為圖像元素,簡稱為像素。對于2D圖像,常用英文pixel(也有用pel)代表像素。圖像分辨率與圖像包含的像素個數成正比,包含的像素越多,圖像的分辨率越高,能更好地看清圖像的細節。
例1-2 像素示例
圖像是由許多像素緊密排列而成的,或者說,一幅灰度圖像就是亮度點的集合(只要將圖像逐步放大就可看出)。例如,從圖1-4(b)中選取一小塊(32×32)并進行放大,如圖1-5(a)所示,將一個如圖1-5(b)所示的32×32的網格覆蓋在上面,得到圖1-5(c)。圖1-5(c)中每個小格對應一個像素,格內灰度是一致的,這里每個小格就對應一個像素。

圖1-5 像素示例
若要表示圖像,就要表示其中的每個像素。有多種表示方法,最常用的表示方法是前文提到的將一幅圖像用一個2D數組f(x, y)表示,其中(x, y)表示像素的位置,f則代表像素的屬性值。在這種稱為光柵表示的方法中,圖像像素與數組元素是一一對應的。
一幅圖像也可表示為一個2D的M×N的矩陣F(其中每個元素表示一個像素,M和N分別為圖像的行數和列數):

矩陣表示法可以很容易地轉化為更為簡單的矢量表示法,對應式(1-1),有

其中,

矩陣表示法和矢量表示法是等價的,它們可以方便地互相轉換。
1.2.3 圖像存儲與文件格式
圖像在計算機中需要用大量的數據來表達,同時需要以特定的格式存儲。
1. 圖像存儲器
圖像存儲需要大量的空間。在圖像處理和分析系統中,大容量和高速的圖像存儲器是必不可少的。在計算機中,最小的圖像數據量度單位是比特(bit)。存儲器的存儲量常用字節(B,1B=8bits)、千字節(KB)、兆(106)字節(MB)、吉(109)字節(GB)、太(1012)字節(TB)等表示。例如,存儲一幅1024×1024的8bit圖像需要容量至少為1MB的存儲器。用于圖像處理和分析的數字存儲器可分為如下3類。
(1)在處理和分析過程中使用的快速存儲器。
(2)可以比較快地重新調用數據的在線或聯機存儲器。
(3)不經常使用的數據庫(檔案庫)存儲器。
例1-3 存儲器示例
計算機內存是一種具有快速存儲功能的存儲器。目前,微型計算機的內存通常為若干GB。有一種內存是特制的硬件卡,也稱為“幀緩存”或“顯存”,其可存儲多幅圖像并以視頻速度(每秒25幅或30幅圖像)讀取,還允許對圖像進行實時放大/縮小及垂直翻轉和水平翻轉等操作。目前常用的幀緩存容量可達幾十GB。近年來得到廣泛應用的閃存(FLASH)在工作原理和結構等方面與內存有相似之處,但閃存在斷電后仍能保留存儲的內容。
磁盤是比較通用的在線存儲器,常用的Winchester磁盤一般可存儲TB級的數據。近年來,磁光(Magneto Optical,MO)存儲器也比較常用,它可在5?英寸的光片上存儲GB級的數據。在線存儲器的一個特點是需要經常(隨機地)讀取數據,所以一般不采用磁帶一類的順序介質。針對更大的存儲要求,還可以使用光盤塔,一個光盤塔可容納幾十個到幾百個光盤,利用機械裝置插入或從光盤驅動器中抽取光盤。
數據庫存儲器的特點是須具備非常大的容量,但對其上數據的讀取不能太頻繁,常將磁帶和光盤作為數據庫存儲器。一條長為13英尺的磁帶可存儲GB級的數據,但磁帶的壽命較短,在良好的環境中也只有7年。常用的一次寫多次讀(WORM)光盤可在12英寸的光盤上存儲6GB的數據,在14英寸的光盤上存儲10GB的數據。另外,WORM光盤在一般環境下可保存30年以上。在主要操作為讀取的應用中,可將WORM光盤放在光盤塔中。一個存儲量達到TB級的WORM光盤塔可存儲上百萬幅1024×1024的8bit圖像。
2. 圖像文件格式
圖像數據在聯機存儲器和數據庫存儲器中一般以各種圖像文件格式存儲,除圖像數據本身外,一般還需要包含對圖像的描述信息,以便于對圖像數據進行提取和使用。
圖像文件格式有很多種,基本上可分為兩種形式,一種是矢量形式,另一種是光柵形式。
(1)在矢量形式中,圖像是用一系列線段或線段的組合體來表示的,線段的灰度(色度)可以是均勻的或變化的,在線段的組合體中,各部分也可使用不同的灰度。矢量文件類似于程序文件,里面有一系列命令和數據,執行這些命令就可根據數據畫出圖案。矢量形式主要用于人工繪制的圖形數據文件。
(2)表示自然圖像數據的文件主要使用光柵形式,該種形式與人對圖像的理解一致(一幅圖像是許多圖像點的集合),比較適用于色彩、陰影或形狀變化復雜的真實圖像。它的主要缺點是缺少直接表示像素間相互關系的結構,并且限定了圖像的分辨率。后者帶來兩個問題,一個是將圖像放大到一定程度就會出現方塊效應,另一個是如果將圖像縮小再恢復到原尺寸,圖像會變得模糊。
不同的系統平臺和軟件常使用不同的圖像文件格式,下面簡單介紹5種應用比較廣泛的格式。
1)BMP格式
BMP格式是Windows環境中的一種標準圖像格式,全稱是Bitmap。BMP圖像文件也稱為“位圖文件”,包括三部分:位圖文件頭(也稱為表頭)、位圖信息(常稱為調色板)、位圖陣列(圖像數據)。一個位圖文件只能存放一幅圖像。
位圖文件頭的長度固定為54字節,給出圖像文件的類型、大小、打印格式和位圖陣列的起始位置等信息。位圖信息給出圖像的長、寬、每個像素的位數(可以是1、4、8、24,分別對應單色、16色、256色和真彩色的情況)、壓縮方法、目標設備的水平和垂直分辨率等信息。位圖陣列給出原始圖像每個像素的值(如對于真彩色圖像,每3字節表示一個像素,分別是藍、綠、紅的值),它的存儲格式有壓縮(僅用于16色和256色圖像)和非壓縮兩種。位圖陣列數據以圖像的左下角為起點進行排列。
2)GIF格式
GIF格式是一種公用的圖像文件格式標準,它是8位文件格式(一個像素占一個字節),所以最多只能存儲256色圖像,不支持24位的真彩色圖像。GIF文件中的圖像數據均為壓縮過的,采用的壓縮算法是改進的LZW算法,所提供的壓縮比通常在1:1到3:1之間,當圖像中有隨機噪聲時,效果不太好。
GIF文件結構較復雜,一般包括7個數據單元:文件頭、通用調色板、圖像數據區及4個補充區(如果用戶只利用GIF格式存儲用戶圖像信息,則可不設置)。其中,文件頭和圖像數據區是不可缺少的單元。
一個GIF文件中可以存放多幅圖像(這個特點對實現網頁上的動畫很有利),所以文件頭中會包含適用于所有圖像的全局數據和僅屬于其后那幅圖像的局部數據,當文件中只有一幅圖像時,全局數據和局部數據一致。當存放多幅圖像時,每幅圖像集中成一個圖像數據塊,每個數據塊的第一個字節是標識符,指示數據塊的類型(可以是圖像塊、擴展塊或文件結束符)。
3)JPEG格式
JPEG格式是針對靜止灰度圖像或彩色圖像的一種國際壓縮標準,尤其適用于拍攝的自然照片,所以在數字相機中得到了廣泛使用。JPEG格式采用的是有損編碼(也有采用無損編碼的JPEG格式,但沒有特點,很少使用),一般來說,其可節省的空間是相當大的。JPEG格式在內容和編碼方式方面都比其他圖像文件格式要復雜,但在使用時并不需要用到每個數據區的詳細信息。
JPEG標準本身只定義了一個規范的編碼數據流,并沒有規定圖像文件的格式。Cube Microsystems公司定義了一種JPEG文件交換格式(JFIF)。JFIF圖像是一種使用灰度或Y、Cb、Cr分量(彩色)表示的JPEG圖像,包含一個與JPEG兼容的文件頭。一個JFIF文件通常包含單幅圖像,圖像可以是灰度的,其中的數據為單個分量;也可以是彩色的,其中的數據包括三個分量。
4)PNG格式
PNG格式是一種無損壓縮的位圖格式,使用由LZ77派生的無損數據壓縮算法,一般應用于JAVA程序、S60程序或網頁(主要原因是它壓縮比高,生成的文件體積?。?。PNG格式有8位、24位、32位三種形式,其中,8位PNG格式支持兩種不同的透明形式(索引透明和Alpha透明),24位PNG格式不支持透明(僅包含3個顏色分量R、G、B),32位PNG格式在24位PNG的基礎上增加了8位透明通道,即Alpha通道,因此可展現256級透明程度。此時可以指定每個像素的Alpha值,當Alpha值為0時,像素是完全透明的,而當Alpha值為255時,像素是完全不透明的。這樣可使得彩色圖像的邊緣與任何背景平滑地融合,從而徹底消除鋸齒邊緣。這種功能是GIF格式和JPEG格式不具備的。
相比于JPEG格式,如果保存文本、線條或邊緣清晰、含有大塊相同顏色區域的圖像,PNG格式的壓縮效果要比JPEG格式好很多,并且不會出現JPEG格式在高對比度區域中出現的圖像損傷。但是,JPEG格式采用了一種針對照片圖像的特定編碼方法,適用于圖像對比度低、顏色過渡平滑、噪聲較多且結構不規則的情況,所以如果此時用PNG格式代替JPEG格式,文件尺寸會增大很多,而且圖像質量的提高有限。
5)TIFF格式
TIFF格式是一種獨立于操作系統和文件系統的格式(如其在Windows環境中和Macintosh機上都可使用),非常便于在軟件之間進行圖像數據交換。TIFF圖像文件包括文件頭(表頭)、文件目錄(標識信息區)和文件目錄項(圖像數據區)。文件頭只有一個,并且在文件前端,給出數據存放順序、文件目錄的字節偏移信息;文件目錄給出文件目錄項的個數信息,并有一組標識信息,給出文件目錄項的地址;文件目錄項是存放信息的基本單位,也稱為“域”,域主要分為基本域、信息描述域、傳真域、文獻存儲和檢索域及其他建議不再使用的域。
TIFF格式的描述能力很強,可制訂私人用的標識信息。TIFF格式支持任意大小的圖像,文件可分5類:二值圖像、灰度圖像、調色板彩色圖像、全彩色RGB圖像和YCbCr圖像。一個TIFF文件中可以存放多幅圖像,也可存放多份調色板數據。
1.2.4 圖像顯示和打印方法
圖像顯示指將圖像數據以圖的形式(在一般情況下是亮度模式的空間排列,即在空間(x, y)處顯示對應f的亮度)展示(這也是計算機圖形學的重要內容)。對圖像處理來說,處理的結果主要用于顯示;對圖像分析來說,分析結果可以借助計算機圖形學技術轉換為圖像形式,從而直觀地展示。圖像顯示對圖像處理和分析系統來說是非常重要的。
例1-4 顯示設備示例
可以顯示圖像的設備有許多種。常見的圖像處理和分析系統所用的主要顯示設備是電視顯示器。輸入的圖像可以通過硬拷貝轉換到幻燈片、照片或透明膠片上。
除了電視顯示器,可以隨機存取的陰極射線管(CRT)和各種打印設備也可用于圖像的輸出和顯示。在CRT中,電子槍束的水平和垂直位置可由計算機控制。在每個偏轉位置上,電子槍束的強度是用電壓來調制的。每個點的電壓都與該點所對應的灰度值成正比,如此一來,灰度圖像就轉化為光亮度空間變化的模式,這個模式被記錄在CRT屏幕上以顯示出來。
打印設備也可以看作一種圖像顯示設備,一般用于輸出分辨率較低的圖像。早期在紙上打印灰度圖像的一種簡便方法是利用標準行式打印機的重復打印能力輸出圖像上任一點的灰度值。近年來使用的各種熱敏、噴墨和激光打印機等具有更強的能力,可以打印具有較高分辨率的圖像。
1. 半調輸出
圖像的原始灰度通常有幾十級、幾百級甚至上千級,但有些圖像輸出設備的灰度只有兩級,如激光打印機(打印,輸出黑;或者不打印,輸出白)。為了在這些設備上輸出多級灰度圖像并保持圖像原有的灰度級數,常采用一種稱為半調輸出的技術。半調輸出的原理是利用人眼的集成特性,在每個像素位置打印一個尺寸反比于該像素灰度的黑圓點,即在較亮的圖像區域中打印的點較小,而在較暗的圖像區域中打印的點較大(與例1-5所給方法的原理一致,但實現手段不同)。當點足夠小、觀察距離足夠遠時,人眼就不容易區分各小點,從而得到比較連續平滑的灰度圖像。一般來說,報紙上圖片的分辨率約為100DPI(每英寸100點),而書或雜志上圖片的分辨率約為300DPI。
例1-5 半調輸出方法
一種半調輸出技術的具體實現方法:先將圖像區域細分,取近鄰單元進行結合,組成輸出區域,這樣每個輸出區域包含若干個單元,只要使一些單元輸出黑,而使其他單元輸出白就可得到不同的灰度效果。一般來說,如果一個單元在某個灰度下的輸出為黑,則讓它在所有大于這個灰度下的輸出仍為黑。例如,將一個區域分成2×2個單元,按照圖1-6的方式,可以輸出5種不同的灰度;將一個區域分成3×3個單元,按照圖1-7的方式,可以輸出10種不同的灰度。

圖1-6 將一個區域分成2×2個單元(輸出5種灰度)

圖1-7 將一個區域分成3×3個單元(輸出10種灰度)
依此類推,要輸出256種灰度,則需要將一個區域分成16×16個單元。需要注意的是,這個方法通過降低圖像的空間分辨率來提升圖像的幅度分辨率,所以有可能導致圖像采樣過粗,進而影響圖像的顯示質量。
2. 抖動技術
半調輸出通過降低圖像的空間分辨率來提升圖像的幅度分辨率,所以輸出的灰度級數有一定限制。用較少的灰度級數顯示圖像可能產生虛假輪廓而導致圖像質量下降。這時可以采用抖動技術,通過改變圖像的幅度值來改善圖像的顯示質量。抖動的實現一般是對原始圖像f(x, y)加一個隨機的小噪聲d(x, y),即將兩者加起來進行顯示,由于d(x, y)的值與f(x, y)沒有任何有規律的聯系,所以有助于消除因量化不足而產生的圖像中出現虛假輪廓的問題(還可參見例2-11)。例如,設b為圖像顯示的比特數(一般b<5),則先從以下5個數中以均勻概率取得d(x,y)的值:-2(6-b)、-2(5-b)、0、2(5-b)、2(6-b),然后將這個相當于隨機小噪聲的d(x, y)的b個最高有效比特加到f(x, y)上,作為像素的值進行顯示。
例1-6 抖動示例
圖1-8給出一組抖動示例,圖1-8(a)是一幅具有256個灰度級的原始圖像;圖1-8(b)是借助例1-5的半調技術,使用圖1-7的方式得到的輸出圖像,由于現在只有10個灰度級,所以在臉部和肩部等灰度變換比較緩慢的區域,有比較明顯的虛假輪廓現象(原來光滑的表面出現階梯變化);圖1-8(c)是利用抖動技術進行改善的結果,疊加的抖動值分別為-2、-1、0、1、2;圖1-8(d)也是利用抖動技術進行改善的結果,但疊加的抖動值分別為-4、-2、0、2、4。

圖1-8 抖動示例
由此可見,利用抖動技術可以消除一些由于灰度級數過少而導致的虛假輪廓,疊加的抖動值越大,效果越明顯。但抖動值的疊加也給圖像帶來了噪聲,抖動值越大,噪聲影響也越大。