文/曹野
制作樂器時,共鳴板材的選擇過程長期依靠人力進行評判,這種依賴性使得此過程過于主觀,且受評估者的經(jīng)驗、情緒以及環(huán)境光線等多種因素的影響[1]。最近幾年,隨著計算機處理能力的加強與提升,借用計算機視覺識別技術(shù)進行板材分析的研究方法受到了廣泛的關(guān)注和重視[2]。在視覺識別的各種技術(shù)中,邊緣檢測方法作為主要的分析手段,以Canny算子的應(yīng)用最為普遍。然而,在使用傳統(tǒng)的Canny算子時,需提前設(shè)定閾值,而閾值的大小對于分析結(jié)果有顯著影響。Canny算子在計算紋理間距以及平均紋理間距的過程中,需要消除紋理寬度本身對于計算結(jié)果的影響,這將會使得計算量增加,相應(yīng)也會提高測量的難度[3]。Zhang-suen算法作為經(jīng)典的并行細化算子,因其運算速度快且易于操作,被廣泛應(yīng)用在各個領(lǐng)域[4]。然而,這種方式生成的圖像大多為傳統(tǒng)的位圖,盡管這種類型的圖像方便于保存和查看,但進行如物體編輯、保持圖像清晰度的縮放等,將面臨困難[5]。相比之下,經(jīng)過矢量化處理的圖像具有可編輯的屬性,如變形、融合等;同時可以忽略位圖的分辨率限制,可以自由地進行放大和縮小[6]。二者結(jié)合生成的矢量圖像對古琴共鳴板的紋理研究有一定價值,為后續(xù)研究如板材紋理與樂器發(fā)聲質(zhì)量之間的關(guān)系奠定了基礎(chǔ)。
泡桐古琴面板20張,材料均來自沈陽音樂學(xué)院音樂科技系弦樂器制作團隊,含水率在遼寧省沈陽市4月中旬時為15%左右。
圖像采集選用佳能850D相機,垂直掛起于被采集區(qū)域上方,高度1m。平行于相機左右各設(shè)置1臺傘式燈罩,增加光照,去除重影。鏡頭光圈f1.8,感光度ISO100,快門速度1/125秒。采集圖像直接輸出RAW無損格式到計算機。
Canny算子在確定邊緣點的過程中會遵循以下幾個具體的算法步驟:
利用高斯濾波器對圖像進行平滑處理;通過一階偏導(dǎo)的有限差分計算出梯度的幅度和方向;
對梯度幅度進行非極大值抑制;采用雙閾值算法對邊緣進行檢測和連接。然而,在這一過程中,也存在著以下的缺陷:高斯濾波器的大小會直接影響Canny算法的輸出結(jié)果。使用較小的濾波器所產(chǎn)生的模糊效果較輕,可以用于檢測小尺寸且變化明顯的線條。而較大的濾波器所產(chǎn)生的模糊效果較重,可以將較大的圖像區(qū)域涂成一個特定的顏色值,這對于檢測大尺寸且平滑的邊緣更為有效,例如彩虹的邊緣。如果閾值設(shè)置過高,可能會喪失重要的信息;如果閾值設(shè)置過低,則可能會對邊緣信息進行過度解讀。對于所有圖像來說,很難找到一個通用的閾值設(shè)定。
Zhang-Suen細化算法常被視為一種迭代處理方式,該迭代過程主要分為兩個階段:
階段一:對所有的前景像素點進行遍歷,對于滿足以下特定條件的像素點,將其標(biāo)記為待刪除:
像素點P1的相鄰像素點數(shù)量N(P1)應(yīng)在2到6之間;P1到P2,再到P9,然后回到P2的像素中,從背景到前景的累計變化次數(shù)S(P1)應(yīng)為1;P2、P4和P6三者的乘積應(yīng)為0;P4、P6和P8三者的乘積應(yīng)為0。在此,N(P1)是指與P1相鄰的8個像素點中,前景像素點的數(shù)量。而S(P1)是指在從P2到P9,再回到P2的像素中,從背景轉(zhuǎn)換為前景的累計次數(shù),其中0代表背景,1代表前景。對于完整的P1到P9的像素位置及其示例,發(fā)現(xiàn)N(P1)=4,S(P1)=3,P2×P4×P6=0×0×0=0,P4×P6×P8=0×0×1=0,由于這并不滿足前述條件,因此無需將其標(biāo)記為刪除。
階段二:這一階段與階段一極其類似,條件1和2與階段一完全相同,只是條件3和4有所不同。如果像素P1滿足以下條件,將其標(biāo)記為待刪除:像素點P1的相鄰像素點數(shù)量N(P1)應(yīng)在2到6之間;P1到P2,再到P9,然后回到P2的像素中,從背景到前景的累計變化次數(shù)S(P1)應(yīng)為1;P2、P4和P8三者的乘積應(yīng)為0;P2、P6和P8三者的乘積應(yīng)為0。將以上兩個階段進行循環(huán),直到在兩個階段中都沒有像素被標(biāo)記為刪除。此時,得到的結(jié)果即為二值圖像經(jīng)過細化處理后的骨架。
之后以Zhang-Suen細化算法對所采集的RAW圖像進行遍歷及迭代計算,在得到細化圖像后代入Canny算子進行邊緣點求解運算。此過程中Zhang-Suen細化算法可以去除偽影、光照的影響及后續(xù)閾值的人為選取,從而優(yōu)化邊緣檢測算子。
目前市面上存在眾多的算法和工具用于實現(xiàn)矢量化,然而每種算法和工具都具有其獨特的優(yōu)勢和局限性,以適應(yīng)各種不同的應(yīng)用環(huán)境和需求[7]。本次實驗中,采用Potrace庫,驗證步驟如下:
導(dǎo)入所需的庫:numpy,potrace,PIL(Python Imaging Library)。加載光柵圖像,并將其轉(zhuǎn)換為灰度圖像。將圖像轉(zhuǎn)換為布爾值:創(chuàng)建一個新的bitmap,對應(yīng)于原圖像的像素值大于128的部分,值為True。對應(yīng)于原圖像的像素值小于等于128的部分,值為False。使用potrace庫的Bitmap函數(shù)創(chuàng)建一個新的bitmap對象,然后調(diào)用transform方法來對bitmap進行變換,將bitmap轉(zhuǎn)換為SVG格式的矢量圖像。
圖1為傳統(tǒng)Canny算子提取的紋理圖像矢量化的結(jié)果,圖2為Zhang-suen 算法細化對傳統(tǒng)Canny算子進行改進后矢量化的結(jié)果。
圖1 傳統(tǒng)Canny算子提取的紋理圖像
圖2 Zhang-suen 算法細化對傳統(tǒng)Canny算子進行改進后的提取的紋理圖像
通過細致的對比分析,可以明顯地發(fā)現(xiàn),圖2相較于圖1在處理大量虛假邊緣和紋理斷裂方面有了顯著的改善。此外,圖2對于板材本身的紋理寬度進行了優(yōu)化和提取,能夠更客觀地反映紋理的走勢。這一改進使得紋理之間的寬度變化得以更為精確地表現(xiàn),從而便于后續(xù)步驟的計算,并且優(yōu)化了偽影對實驗結(jié)果的影響。這種優(yōu)化和提取的過程,不僅增強了圖像的清晰度,也提供了更多的信息,以便于進行更為深入的研究和分析。
圖3為傳統(tǒng)Canny算子提取紋理圖像的矢量化圖形,圖4為Zhang-suen算法細化對傳統(tǒng)Canny算子進行改進后提取紋理圖像的矢量化圖形。
圖4 Zhang-suen 算法細化對傳統(tǒng)Canny算子進行改進后提取紋理圖像的矢量化圖形
觀察可知,優(yōu)化后的算法對于矢量化的支持度顯著提升,生成的圖像相較于之前的版本,偽影現(xiàn)象大幅度減輕,紋理的斷裂問題也得到了顯著的改善。經(jīng)過一系列的優(yōu)化處理,算法的性能得到了顯著的提高,能夠更有效地進行矢量化處理,生成的圖像質(zhì)量更高,更加清晰,對于后續(xù)的研究和分析工作提供了重要的支持。
現(xiàn)階段,圖像矢量化的評估方法多種多樣,針對不同的原始圖像,所采用的評價方法也有所不同[8]。對于像板材紋理這樣的相對簡單且清晰的圖像,評價方法主要包括以下幾個方面:矢量化后生成圖形的數(shù)據(jù)量;數(shù)據(jù)量的大小直接影響著矢量紋理的斷裂程度,同時,也與數(shù)據(jù)的傳輸速度有關(guān)。因此,理想的情況是數(shù)據(jù)量越少越好。矢量化后生成圖形的精確度;精確度是衡量生成圖像與原始格柵圖像相似度的重要指標(biāo),只有它們的差異不大,這個矢量化過程才能被認為是有意義的。整個過程所需的時間涉及矢量化算法的效率問題,時間越短,效率越高。整個過程操作的方便程度涉及用戶體驗問題,操作越簡便,用戶體驗就越好[9]。然而,目前尚無完全適用所有情況的評價指標(biāo)。本文采用光柵化圖像的像素最大誤差Emax、像素平均誤差Eave以及像素平均誤差模長Enorm,與矢量化后的對應(yīng)值進行對比,作為檢測古琴面板矢量化的檢測指標(biāo),步驟如下:
1.導(dǎo)入numpy、cv2。
2.確保原始圖像和重建圖像具有相同的尺寸,將圖像轉(zhuǎn)換為浮點數(shù)據(jù)類型便于后續(xù)的數(shù)學(xué)運算。
3.對于每個像素,計算原始圖像和重構(gòu)圖像的相應(yīng)顏色組件(R、G和B)之間的絕對差異。
4.計算最大像素誤差,表示為Emax。通過識別所有像素的顏色差異之和的最大值,然后乘以13。
5.計算平均像素誤差,表示為Eave。這是通過將所有像素的顏色差異相加,然后將結(jié)果除以13和像素總數(shù)(圖像的寬度×高度)得到的。
6.計算像素平均誤差規(guī)范,表示為Enorm。這涉及到計算顏色差異平方和的平方根,然后將此值除以像素總數(shù)。
最終節(jié)選結(jié)果如下表所示:
表1 調(diào)律和平均律演進
以上三種驗證方式誤差值總體小于0.6,表明矢量化效果總體較好。
Zhang-suen算法結(jié)合Canny算子選材方式的簡單、高效,而且無需復(fù)雜儀器的輔助。采用光柵化圖像的像素最大誤差Emax、像素平均誤差Eave以及像素平均誤差模長Enorm,與矢量化后的對應(yīng)值進行對比,作為檢測古琴面板矢量化的檢測指標(biāo)。實驗結(jié)果表明,Zhang-suen算法結(jié)合Canny算子相比于肉眼選材和傳統(tǒng)的Canny算子選材,能夠顯著提高選材的成功率,實現(xiàn)了古琴板材的初步篩選。然而,共鳴板材的選擇并非只能依賴于紋理,材質(zhì)的振動特性也是需要考慮的重要因素,材質(zhì)紋理與振動特性之間的關(guān)系有待進一步研究和探索。