楊秀璋,于小民,范郁鋒,李娜
(1.貴州財經大學信息學院,貴陽 550025;2.貴州財經大學貴州省經濟系統仿真重點實驗室,貴陽 550025;3.貴州財經大學計劃財務處,貴陽 550025;4.中國船舶工業系統工程研究院,北京 100036)
苗族服飾(苗語叫“嘔欠”)種類繁多,圖案精美,是中國少數民族服飾中的瑰寶,包括銀飾、苗繡、蠟染三大特色,涉及編織、刺繡、采摘、染色等中國傳統工藝技法,以復雜的裝飾,鮮艷的色彩和豐富的文化內涵而聞名,被史學家稱之為“穿在身上的史書”[1]。苗族服飾具有悠久的歷史,通過研究這些圖案,可以深入地研究苗族文化內涵和遷徙漂泊的歷史[2]。
圖像銳化和邊緣提取是數字圖像處理中經典的技術[3],國內外學者對其的研究取得了一定進展,在方法和實踐上都有不少的成果。王紅茹等[4]提出了一種有效的水下無人儀器的圖像實效增強算法;賈兆輝等[5]采用基于紅外直方圖的自適應紅外圖像增強算法進行分析;王月新等[6]分析研究了Sobel算子和Prewitt算子;周芳芹等[7]基于MATLAB研究了改進型Prewitt圖像銳化算法;沈德海等[8]改進了Sobel算子的邊緣檢測算法;聶洪印[9]提升了車牌識別系統中的關鍵算法;徐紅梅[10]通過民族文化圖像資料研究民族服飾傳承。但是這些方法都是針對傳統圖像進行邊緣提取的,沒有應用于苗族服飾領域,而且少數民族圖像的噪聲較多,圖像質量較差,這嚴重影響了文物還原和文化內涵研究工作。
針對苗族服飾圖像對比度低、噪聲較多、線條模糊等問題,本文旨在通過圖像銳化和邊緣檢測技術來提取苗族服飾中的圖案及線條,通過Laplacian算子、Robert算子、Prewitt算子和Sobel算子來進行邊緣檢測[11],以提升邊緣檢測的準確性,降低苗族服飾圖像中的噪聲,從而推進苗族文化和苗繡服飾領域的研究。本文的研究成果具有重要的理論研究意義和良好的實際應用價值,可以廣泛應用于少數民族文物和文化圖像還原工作,更好地幫助歷史學家和社會學家研究種族遷徙和文化傳承。
一個完整的圖像銳化和邊緣增強系統是個復雜的系統,主要包括圖像灰度轉換、二值化處理、圖像銳化等步驟,針對苗族服飾的圖像銳化和邊緣檢測的算法研究,本文提出了圖1所示的框架圖。

圖1 圖像銳化和邊緣處理框架圖
本文采用Python語言進行圖像處理實驗,首先將采集的苗族服飾圖像進行灰度轉化,接著通過二值化處理將灰度圖像中的像素劃分為兩種,最后是圖像銳化操作,通過各種圖像銳化算法來增強圖形的高頻部分,使得圖像中的邊緣細節更為突出,得到更為清晰的苗族服飾圖像,實現邊緣提取。
假設現在存在一張由M×N個像素點構成的圖像,其中每個像素點由紅綠藍三原色構成,這三種顏色在計算機系統的顏色模型中稱為RGB模型,其中(0,0,0)代表黑色,(255,255,255)代表白色。通過該模型,我們可以將圖像轉換為數字矩陣,每一個像素點對應一個數字編號,接著對苗族服飾圖像進行基于Python的銳化邊緣處理。
當得到一張256位色的圖像之后,首先要開展灰度轉化處理。灰度圖像中每個像素僅具有一種樣本顏色,其灰度是位于黑色與白色之間的多級色彩深度。假設某點的顏色由RGB(R,G,B)組成,常見灰度處理算法如表1所示:

表1 灰度處理算法
表1中Gray表示灰度處理之后的顏色,然后將原始RGB(R,G,B)顏色均勻地替換成新顏色RGB(Gray,Gray,Gray),從而將彩色圖片轉化為灰度圖像。一種常見的方法是將RGB三個分量求和再取平均值,但更為準確的方法是設置不同的權重,將RGB分量按不同的比例進行灰度劃分。例如人類的眼睛感官藍色的敏感度最低,敏感最高的是綠色,因此將RGB按照0.299、0.587、0.144比例加權平均能得到較合理的灰度圖像。算法流程如下:
算法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是彩色圖經過平均灰度處理方法的結果。

圖2 灰度處理結果
圖像的二值化(Binarization)旨在提取圖像中的目標物體,將背景以及噪聲區分開來。通常會設定一個閾值T,通過T將圖像的像素劃分為兩類:大于T的像素群和小于T的像素群。
灰度轉換處理后的圖像中,每個像素都只有一個灰度值,其大小表示明暗程度。二值化處理可以將圖像中的像素劃分為兩類顏色,常用的二值化算法如公式(1)所示:

當灰度Gray小于閾值T時,其像素設置為0,表示黑色;當灰度Gray大于或等于閾值T時,其Y值為1,表示白色。
Python OpenCV中提供了閾值函數threshold()實現二值化處理,常用的方法如表2所示,其中函數中的參數Gray表示灰度圖,參數127表示對像素值進行分類的閾值,參數255表示像素值高于閾值時應該被賦予的新像素值,最后一個參數對應不同的閾值處理方法。
二值化處理廣泛應用于各行各業,例如生物學中的細胞圖分割、交通領域的車牌設別等。在文化應用領域中,通過二值化處理將所需民族文物圖像轉換為黑白兩色圖,從而為后面的圖像識別提供更好的支撐作用。

表2 二值化處理算法
圖3表示圖像經過各種二值化處理算法后的結果,其中“BINARY”是最常見的黑白兩色處理。

圖3 二值化處理結果
由于收集圖像數據的器件或傳輸數圖像的通道的存在一些質量缺陷,文物圖像時間久遠,或者受一些其他外界因素、動態不穩定抓取圖像的影響,使得圖像存在模糊和有噪聲的情況,從而影響到圖像識別工作的開展。這時需要開展圖像銳化和邊緣檢測處理,加強原圖像的高頻部分,銳化突出圖像的邊緣細節,改善圖像的對比度,使模糊的圖像變得更清晰。
圖像銳化和邊緣提取技術可以消除圖像中的噪聲,提取圖像信息中用來表征圖像的一些變量,為圖像識別提供基礎。通常使用灰度差分法對圖像的邊緣、輪廓進行處理,將其凸顯。本文分別采用Laplacian算子、Robert算子、Prewitt算子和Sobel算子進行圖像銳化邊緣處理實驗。
(1)Laplacian算子
Laplacian算子是基于二階微分的圖像增強領域的常用算法,通過灰度差分計算鄰域內的像素。基本流程是:判斷圖像中心像素灰度值與它周圍其他像素的灰度值,如果中心像素的灰度更高,則提升中心像素的灰度;反之降低中心像素的灰度。Laplacian算子分為四鄰域和八鄰域,四鄰域是對鄰域中心像素的四方向求梯度,八鄰域是對八方向求梯度,再通過梯度求和計算鄰域其他像素灰度值與中心像素灰度值的關系,通過梯度調整結構。

四鄰域模板如公式(2)所示,其像素的計算公式可以簡化為:

八鄰域模板如下:

其像素的計算公式可以簡化為:

(2)Robert算子
Robert算子是通過局部差分計算檢測邊緣線條,它是基于交叉差分的梯度算法。常用來處理具有陡峭的低噪聲圖像,當圖像邊緣接近于正45度或負45度時,該算法處理效果更理想。其缺點是對邊緣的定位不太準確,提取的邊緣線條較粗。
Robert算子的模板分為水平方向和垂直方向,如公式(6)所示,從其模板可以看出,Robert算子能較好地增強正負45度的圖像邊緣。

如公式(7)所示,分別表示圖像的水平方向和垂直方向的計算公式。

Robert算子像素的最終計算公式如下:

(3)Prewitt算子
Prewitt是一種圖像邊緣檢測的微分算子,其原理是利用特定區域內像素灰度值產生的差分實現邊緣檢測。由于Prewitt算子采用3×3模板對區域內的像素值進行計算,而Robert算子的模板為2×2,故Prewitt算子的邊緣檢測結果在水平方向和垂直方向均比Robert算子更加明顯。
Prewitt算子適合用來識別噪聲較多、灰度漸變的圖像,其計算公式如公式(9)所示。


Prewitt算子像素的最終計算公式如下:

(4)Sobel算子
Sobel算子是一種計算圖像明暗程度近似值的差分算子,它根據圖像邊緣旁邊明暗程度把該區域內超過某個數的特定點記為邊緣。Sobel算子在Prewitt算子的基礎上增加了權重的概念,認為相鄰點的距離遠近對當前像素點的影響是不同的,距離越近的像素點對應當前像素的影響越大,從而實現圖像銳化并突出邊緣輪廓。Sobel算子的邊緣定位更準確,常用于噪聲較多、灰度漸變的圖像。
Sobel算子的模板如公式(12)所示,其中dx表示水平方向,dy表示垂直方向。

其像素計算公式如下:

Sobel算子像素的最終計算公式如下:

圖4為經過四種算法處理后的結果。其中,Laplacian算子對噪聲比較敏感,由于其算法可能會出現雙像素邊界,常用來判斷邊緣像素位于圖像的明區或暗區,很少用于邊緣檢測;Robert算子對陡峭的低噪聲圖像效果較好,尤其是邊緣正負45度較多的圖像,但定位準確率較差;Prewitt算子對灰度漸變的圖像邊緣提取效果較好,而沒有考慮相鄰點的距離遠近對當前像素點的影響;Sobel算子考慮了綜合因素,對噪聲較多的圖像處理效果更好。
圖5是對灰度轉換、二值化黑白處理后的圖像進行處理的結果,可以發現其邊緣提取的效果更為清晰,這也表明了本文提出算法的可行性。
8、柴油機燒機油冒藍煙。柴油機燒機油冒藍煙,除了檢查缸套活塞組是否磨損、活塞環彈力是否減弱、油底殼機油是否添加過量、空氣濾清器油面是否過高等原因后仍未解決問題,應注意檢查氣門桿與氣門導管的配合間隙是否過大這一潛在的病因。

圖4 銳化處理及邊緣檢測效果

圖5 二值化處理后圖像 銳化處理結果
為了客觀地評價本文提出的基于Python的圖像銳化和邊緣檢測算法,本文共采集了100張具有代表性的苗族服飾圖像進行實驗,經過灰度轉化處理、二值化處理、圖像銳化處理,通過Laplacian算子、Robert算子、Prewitt算子和Sobel算子提取苗族服飾的邊緣輪廓。
圖6是對苗族服飾刺繡的邊緣提取,可以看到彩色圖片經過灰度二值化處理,不同圖像銳化算子處理的結果,處理后的輪廓包括各種動物以及花紋。
圖7是對苗族銀飾頭飾進行實驗,其左邊是原圖,右邊是經過本文所提出的算法處理的邊緣輪廓,采用Robert算子的實驗結果。

圖6 苗族刺繡實驗結果

圖7 銀飾邊緣提取實驗結果
接著對兩位身著苗族服飾的男女圖像進行實驗,實驗結果如圖8所示。通過實驗處理,可以凸顯苗族服飾中的輪廓特色,包括苗族樂器蘆笙、苗族銀飾等。
本文的研究成果主要應用于苗族服飾的文化遷徙研究以及圖像增強領域,以豐富邊緣提取的應用,推動少數民族歷史圖像資料還原。本文通過提取苗族服飾的邊緣輪廓仿真實驗,實驗結果表明苗族服飾中的圖案多為龍、鳳、鱗紋、蝴蝶、銀扇、牛頭、花鳥等中國傳統的文化樣式,這些圖案都代表著苗族文化的遷徙傳承和文化圖騰。
本文采用灰度轉化和二值化處理可以將彩色圖像中的像素劃分為兩種顏色,再通過Laplacian算子、Robert算子、Prewitt算子和Sobel算子增強圖形的邊緣,提取圖像中的細節,從而獲取更為清晰的苗族服飾圖像輪廓,實現邊緣提取,該方法具有重要的應用前景和適用價值,可以廣泛應用于邊緣提取、圖像銳化和民族文化圖像研究等領域。

圖8 身著苗族服飾男女圖像的實驗結果