【安防知識網(wǎng)】圖像處理軟件包
圖像處理軟件包通常是以菜單的形式出現(xiàn)的,在Windows操作系統(tǒng)的環(huán)境下來設計菜單形式的圖像處理軟件包,比在DOS操作系統(tǒng)的環(huán)境下容易得多,外設的管理和漢字的注釋不再費事,而且用VisualC++編程,已有現(xiàn)成的菜單形式可以借用,這樣可以集中精力去設計圖像處理的算法。
圖像處理軟件包分為專用圖像處理軟件包和通用圖像處理軟件包,專用圖像處理都以軟件處理為主,解決特定的問題。通用圖像處理軟件包主要采用菜單形式,其算法相對比較簡單,只是要求具有一些初步的算法,但一定具有圖像輸入功能。
菜單一般有多級,主菜單里可以分為幾個大項,如文件管理、圖像獲取、圖像編輯、圖像二值化、邊緣增強、圖像量測、圖像變換等,每一個菜單大項的下級菜單又分若干小項,現(xiàn)以單屏圖像處理軟件包為例,簡要介紹菜單的各項內(nèi)容。
圖2 Windows 圖像基礎(chǔ)結(jié)構(gòu)的總體結(jié)構(gòu)圖
文件管理
這一項主要是圖像的存盤和加載,有時把圖像的打印也放在這一類里。圖像的存盤和加載要解決兩個主要的問題,一個是圖像區(qū)域的確定,另一個是圖像格式的規(guī)范。
圖像區(qū)域分為規(guī)則區(qū)域和不規(guī)則區(qū)域,規(guī)則區(qū)域通常指矩形區(qū)域,不規(guī)則區(qū)域通常指用鼠標器畫出來的一個封閉的單連通區(qū)域。
在規(guī)則區(qū)域的情況下,存儲圖像時常用鼠標器來確定所需存儲的區(qū)域,加載時又可以用鼠標器來確定所加載圖像的顯示位置。圖像處理常常按整幅圖像來進行,有時也把區(qū)域分為整幅圖像區(qū)域和局部圖像區(qū)域,由于整幅操作不再需要鼠標器來確定區(qū)域,因此可以簡化操作。
規(guī)則區(qū)域圖像的格式有自由格式和標準格式兩種。對于灰度圖像,自由格式文件的第一個字節(jié)為0,表示是灰度圖像,后兩個字節(jié)表示矩形區(qū)域的寬,接下來的兩個字節(jié)表示矩形區(qū)域的高,隨后是灰度圖像數(shù)據(jù),一個字節(jié)表示一個像素,每個像素按照從左到右、從上到下排列。對于彩色圖像,常用RGB基色的彩色空間。其自由格式文件的第一個字節(jié)為1,表示是彩色圖像,后兩個字節(jié)表示矩形區(qū)域的寬,接下來的兩個字節(jié)表示矩形區(qū)域的高,隨后是彩色圖像數(shù)據(jù),三個字節(jié)表示一個像素,順序是R,G,B,每個像素按照從左到右、從上到下的順序排列。標準格式的圖像文件有BMP,TIFF等格式,也有壓縮存儲的格式。
不規(guī)則區(qū)域的圖像存儲和加載比一般矩形區(qū)域復雜,首先遇到的是區(qū)域邊界的描述問題,一般有多邊形描述方法和鏈碼(chain codes)描述方法。
不規(guī)則的圖像文件的結(jié)構(gòu)如表1所示。文件頭是一個CHAIN-HEAD型的結(jié)構(gòu)體的對象;鏈碼數(shù)據(jù)就是從圖像起始掃描點(xs,ys)開始,以順時針方向沿區(qū)域外邊界曲線行走得到的各個節(jié)點的數(shù)據(jù),其數(shù)目由文件頭的code_size確定;掃描線的位置數(shù)據(jù)是若干個CHAIN_SORT型結(jié)構(gòu)體的對象,數(shù)目由文件頭中的couple_size確定。
[nextpage]圖像獲取
圖像輸入設備有攝像機、掃描儀等,要在菜單里嵌入這些設備的圖像輸入功能,就必須使用相應設備的設備驅(qū)動程序。當攝像機輸入時,有兩種狀態(tài):
·直通狀態(tài),這是為了調(diào)整攝像機的工作狀態(tài),如聚焦、調(diào)整光圈等。這種“直通”,實際上是一個連續(xù)數(shù)字化、傳輸、顯示的過程;
·采集狀態(tài),采集分單幀采集和多幀采集,多幀采集時至少需要開辟相應存儲容量的內(nèi)存空間。
圖像編輯
圖像編輯功能包括圖像的放大、縮小、旋轉(zhuǎn)、平移、文字注釋、圖像動態(tài)顯示等。軟件進行的圖像放大基本上都是無級放大,所謂無級放大,是指放大倍數(shù)可以是非整數(shù)的放大,如放大2.2倍。圖像放大時,要進行插值處理,有兩種插值處理的方法:
·重讀插值,如放大兩倍,即在x,y兩個方向上都放大兩倍,這樣一個點變成了2×2鄰域的四個點,每個點的數(shù)值相同且為原來點的值;
·線性插值,雙線性插值的放大效果最好。
圖像縮小一般是抽點,即按縮小的比例把多余的點去掉。圖像的旋轉(zhuǎn)是原始圖像乘一個旋轉(zhuǎn)矩陣,旋轉(zhuǎn)的角度可以由鼠標器確定。算法實現(xiàn)時,首先應確定旋轉(zhuǎn)后得到的區(qū)域,由這個區(qū)域的每一個點去對應原始圖像的點,即把原始圖像對應點的值來作為該點的值,這樣做的好處是不會出現(xiàn)空點。
灰度變換
在數(shù)字圖像處理中,經(jīng)常需要對圖像的灰度進行某種變換,達到好的視覺效果或者便于以后的特征提取和識別?;叶茸儞Q是圖像預處理(preprocessing)的基本內(nèi)容之一。下面只簡介3種灰度變換,其數(shù)學公式從略。
1、灰度級的線性變換
圖像由于成像時曝光不足或過度,成像設備的非線性或圖像記錄設備動態(tài)范圍太窄等因素,都會產(chǎn)生對比度不足的弊病,使圖像中的細節(jié)分辨不清。這時如果將圖像灰度線性擴展,常能顯著改善圖像的觀看質(zhì)量。
2、灰度級的對數(shù)變換
當希望對圖像的低灰度區(qū)有較大的擴展而對高灰度區(qū)壓縮時,可采用灰度級的對數(shù)變換,它能使圖像灰度的分布均勻,與人的視覺特性相匹配。
3、直方圖統(tǒng)計與直方圖均衡化
對于灰度圖像可統(tǒng)計其直方圖,將統(tǒng)計結(jié)果用圖示法直觀地表示出來。直方圖均衡化是當一個圖像具有平坦的均勻分布直方圖時,各個灰度等級都能充分發(fā)揮作用,可以得到比較好的視覺效果。
邊緣增強
邊緣是圖像的最基本特征。邊緣包括著有價值的目標邊界信息,這些信息可以用于圖像分析、目標識別以及圖像濾波。邊緣檢測和邊緣增強的常用方法是微分運算。圖像中灰度發(fā)生突變或不連續(xù)的地方稱為邊緣,這些地方的微分值往往比較大。
下面只羅列7種邊緣增強方法及其檢測算子,其數(shù)學公式這里從略,應用時可參閱有關(guān)專著資料。常用的邊緣增強方法有:
·雙向一次微分;
·二次微分;
·Roberts算子。這是一種差分算子,由于窗口小,平滑噪聲作用也小,改進的另兩種算子是Prewitt算子和Sobel算子,它們對有噪聲的階躍型邊沿的檢測能力比Roberts的好;
·Sobel微分運算。Sobel可以產(chǎn)生較好的邊緣檢測效果,而且受噪聲的影響也比較小;
·拉普拉斯運算。拉普拉斯算子有時找到的邊緣是偽邊緣,特別是在圖像灰度變化不大的區(qū)域。因為這時小的灰度干擾(噪聲)便可能使二階導數(shù)產(chǎn)生過零輸出;
·Robinson邊緣檢測。Robinsons算子實際上是4個不同的模板,分別算出4個加權(quán)和,進行比較,取其中最大者作為最終結(jié)果。由于它考慮到了水平、垂直、45°、135°各個方向的灰度值的影響,所以通常濾除噪聲效果較好,邊界較清晰;
·Frei&Chen邊緣檢測等。
[nextpage]二值化
所謂二值化,就是通過設定閾值(threshold)把灰度圖像變換成僅用兩個值分別表示目標和背景的二值圖像。圖像二值化可根據(jù)下列的閾值處理(thresholding)來進行(見圖(1))。
通常,用最后的二值圖像g ( i , j )中的1值(亮)部分表示目標子圖,0值(黑)部分表示背景子圖。確定二值化閾值t的方法叫做閾值選擇,大多數(shù)的閾值選擇以圖像的灰度概率密度函數(shù)(直方圖)為依據(jù)。
二值化方法有:
1、非0像素置1法二值化
對于灰度圖像,把灰度值非黑的所有像素變?yōu)榘祝渌麨楹?,得到二值圖像。這種方法僅在背景象素多為黑時有效。
2、固定閾值法二值化
對于灰度圖像,小于閥值的像素變?yōu)楹?,大于閾值的像素變?yōu)榘?,閾值由用戶輸入。當已?jīng)了解灰度直方圖的情況,且預先通過對直方圖的統(tǒng)計已經(jīng)找到了目標與背景之間的閾值時,宜采用這種方法。
3、微分直方圖法二值化
微分直方圖法是設想圖像中的目標和背景之間的邊界灰度值急劇變化,此時利用灰度的變化率(微分值)來決定閥值。
噪聲消除
數(shù)字圖像中往往存在著噪聲干擾,如光電元件產(chǎn)生的隨機噪聲,數(shù)字化產(chǎn)生的量化噪聲等。這些噪聲與圖像信號可以是相加的或相乘的,這種噪聲干擾下的圖像可以用數(shù)字處理的辦法得到改善。消除圖像中的噪聲干擾的有效辦法是用局部平滑濾波,通過平滑濾波可以達到消除噪聲、提高圖像質(zhì)量的目的。
濾波方法有:
圖3 3×3十字中值濾波和5×5十字中值濾波的數(shù)據(jù)形式
[nextpage]1、二值圖形麻點噪聲的濾除
對于二值圖像f,消去麻點噪聲。設圖像像素f ( i , j )周圍8個像素的灰度平均值為a,若| f ( i , j )-a |≤0.5時,則f ( i , j )黑白反轉(zhuǎn);若大于0.5時則f ( i , j )不變。
2、3×3平均值濾波
對于灰度圖像f,設像素f ( i , j )周圍8個像素的灰度平均值為a,進行如下處理:
·若| f ( i , j )-a | ·若| f ( i , j )-a |≥e,則 f ( i , j )不變; ·程序中,誤差容限e由用戶指定。 3、中值濾波 中值濾波可以有效地去除脈沖噪聲。3×3十字中值濾波和5×5十字中值濾波的數(shù)據(jù)形式分別如圖3(a)、(b)所示。5×5十字中值濾波的效果比3×3十字中值濾波的效果要好,但計算時間要長。 4、多幀平均 多幀平均可以有效地去除雪花噪聲,具體做法是連續(xù)采集M幀圖像,每幀圖像的寬、高為H,V,多幀平均算法為式中,G (x , y)為輸出圖像,f (x , y , k )為第k幀的輸入圖像。 圖像量測 簡單的圖像量測包含量測兩點之間的距離以及計算閉合區(qū)間的周長、面積、重心等。其計算公式均相對簡單,一般測量的書藉資料中都有,這里就從略了。