楊秀璋,于小民,范郁鋒,李娜
(1.貴州財經(jīng)大學(xué)信息學(xué)院,貴陽 550025;2.貴州財經(jīng)大學(xué)貴州省經(jīng)濟系統(tǒng)仿真重點實驗室,貴陽 550025;3.貴州財經(jīng)大學(xué)計劃財務(wù)處,貴陽 550025;4.中國船舶工業(yè)系統(tǒng)工程研究院,北京 100036)
苗族服飾(苗語叫“嘔欠”)種類繁多,圖案精美,是中國少數(shù)民族服飾中的瑰寶,包括銀飾、苗繡、蠟染三大特色,涉及編織、刺繡、采摘、染色等中國傳統(tǒng)工藝技法,以復(fù)雜的裝飾,鮮艷的色彩和豐富的文化內(nèi)涵而聞名,被史學(xué)家稱之為“穿在身上的史書”[1]。苗族服飾具有悠久的歷史,通過研究這些圖案,可以深入地研究苗族文化內(nèi)涵和遷徙漂泊的歷史[2]。
圖像銳化和邊緣提取是數(shù)字圖像處理中經(jīng)典的技術(shù)[3],國內(nèi)外學(xué)者對其的研究取得了一定進展,在方法和實踐上都有不少的成果。王紅茹等[4]提出了一種有效的水下無人儀器的圖像實效增強算法;賈兆輝等[5]采用基于紅外直方圖的自適應(yīng)紅外圖像增強算法進行分析;王月新等[6]分析研究了Sobel算子和Prewitt算子;周芳芹等[7]基于MATLAB研究了改進型Prewitt圖像銳化算法;沈德海等[8]改進了Sobel算子的邊緣檢測算法;聶洪印[9]提升了車牌識別系統(tǒng)中的關(guān)鍵算法;徐紅梅[10]通過民族文化圖像資料研究民族服飾傳承。但是這些方法都是針對傳統(tǒng)圖像進行邊緣提取的,沒有應(yīng)用于苗族服飾領(lǐng)域,而且少數(shù)民族圖像的噪聲較多,圖像質(zhì)量較差,這嚴重影響了文物還原和文化內(nèi)涵研究工作。
針對苗族服飾圖像對比度低、噪聲較多、線條模糊等問題,本文旨在通過圖像銳化和邊緣檢測技術(shù)來提取苗族服飾中的圖案及線條,通過Laplacian算子、Robert算子、Prewitt算子和Sobel算子來進行邊緣檢測[11],以提升邊緣檢測的準(zhǔn)確性,降低苗族服飾圖像中的噪聲,從而推進苗族文化和苗繡服飾領(lǐng)域的研究。本文的研究成果具有重要的理論研究意義和良好的實際應(yīng)用價值,可以廣泛應(yīng)用于少數(shù)民族文物和文化圖像還原工作,更好地幫助歷史學(xué)家和社會學(xué)家研究種族遷徙和文化傳承。
一個完整的圖像銳化和邊緣增強系統(tǒng)是個復(fù)雜的系統(tǒng),主要包括圖像灰度轉(zhuǎn)換、二值化處理、圖像銳化等步驟,針對苗族服飾的圖像銳化和邊緣檢測的算法研究,本文提出了圖1所示的框架圖。
圖1 圖像銳化和邊緣處理框架圖
本文采用Python語言進行圖像處理實驗,首先將采集的苗族服飾圖像進行灰度轉(zhuǎn)化,接著通過二值化處理將灰度圖像中的像素劃分為兩種,最后是圖像銳化操作,通過各種圖像銳化算法來增強圖形的高頻部分,使得圖像中的邊緣細節(jié)更為突出,得到更為清晰的苗族服飾圖像,實現(xiàn)邊緣提取。
假設(shè)現(xiàn)在存在一張由M×N個像素點構(gòu)成的圖像,其中每個像素點由紅綠藍三原色構(gòu)成,這三種顏色在計算機系統(tǒng)的顏色模型中稱為RGB模型,其中(0,0,0)代表黑色,(255,255,255)代表白色。通過該模型,我們可以將圖像轉(zhuǎn)換為數(shù)字矩陣,每一個像素點對應(yīng)一個數(shù)字編號,接著對苗族服飾圖像進行基于Python的銳化邊緣處理。
當(dāng)?shù)玫揭粡?56位色的圖像之后,首先要開展灰度轉(zhuǎn)化處理?;叶葓D像中每個像素僅具有一種樣本顏色,其灰度是位于黑色與白色之間的多級色彩深度。假設(shè)某點的顏色由RGB(R,G,B)組成,常見灰度處理算法如表1所示:
表1 灰度處理算法
表1中Gray表示灰度處理之后的顏色,然后將原始RGB(R,G,B)顏色均勻地替換成新顏色RGB(Gray,Gray,Gray),從而將彩色圖片轉(zhuǎn)化為灰度圖像。一種常見的方法是將RGB三個分量求和再取平均值,但更為準(zhǔn)確的方法是設(shè)置不同的權(quán)重,將RGB分量按不同的比例進行灰度劃分。例如人類的眼睛感官藍色的敏感度最低,敏感最高的是綠色,因此將RGB按照0.299、0.587、0.144比例加權(quán)平均能得到較合理的灰度圖像。算法流程如下:
算法1灰度處理算法
image=cv.LoadImage('test.jpg')
grayimg=cv.CreateImage(cv.GetSize(image),image.depth,1)
for i in range(image.height)∶
for j in range(image.width)∶
grayimg[i,j]=0.299*image[i,j][0]+0.587*image[i,j][1]+0.144*image[i,j][2]
cv.ShowImage('srcImage',image)
cv.ShowImage('grayImage',grayimg)
圖2是彩色圖經(jīng)過平均灰度處理方法的結(jié)果。
圖2 灰度處理結(jié)果
圖像的二值化(Binarization)旨在提取圖像中的目標(biāo)物體,將背景以及噪聲區(qū)分開來。通常會設(shè)定一個閾值T,通過T將圖像的像素劃分為兩類:大于T的像素群和小于T的像素群。
灰度轉(zhuǎn)換處理后的圖像中,每個像素都只有一個灰度值,其大小表示明暗程度。二值化處理可以將圖像中的像素劃分為兩類顏色,常用的二值化算法如公式(1)所示:
當(dāng)灰度Gray小于閾值T時,其像素設(shè)置為0,表示黑色;當(dāng)灰度Gray大于或等于閾值T時,其Y值為1,表示白色。
Python OpenCV中提供了閾值函數(shù)threshold()實現(xiàn)二值化處理,常用的方法如表2所示,其中函數(shù)中的參數(shù)Gray表示灰度圖,參數(shù)127表示對像素值進行分類的閾值,參數(shù)255表示像素值高于閾值時應(yīng)該被賦予的新像素值,最后一個參數(shù)對應(yīng)不同的閾值處理方法。
二值化處理廣泛應(yīng)用于各行各業(yè),例如生物學(xué)中的細胞圖分割、交通領(lǐng)域的車牌設(shè)別等。在文化應(yīng)用領(lǐng)域中,通過二值化處理將所需民族文物圖像轉(zhuǎn)換為黑白兩色圖,從而為后面的圖像識別提供更好的支撐作用。
表2 二值化處理算法
圖3表示圖像經(jīng)過各種二值化處理算法后的結(jié)果,其中“BINARY”是最常見的黑白兩色處理。
圖3 二值化處理結(jié)果
由于收集圖像數(shù)據(jù)的器件或傳輸數(shù)圖像的通道的存在一些質(zhì)量缺陷,文物圖像時間久遠,或者受一些其他外界因素、動態(tài)不穩(wěn)定抓取圖像的影響,使得圖像存在模糊和有噪聲的情況,從而影響到圖像識別工作的開展。這時需要開展圖像銳化和邊緣檢測處理,加強原圖像的高頻部分,銳化突出圖像的邊緣細節(jié),改善圖像的對比度,使模糊的圖像變得更清晰。
圖像銳化和邊緣提取技術(shù)可以消除圖像中的噪聲,提取圖像信息中用來表征圖像的一些變量,為圖像識別提供基礎(chǔ)。通常使用灰度差分法對圖像的邊緣、輪廓進行處理,將其凸顯。本文分別采用Laplacian算子、Robert算子、Prewitt算子和Sobel算子進行圖像銳化邊緣處理實驗。
(1)Laplacian算子
Laplacian算子是基于二階微分的圖像增強領(lǐng)域的常用算法,通過灰度差分計算鄰域內(nèi)的像素。基本流程是:判斷圖像中心像素灰度值與它周圍其他像素的灰度值,如果中心像素的灰度更高,則提升中心像素的灰度;反之降低中心像素的灰度。Laplacian算子分為四鄰域和八鄰域,四鄰域是對鄰域中心像素的四方向求梯度,八鄰域是對八方向求梯度,再通過梯度求和計算鄰域其他像素灰度值與中心像素灰度值的關(guān)系,通過梯度調(diào)整結(jié)構(gòu)。
四鄰域模板如公式(2)所示,其像素的計算公式可以簡化為:
八鄰域模板如下:
其像素的計算公式可以簡化為:
(2)Robert算子
Robert算子是通過局部差分計算檢測邊緣線條,它是基于交叉差分的梯度算法。常用來處理具有陡峭的低噪聲圖像,當(dāng)圖像邊緣接近于正45度或負45度時,該算法處理效果更理想。其缺點是對邊緣的定位不太準(zhǔn)確,提取的邊緣線條較粗。
Robert算子的模板分為水平方向和垂直方向,如公式(6)所示,從其模板可以看出,Robert算子能較好地增強正負45度的圖像邊緣。
如公式(7)所示,分別表示圖像的水平方向和垂直方向的計算公式。
Robert算子像素的最終計算公式如下:
(3)Prewitt算子
Prewitt是一種圖像邊緣檢測的微分算子,其原理是利用特定區(qū)域內(nèi)像素灰度值產(chǎn)生的差分實現(xiàn)邊緣檢測。由于Prewitt算子采用3×3模板對區(qū)域內(nèi)的像素值進行計算,而Robert算子的模板為2×2,故Prewitt算子的邊緣檢測結(jié)果在水平方向和垂直方向均比Robert算子更加明顯。
Prewitt算子適合用來識別噪聲較多、灰度漸變的圖像,其計算公式如公式(9)所示。
Prewitt算子像素的最終計算公式如下:
(4)Sobel算子
Sobel算子是一種計算圖像明暗程度近似值的差分算子,它根據(jù)圖像邊緣旁邊明暗程度把該區(qū)域內(nèi)超過某個數(shù)的特定點記為邊緣。Sobel算子在Prewitt算子的基礎(chǔ)上增加了權(quán)重的概念,認為相鄰點的距離遠近對當(dāng)前像素點的影響是不同的,距離越近的像素點對應(yīng)當(dāng)前像素的影響越大,從而實現(xiàn)圖像銳化并突出邊緣輪廓。Sobel算子的邊緣定位更準(zhǔn)確,常用于噪聲較多、灰度漸變的圖像。
Sobel算子的模板如公式(12)所示,其中dx表示水平方向,dy表示垂直方向。
其像素計算公式如下:
Sobel算子像素的最終計算公式如下:
圖4為經(jīng)過四種算法處理后的結(jié)果。其中,Laplacian算子對噪聲比較敏感,由于其算法可能會出現(xiàn)雙像素邊界,常用來判斷邊緣像素位于圖像的明區(qū)或暗區(qū),很少用于邊緣檢測;Robert算子對陡峭的低噪聲圖像效果較好,尤其是邊緣正負45度較多的圖像,但定位準(zhǔn)確率較差;Prewitt算子對灰度漸變的圖像邊緣提取效果較好,而沒有考慮相鄰點的距離遠近對當(dāng)前像素點的影響;Sobel算子考慮了綜合因素,對噪聲較多的圖像處理效果更好。
圖5是對灰度轉(zhuǎn)換、二值化黑白處理后的圖像進行處理的結(jié)果,可以發(fā)現(xiàn)其邊緣提取的效果更為清晰,這也表明了本文提出算法的可行性。
8、柴油機燒機油冒藍煙。柴油機燒機油冒藍煙,除了檢查缸套活塞組是否磨損、活塞環(huán)彈力是否減弱、油底殼機油是否添加過量、空氣濾清器油面是否過高等原因后仍未解決問題,應(yīng)注意檢查氣門桿與氣門導(dǎo)管的配合間隙是否過大這一潛在的病因。
圖4 銳化處理及邊緣檢測效果
圖5 二值化處理后圖像 銳化處理結(jié)果
為了客觀地評價本文提出的基于Python的圖像銳化和邊緣檢測算法,本文共采集了100張具有代表性的苗族服飾圖像進行實驗,經(jīng)過灰度轉(zhuǎn)化處理、二值化處理、圖像銳化處理,通過Laplacian算子、Robert算子、Prewitt算子和Sobel算子提取苗族服飾的邊緣輪廓。
圖6是對苗族服飾刺繡的邊緣提取,可以看到彩色圖片經(jīng)過灰度二值化處理,不同圖像銳化算子處理的結(jié)果,處理后的輪廓包括各種動物以及花紋。
圖7是對苗族銀飾頭飾進行實驗,其左邊是原圖,右邊是經(jīng)過本文所提出的算法處理的邊緣輪廓,采用Robert算子的實驗結(jié)果。
圖6 苗族刺繡實驗結(jié)果
圖7 銀飾邊緣提取實驗結(jié)果
接著對兩位身著苗族服飾的男女圖像進行實驗,實驗結(jié)果如圖8所示。通過實驗處理,可以凸顯苗族服飾中的輪廓特色,包括苗族樂器蘆笙、苗族銀飾等。
本文的研究成果主要應(yīng)用于苗族服飾的文化遷徙研究以及圖像增強領(lǐng)域,以豐富邊緣提取的應(yīng)用,推動少數(shù)民族歷史圖像資料還原。本文通過提取苗族服飾的邊緣輪廓仿真實驗,實驗結(jié)果表明苗族服飾中的圖案多為龍、鳳、鱗紋、蝴蝶、銀扇、牛頭、花鳥等中國傳統(tǒng)的文化樣式,這些圖案都代表著苗族文化的遷徙傳承和文化圖騰。
本文采用灰度轉(zhuǎn)化和二值化處理可以將彩色圖像中的像素劃分為兩種顏色,再通過Laplacian算子、Robert算子、Prewitt算子和Sobel算子增強圖形的邊緣,提取圖像中的細節(jié),從而獲取更為清晰的苗族服飾圖像輪廓,實現(xiàn)邊緣提取,該方法具有重要的應(yīng)用前景和適用價值,可以廣泛應(yīng)用于邊緣提取、圖像銳化和民族文化圖像研究等領(lǐng)域。
圖8 身著苗族服飾男女圖像的實驗結(jié)果