磨染的初心——計算機視覺的現狀(3.2):紋理與材質
在前文中提到的分割演算法中,基於區域的方法和基於圖割的方法都利用了基於紋理的相似性度量方法。另外,除了基於卷積神經網路的演算法之外,目前所有的分割演算法都存在嚴重的過分割,區域合併將是不得不採納的選擇。對於區域合併來說,紋理相似性是一種非常重要的相似性度量方法。那麼紋理是什麼呢?到目前為止,這個問題並沒有被廣泛認同的答案,甚至已經鮮有人繼續關注了。但是基於我們的第一個感覺可以很容易的給出一個答案,紋理是反應空間上同質性的視覺特徵,它體現了物體表面的具有緩慢變化或者週期性重複的視覺要素的組織排列屬性。這個答案包含了紋理描述的線索——緩慢變化或者週期性重複,然而除了緩慢變化或者週期性重複這個兩個特徵本身的描述之困難外,組成紋理的視覺要素是什麼也沒有明確的答案,不同演算法對其做出了不同的假設。目前紋理描述與分析演算法歸納起來可以分為五類——結構分析方法、統計方法、特徵描述法、模型擬合法、訊號處理法。
在介紹這些紋理描述和分析方法之前,先來觀察一些紋理影象。左上角的兩幅紋理影象是嚴格符合週期性重複這一直覺的,至於其他紋理影象,如果仔細比對一下人類能夠提取出來的組成紋理的視覺要素,將會發現沒有任何兩個視覺要素是一模一樣的。如果觀察到了由一模一樣的視覺要素組成的紋理圖案,人類只要一眼就能強烈地感受出來,這一定是人造物,一定是機械製造的。如果因而就將紋理的特點總結為“整體表現出規律性,區域性表現出隨機性”是沒有任何意義的,還應該追根究底地繼續問一問。我們確實感受到了“緩慢變化和週期性重複”這兩個規律性,這到底是什麼原因呢?回到上面的紋理影象,稍作思考可以給出一個初步的回答——視覺要素的大小、間距、方向、形狀在統計上反應出來了趨同性。
在上面的敘述中,一直在使用“視覺要素”一詞,那麼組成紋理的視覺要素到底是什麼?相信所有考慮過紋理問題的研究者都會感覺到這個問題的答案就在腦子裡縈繞,就在嘴邊。然而有些人自信滿滿地認為這樣就算是解答了,有些人卻焦慮地發現近在眼前的答案就是抓不住,我就是其中一個抓不住的。但是關於如何回答這個問題,有一個模糊的思路——蒐集很多紋理,讓很多人來描述,然後分析人類對紋理的描述。例如,“按行排列的方磚,行之間有交錯,方磚之間的間距均等”,“緊密排列的細杆,兩排細杆相互交疊”,“鑲嵌鋪陳的碎石板,石板有大有小,邊緣略平直”,“表面稍有起伏,無尖銳突起的石板”,“平整多坑的紅磚面”,“坑坑窪窪的泥土裹挾碎石的土牆”,“表面平整,有縱橫交錯長短不一的平直劃痕”,“在一個方向上相互壓疊的鱗片狀蛇腹皮”,“佈滿長短不一平直或弧形淺細溝槽的皮革”,“擠壓粘連在一起的碎木片形成的平板”,“一環套一環的圈紋,還有放射狀裂縫”,“縱向延展的細裂紋樹皮”,“縱向延展的粗裂紋樹皮”,“一端尖、一端寬的狹長條帶,寬端集束,尖端發散,草皮”,“絲狀交錯盤繞的草皮,散佈了一些落葉”……
這一系列關於紋理的語言描述彷彿讓紋理描述和分析變得更難了,其中提到的視覺要素,如方磚、細杆、石板、尖銳凸起、坑、劃痕、鱗片、裂痕、條帶,竟然是需要識別的目標!甚至還需要用到三維感知的結果! 但是又有什麼別的辦法呢?!這總算是讓組成紋理的視覺要素變得具體一些了。直接對紋理的描述是如此艱難,或許應該跳出來,看看紋理之間有那些顯然的區別。從上面的紋理圖案中可以看出,組成紋理的視覺要素有的大,有的小,有的規整,有的複雜,有的排布整齊,有的排布錯亂,有的狹長,有的短粗……這些區別對於斑塊狀紋理的區分是很有意義的,對於絲狀、網狀、脈狀紋理(上圖的劃痕紋理)彷佛並沒有太大的價值。斑塊狀紋理易於分割出組成紋理的視覺要素,而組成絲狀、網狀、脈狀紋理的視覺要素則難以分割出來,他們只是圖上細小的前景,分割後易於混入背景。那麼是否需要開發用於分割絲狀、網狀、脈狀紋理圖的分割演算法呢?
帶著這些關於紋理的思考,開始紋理描述與分析演算法的介紹吧。當然,不會深入到細節,因為他們都不好使。另外關於紋理分析和描述方法的分類是依據方法所基於的假設而不是具體的演算法,如,屬於結構分析方法的具體演算法也會用到統計、濾波等手段。
結構分析方法假設紋理是由紋理基元(即組成紋理的視覺要素的一種)按某種規則排列形成的,這類方法的兩個核心要點在於基元建模和排列建模,但是並沒有廣泛使用的好方法出現。此外結構方法只適合於描述和分析規則的紋理。
統計方法認為紋理可以通過像元值的空間分佈來描述,這裡涉及到兩個不同維度——像元值維度和空間維度。值得注意的是,這兩個維度相對於一般意義上多維向量有很大的區別——量綱不同,且量綱具有至關重要的作用,各自又可以有多個維度(二維平面,三維空間,以及RGB波段)。一般為了兼顧兩者,都會採用加窗的方式進行統計,又帶來了需要設定視窗寬度這個超引數的問題。實踐發現,很多不同的紋理在多種統計值上是相同的。統計方法中較為常用的是灰度共生矩陣(GLCM),知道其原理的人都會承認這個演算法對紋理的描述實際上是掛一漏萬的,僅從方向和步長兩方面來說,要完全描述紋理將會需要無法忍受的計算量和資料量。
特徵描述方法認為影象區域性的灰度變化表現出一定的特徵,將區域性特徵用某種特徵提取手段提取出來,獲取與影象對應的特徵影象。區域性二值模式(LBP)應該是該模式的早期代表,當前大火的CNN也應該歸於此類。在《紋理影象分析》一書中將紋理描述和分析方法歸為了4類,LBP歸於模型方法中。在論文《影象紋理特徵提取方法綜述》中將紋理描述和分析方法同樣歸為4類,LBP歸於統計方法中。筆者認為將LBP歸於這兩類都是不合適的,LBP更類似於通過經驗和觀察總結出來的類似於HAAR、HOG的特徵提取運算元。一個特徵提取運算元能提取某一方面的特徵,通常需要大量的特徵描述運算元才能對紋理進行有效的描述。到目前為止,到底有多少可用的特徵提取運算元呢?
模型擬合法認為影象上的灰度值是一個以二維影象座標為自變數之一灰度值為因變數的引數化模型,從而將紋理特徵提取歸結為引數估計問題, 如何採用各種優化引數估計的方法進行引數估計是模型家族研究的主要內容。顯然可以預見該類演算法必然計算量大,效果也定然不如人意。影象內容千差萬別,簡單模型必然難以有效表達,複雜模型更加難以求解。
資訊號處理方法的主要依據是紋理的週期性特點,將影象視作承載訊號的波函式,從而從資訊濾波器設計的角度對紋理進行描述和分析。較為常用的是小波分解,人工設計不同的小波核對影象進行濾波,提取出符合不同小波結構的分量。然而通過對上面紋理影象的觀察可以發現,很多自然紋理並不嚴格具有周期性,週期性更多的體現在組成紋理的視覺要素的抽象概念層面和統計層面。另外一個問題就是噪聲干擾嚴重。
除了紋理的描述和分析之外,還需要注意到的是,紋理和材質是有對應關係的。而材質則對應了一些物理屬性——硬度、彈性、質量、可塑性,說明了材料潛在的功用。在紋理描述和分析的基礎上,是否有必要開展材質識別的研究?筆者認為是很有必要的。紋理的描述和分析首先是有利於影象分割,其次對於目標識別也有很大的促進作用。