【CV現狀-3.2】紋理與材質
- 2019 年 10 月 3 日
- 筆記
#磨染的初心——計算機視覺的現狀
【這一系列文章是關於計算機視覺的反思,希望能引起一些人的共鳴。可以隨意傳播,隨意噴。所涉及的內容過多,將按如下內容劃分章節。已經完成的會逐漸加上鏈接。】
- 緣起
- 三維感知
- 目標識別
3.0. 目標是什麼
3.1. 圖像分割
3.2. 紋理與材質
3.3. 特徵提取與分類
3.4. 其它 - 目標(和自身)在三維空間中的位置關係
- 目標的三維形狀及其改變、目標的位移
- 符號識別
- 數字圖像處理
紋理與材質
在前文中提到的分割算法中,基於區域的方法和基於圖割的方法都利用了基於紋理的相似性度量方法。另外,除了基於卷積神經網絡的算法之外,目前所有的分割算法都存在嚴重的過分割,區域合併將是不得不採納的選擇。對於區域合併來說,紋理相似性是一種非常重要的相似性度量方法。那麼紋理是什麼呢?到目前為止,這個問題並沒有被廣泛認同的答案,甚至已經鮮有人繼續關注了。但是基於我們的第一個感覺可以很容易的給出一個答案,紋理是反應空間上同質性的視覺特徵,它體現了物體表面的具有緩慢變化或者周期性重複的視覺要素的組織排列屬性。這個答案包含了紋理描述的線索——緩慢變化或者周期性重複,然而除了緩慢變化或者周期性重複這個兩個特徵本身的描述之困難外,組成紋理的視覺要素是什麼也沒有明確的答案,不同算法對其做出了不同的假設。目前紋理描述與分析算法歸納起來可以分為五類——結構分析方法、統計方法、特徵描述法、模型擬合法、信號處理法。

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

模型擬合法認為圖像上的灰度值是一個以二維圖像坐標為自變量之一灰度值為因變量的參數化模型,從而將紋理特徵提取歸結為參數估計問題, 如何採用各種優化參數估計的方法進行參數估計是模型家族研究的主要內容。顯然可以預見該類算法必然計算量大,效果也定然不如人意。圖像內容千差萬別,簡單模型必然難以有效表達,複雜模型更加難以求解。
信息號處理方法的主要依據是紋理的周期性特點,將圖像視作承載信號的波函數,從而從信息濾波器設計的角度對紋理進行描述和分析。較為常用的是小波分解,人工設計不同的小波核對圖像進行濾波,提取出符合不同小波結構的分量。然而通過對上面紋理圖像的觀察可以發現,很多自然紋理並不嚴格具有周期性,周期性更多的體現在組成紋理的視覺要素的抽象概念層面和統計層面。另外一個問題就是噪聲干擾嚴重。
除了紋理的描述和分析之外,還需要注意到的是,紋理和材質是有對應關係的。而材質則對應了一些物理屬性——硬度、彈性、質量、可塑性,說明了材料潛在的功用。在紋理描述和分析的基礎上,是否有必要開展材質識別的研究?筆者認為是很有必要的。紋理的描述和分析首先是有利於圖像分割,其次對於目標識別也有很大的促進作用。
