唐俊奇 宋非無 陳良英
(湄洲灣職業(yè)技術(shù)學(xué)院 福建莆田 351254)
在人的口腔中,舌頭是最靈活的部位,通過舌頭可以表現(xiàn)出人體上的不少疾病,它就像晴雨表一樣可以反映出人的身體健康狀況。在舌頭的表面上有一層舌體上面所散布的一層苔垢稱之為舌苔,身體健康的人其舌表現(xiàn)為薄白而濕潤且干濕度適中,不滑不燥。舌頭不正常表明人體會有問題:舌頭厚的人,他的消化系統(tǒng)或呼吸系統(tǒng)就有可能患有疾?。蝗绻嗵癫⒍庶S色的情況,則表明這個人的身體內(nèi)可能有濕熱存在,或者是消化道或呼吸道有炎癥存在,假如伴有咳嗽的話,則肺部還可能出現(xiàn)炎癥;舌苔厚且膩的人其體內(nèi)可能有寒濕存在;若患者有陰虛以及有慢性消耗性疾病的時候,則可能表現(xiàn)為沒有舌苔,比如腫瘤、結(jié)核病患者。若舌質(zhì)表現(xiàn)為暗紅色或有淡斑時,則表明患者氣血不足,很可能有心腦血管這方面的疾病,對于血黏度高或血脂高并且舌質(zhì)淡的老人可能患有貧血、營養(yǎng)不良、氣虛和慢性疾病等。如果在舌頭的兩側(cè)有出現(xiàn)牙印的情況,則可能患有氣虛,如果舌頭的顏色還是黃色的情況,則表明該患者有濕熱,若舌頭的顏色伴有白色則可能是濕;舌頭高則表示患者可能患有口腔炎癥和潰瘍;老年人如果舌頭發(fā)麻的話,則應(yīng)考慮氣血不足或血黏度過高。但是,人們在提取舌苔圖像時可能會產(chǎn)生偏離,這樣就給對病情的判斷帶來很大不便。如何處理在提取舌苔圖像過程中所產(chǎn)生的偏離,是亟待解決的問題。
通常情況下,人們通過數(shù)碼相機或攝像頭等采集到口腔內(nèi)的舌苔圖像,很可能因存在光照不均等現(xiàn)象產(chǎn)生噪聲。這些情況會給舌苔圖像造成嚴(yán)重的影響。因此,必須先對圖像進行預(yù)處理,將其轉(zhuǎn)變成近似實際的舌苔圖像。
低層圖像處理就是在現(xiàn)有已存儲的圖像上面直接進行操作,這樣就可以改善或增強圖像,以促進人們和計算機更好地識別圖像。這種圖像處理可用在許多應(yīng)用場合,包括醫(yī)療診斷、警局中指紋識別、檢查制造中有缺陷的部件以及膠卷工業(yè)等。圖像首先由照相機或其他傳感器捕捉并以數(shù)字化方式存儲起來。被存儲的圖像是由一個二維的像素(圖元)陣列表示的。許多低層圖像處理操作都假設(shè)圖像是單色的,并將像素看成具有某一灰度值( gray level)或亮度,此灰度值有一個從最低到最高值的范圍(即灰度級, grayscale)。典型地,灰度級被正則化成從零開始,零用來表示黑色而用255來表示白色,因此一個像素需用8位表示。彩色圖像則通常需要使用三個值,每一個表示一種主色(紅、綠和藍),或是使用像素值指向一個査找表[1]。
假設(shè)已存儲圖像所使用的坐標(biāo)系統(tǒng)的原點在左上角,如圖1所示。圖像的像素被存儲在二維數(shù)組,一個像素圖(pixmap)P[i][j1]以及各個像素點的亮度可以通過訪問此數(shù)組得到。這里需要指出的是,從本質(zhì)上來講,圖像和已存儲信息兩者是一一對應(yīng)的關(guān)系,但大型圖像文件可使用壓縮結(jié)構(gòu)或使用與圖像一起存儲的彩色查找表以減小對存儲量的需求。當(dāng)然在進行任何圖像處理操作之前,該文件必須復(fù)原,且信息仍應(yīng)以二維數(shù)組排列。
圖1 像素圖
對已存儲的圖像信息可以進行許多不同操作,通常是從低層處理開始。低層處理利用各個像素值以某種方式對圖像加以修改,通常這些操作是完全并行的。例如,一個圖像通常具有“噪聲”,這是由傳感器或環(huán)境所產(chǎn)生的不希望的變化,這種噪聲會改變實際的像素值理想情況下,應(yīng)去除這個噪聲,而只保持所需的圖像。做到這一點的操作通常被稱為噪聲清除(noise cleaning)或燥聲減少(noise reduction)。由于圖像像素的真實值是末知的(否則就不需要用傳感器來檢測了),因此需要采用實驗方法。另一個例子是對圖像邊緣的檢測,這是為了有于對圖像的識別。邊緣是指亮度的巨大變化。在邊緣檢測中,圖像中的亮度變化將被增強或突出。其他的低層操作包括將像素標(biāo)志為屬于某一指定對象以及對象四配,此時一個對象將以某種樣式與一已知對象進行比較。一種簡單的匹配形式是模板匹配(emplate matching)這種方法是將圖像與一個已存儲的模板進行比較。
有時需要識別與直線和曲線有關(guān)的那些像素,完成這種操作的有效方法是使用霍夫變換。霍夫變換利用像素坐標(biāo)去發(fā)現(xiàn)最符合要求的線方程。因此將霍夫變換歸為低層圖像處理(但不是預(yù)處理)?;舴蜃儞Q非常適合于并行實現(xiàn)。在某些應(yīng)用中,如果能將圖像從原來的空間域轉(zhuǎn)換成頻率域?qū)⑹欠浅S幸娴腫2],例如,在對數(shù)字圖像進行濾波時就要進行這種變換。這類變換也是對像素值進行操作,以生成一個與已數(shù)字化圖像率有關(guān)的一個新的值集。
在開始討論各種低層操作之前,首先來看看為什么需要進行并行處理。假設(shè)一個像素圖有,對于1024×1024個像素這樣的像素圖以及用8位二進制碼表示一個像素顏色,則需要220 byte(1M byte)的存儲空間,這樣的存儲空間己經(jīng)沒有什么問題了,但是緩慢的計算速度將成為系統(tǒng)的瓶頸,假設(shè)必須對每個像素進行一次操作的話,那么操作一個幀的則需要進行220次操作?,F(xiàn)在計算機的運行速度已相當(dāng)快但即使每次操作只需10-8秒(10ns/操作)總計也需10ms。在實時應(yīng)用中,計算速度必須達到幀速率(通常為每秒60~85幀)。必須在一幀的時間內(nèi)操作完一個幀圖像中的所有像素,即必須在12~16ms之內(nèi)處理完畢。通常許多復(fù)雜性高的操作所要完成的操作往往不只一次。對順序執(zhí)行的計算機而言經(jīng)常需開發(fā)專用的圖像處理硬件以滿足這種需求,這類專用硬件會繼續(xù)用信號處理藝片加以開發(fā)[3]。但是這類系統(tǒng)缺少并行計算機所能提供的靈活性,此外,采用專用硬件將難于適應(yīng)新的圖像處理算法。
圖像處理操作可分為產(chǎn)生的輸出基于單個像素(點處理)的值的操作、產(chǎn)生的輸出基于部鄰近像素組(局部操作)的值的操作、產(chǎn)生的輸出基于圖像所有像素(全局操作)的值的操作。點運算符不需要圖像中其他像素的值,因此并行化點處理是非常簡單且是完全并行的:局部操作也是可高度并行化的。點處理的例子包括閾值化(thresholding)、對比度擴展(contrast stretching)和灰度值減少(gray level reduction)。
在單級值化處理中,將保留所有具有超過預(yù)定閾值的像素,而小于該閾值的其他像素被歸為0,即對于一個給定像素xi,對每個像素進行的操作為[4]
if (xi<個值) xi=0,else xi=1;
在對比度擴展中,灰度值的范圍被擴展到可更清楚地觀察到圖像細(xì)節(jié)部分。對于定處于xl和xh,范圍中的像素值xi,對比度通過以下公式擴展到xl和xh范圍:
例如在醫(yī)療圖像中,通常如骨頭那樣的密集結(jié)構(gòu)會比如肌肉或器官那樣的軟結(jié)構(gòu)吸收得多的人射能量(由x射線、超聲或其他技術(shù)產(chǎn)生)對比度擴展通常用放大軟組織部分的灰度級(也許只有5~20%),這樣做之后,具有最小密度軟組織灰度級值將成為可顯示像素亮度的一極端,而具有有最大密度軟組織灰度級值將成為另一個極端。對比度擴展也用于如骨頭那樣的密集結(jié)構(gòu)以使細(xì)微裂縫那樣的微小變化也能看得清楚。
在灰度值減小中,用來表示灰度值的位數(shù)將被減少,也許這也將減少存儲需求。實現(xiàn)這種減小的一個簡單方法是舍棄不大重要的位,但這種方法僅當(dāng)圖像中灰度值的全部范圍均能被很好表示時才會比較有效,且能保足夠消息。
通過建立圖像的直方圖(histogram)能夠發(fā)現(xiàn)灰度值的變化。在閾值化處理之前,一個直方圖能用來確定一個合適的閾值級。直方圖的生成是一個全局操作,因為在操作中需要用到所有的像素值。事實上,直方圖是非意有用的。一個圖像的直方圖是由指明圖像中處于每個灰度值的像素數(shù)的函數(shù)所組成的。圖2示出了一個可能的直方圖。
圖2 圖像直方圖
生成一個直方圖的順序代碼可簡單地表示為[5]:
for(i=0;i for(j=0;j hist[p[i][j]]=hist[p[i][j]]+1; 其中像素被包含在數(shù)組p[][]中,而hist[k]將保存具有第k級灰度值的像素數(shù)。 上述順序代碼的并行求解方法可用來計算直方圖??蓪?nèi)層循環(huán)展開并將它們映射到各個處理機上。對于共享存儲器求解方法,語句hist[p[i][j]]=hist[p[i][j]]+1-1將需要放入一個臨界區(qū)。一般而言,應(yīng)使各個處理機完成各自的局部累加,此后再進行全局累加以減少對全局單元訪問的延遲。對于消息傳遞方法,由各個分離的處理機完成部分累加,然后由一個主進程替代臨界區(qū)來完成最后累加。 通過中值濾波可以過濾尖峰脈沖,在舌苔圖像進行中值濾波處理可以使其轉(zhuǎn)變成近似實際的舌苔圖像,避免了在后續(xù)的舌苔圖像二值化處理時出現(xiàn)大片的黑或大片的白現(xiàn)象。 經(jīng)過圖像采集工具獲得的數(shù)字圖像,經(jīng)過閾值化處理、對比度擴展等一些處理后雖然可以去除各種干擾,提高圖像的質(zhì)量,但是,這樣的數(shù)字圖像還不足以滿足高精度幾何測量的要求。為了進一步改善數(shù)字圖像的質(zhì)量,還需要對圖像作進一步的處理。 數(shù)字圖像在成像和傳輸過程中往往會夾雜一些噪聲,如椒鹽噪聲和高斯噪聲等。這些噪聲可能會對圖像處理結(jié)果產(chǎn)生消極影響,所以在圖像處理前要對該圖像進行平滑。 由于平均值方法會使邊緣和其他銳化細(xì)節(jié)變得模糊,為減少噪聲,可采用鄰近像素的中值(median)來替代原來的像素值,當(dāng)圖像屬于強“尖峰”(“spikelike”)圖像時,這種方法在保持邊緣的銳化性方面就顯得更為有效。將像素值從最小到最大按序排列,并選取位于中間的像素值(假定像素數(shù)為奇數(shù))就可得到中值。 假定像素值按遞升序排列為y0、y2、y3、y4、y5、y6、y7和y8,則中值便為y4。這種操作要求組中所有值必須先排序,然后用第5個元素替代像素的原來值。采用如冒泡法那樣的順序排序算法將依次找到較小值,因而事實上排序在獲得第5個最低值后便可終止。在這種情況下,找到每一個中值所需的步數(shù)為8+7+6+5+4=30,而對n個像素便30n步。 為方便并行操作和提高速度,采用近似的排序算法,它只需使所有行和列排序一次,且各行均以相同方向排序[7-8]。在每一階段使用有效的冒泡排序且只需三步。首先,對每一行進行比較和交換操作,它需要三步。對于第i行,有:Pi,j-1Pi,j Pi,jPi,j+1 Pi,j-1Pi,j。 Pi-1,jPi,jPi,jPi+1,jPi-1,jPi,j。 圖3中顯示出了全過程。pi,j的值將取第5個最大像素值,該算法并不總是選取第5個最大值。例如,如果第5個最大值為X2(在圖中2中),且它也是所在行中的最大值,則它將被保留在原來位置而不被此算法選中。盡管如此,此算法是一個合理的漸近算法,如果每個像素被分配一個處理機,則整個圖像僅需6步就可以完成取中值。同樣,該算法可擴展為每個處理機處理一組像素。 圖3 需六步的求中值近似算法 綜上所述:假設(shè)一幅圖像有n個像素,在中值法濾除噪聲的順序?qū)崿F(xiàn)中,總共需要進行30n步操作;而在中值法濾除噪聲的并行化實現(xiàn)中,每個處理機總共只需要進行6步操作,而所有處理機同時進行操作,這樣大大提高了圖像處理的效率。 文章探討了從通過數(shù)碼相機或攝像頭等采集系統(tǒng)獲得口腔內(nèi)的舌苔的數(shù)字圖像,通過對圖像預(yù)處理在處理機環(huán)境中減少舌苔圖像過程中所產(chǎn)生的偏離并提高圖像處理的速度,達到了預(yù)期的效果。4 圖像的中值濾波處理
4.1 中值法濾除噪聲的原理[6]
4.2 中值法濾除噪聲順序?qū)崿F(xiàn)的效率分析[6]
4.3 中值法濾除噪聲并行化實現(xiàn)的效率分析[6]
5 結(jié)語