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