來源:AI公園,作者:Trapti Kalra
編譯:ronghuaiyang
導讀
紋理分析的介紹,各種紋理分析方法,并結合深度學習提升紋理分類。
人工智能的一個獨特應用領域是幫助驗證和評估材料和產品的質量。在IBM,我們開發了創新技術,利用本地移動設備,專業的微型傳感器技術,和AI,提供實時、解決方案,利用智能手機技術,來代替易于出錯的視覺檢查設備和實驗室里昂貴的設備。
在開發質量和可靠性檢查的人工智能能力的同時,產品和材料的圖像需要是高清晰度的或者是微觀尺度的,因此,設計能夠同時代表采樣圖像的局部和全局獨特性的特征變得極為重要。利用來自紋理分析方法的特征來豐富基于深度CNN的模型是一種非常有效的方法來實現更好的訓練模型。
為了更好地理解紋理分析方法在深度學習中的應用,我們先來了解一下什么是紋理分析。
什么是紋理?
紋理是粗糙度、對比度、方向性、線條相似性、規則性和粗糙度的度量,有助于我們理解圖像中顏色或強度的空間排列。紋理是圖像強度中局部變化的重復模式(圖1)。
圖1,紋理圖像示例 (a)原始圖像,(b)紋理重復模式
紋理由紋理原語或紋理元素組成,有時被稱為元紋理。元紋理用于從圖像中找到對象的色調和紋理。圖像的色調取決于元紋理的像素強度屬性,而紋理處理元紋理之間的空間連接。
例如,如果元紋理之間的色調差異很大,而元紋理的尺寸很小,它就像一個精細的紋理,如果一個元紋理包含很多像素,那么它就像一個粗糙的紋理。
我們需要了解不同類型的紋理才能正確地分析它們。在開始任何與紋理相關的項目之前,最好知道你將處理什么樣的紋理。
不同類型的紋理
紋理的分類是困難的,因為它的一些屬性,如規律性、隨機性、均勻性和變形沒有得到適當的定義,以及紋理類型是廣泛的和復雜的。
通常,紋理像粗糙,凹凸,干燥,光澤,沙質,硬,尖銳等,屬于粗糙類別,而紋理像細,光滑,濕,皺,絲滑,軟,暗等,屬于光滑類別。
廣義上,紋理分為兩類,即觸覺和視覺紋理。
觸覺指的是一個表面的直接有形的感覺,即觸覺紋理就像一個真實的對象。當一個物體被觸摸時,我們可以感覺到它的質地。手感可以是光滑、柔軟、堅硬、黏滑、粗糙、粘滑、絲滑等。自然紋理的例子有木頭、巖石、玻璃、金屬、樹葉等,如圖2所示。
圖2,自然紋理的例子
視覺紋理被定義為紋理產生給人類觀察者的視覺印象,也就是說,它不是真正的紋理,但它是人從圖像中檢查紋理的方法。照片中的物體可能看起來很粗糙,但是,照片的感覺總是平坦和光滑的。
根據視覺紋理的隨機性程度,可以進一步將視覺紋理分為規則紋理和隨機紋理。
將簡單可識別的小尺寸的部分平貼到固體周期模式中,形成“規則紋理”(圖3),而隨機模式中較難識別部分組成“隨機紋理”(圖4)。
圖3,規則紋理的例子
圖4,隨機紋理的例子
那么,現在最大的問題是,紋理分析在提高計算機視覺任務中深度學習的有效性方面的意義是什么?
紋理分析用在哪里?
如今,紋理分析是許多任務的重要組成部分,從醫學影像到遙感,也被用于大型圖像數據庫的內容查詢。
在工業檢測中,當現有的技術無法解決的時候,紋理分析是一個強大的工具。讓我們以木材制造為例,在這種情況下,不使用紋理分析很難檢測裂紋。
紋理檢測還用于對地毯進行分級中,根據地毯因磨損引起的外觀變化。紋理分析用于皮革檢查,通過評估顏色、厚度和灰度變化。有缺陷的碎片通常會在皮革上留下疤痕或褶皺。
紋理分析的應用范圍包括紋理分類,如遙感(圖5),紋理分割,如生物醫學成像(圖6)。它還被用于圖像合成和模式識別任務,如從照片中識別繪畫。
當圖像中的物體是通過紋理屬性而不是強度進行分類,或者閾值技術無法對其進行正確分類時,紋理分析就發揮了重要作用。
圖5,利用紋理分析的遙感圖像。由遙感領域的專家對這些紋理模式進行聚類識別和標記
下圖(圖6)顯示了二流腔靜脈的超聲圖像(圖的下三分之一處為鈍區)。肝臟的分割,被白色斑點包圍的區域,顯示出與周圍組織相比獨特的紋理。
圖6,利用紋理分析的醫學圖像
如今,紋理分析也被用于食品制造行業,以了解食品的質量。硬糖、耐嚼的巧克力曲奇、脆餅干、粘稠的太妃糖、脆芹菜、嫩牛排等食物都含有多種紋理。紋理分析在這一領域有很大的應用,例如食物的口感特性可以通過紋理分析很容易地測量出來。
它也被用于一項名為“流變學”的研究,這是一門研究物質變形和流動的科學,換句話說,是研究物體受到外力作用時的反應。
除了所有這些,紋理分析可以用來測量/評估許多產品的質量,如粘合劑,藥品,皮膚/頭發護理產品,聚合物等。
到目前為止,我們已經了解了紋理分析可以應用在哪里,在下一節讓我們看看如何根據紋理對圖像進行分類。
紋理分析如何應用到分類問題中以及為何它如此重要?
到目前為止,我們已經了解了不同類型的紋理,并看到了現實生活中紋理分析很有用的例子。讓我們了解如何在分類問題中使用它,分類器的主要目標是通過為每個圖像提供描述符來對紋理圖像進行分類。換句話說,
分配一個未知的樣本到一個預定義的紋理類被稱為紋理分類
在進行紋理分類時,考慮了圖像的圖案和紋理內容。基于紋理的分類是基于紋理特征(如粗糙度、不規則性、均勻性、平滑度等)進行的。任何圖像數據集中的每個類都很可能具有不同的紋理,這使得它成為一個獨特的屬性,有助于模型更準確地對圖像進行分類。
提取紋理的不同技術和方法
有多種方法用于從圖像中提取紋理。在本文中,我們將討論最常用和最重要的紋理提取方法。
GLCM (Grey Level Co-occurrence Matrix,灰度共生矩陣)是一種常用的、基本的紋理分析統計方法。GLCM特征基于二階統計量,用于從均勻性、同質性等角度了解像素間的平均相關程度。
LBP是一種結合了結構和統計方法的方法,使紋理分析更有效。現實中LBP的一個重要特征是它對不同光照條件引起的單調的灰度變化的容忍度。它的簡單計算允許在實時場景中使用。
小波是一種基于變換的方法,可以捕捉局部的頻率和空間信息。GLCM和LBP關注的是紋理的空間排列,但紋理的關鍵要素是尺度,根據一項心理-視覺研究,我們的大腦處理圖像的方式是多尺度的。我們的大腦會進行不同的空間頻率分析來識別紋理。基于這一思想,小波分析關注的是頻率和空間信息。
分形是圖像自相似性和粗糙度的重要度量。它能夠表征其他紋理分析方法所不能表征的紋理。有各種各樣的技術來測量圖像的平滑度、均勻度、平均值和標準差,但分形方法主要關注圖像紋理的“粗糙度”,并相應地對紋理進行分類。
圖像梯度是一種檢測圖像邊緣的完美技術,因為它變得更容易識別紋理時,邊緣高亮。紋理邊界用于自然邊界的有效劃分,一旦這些邊界被正確識別,基于這些邊界的紋理區分就很簡單了。
這五種方法對不同的紋理數據集都取得了滿意的結果。每種技術都強調紋理的獨特屬性。在下面的部分中,我們將研究這些技術的特征構造方法。
灰度共生矩陣 (GLCM):
GLCM提供了關于圖像像素之間如何相互關聯的信息,這種關系幫助我們根據從GLCM中提取的多個特征對紋理進行分類。矩陣給出了具有相似強度的像素的位置信息。可能的強度值集合是二維數組的行和列標簽(P)
GLCM的P[i,j]首先通過指定一個位移向量= (dx, dy),并在位移向量的角度上統計由分隔的所有像素對,并進行初始化,灰度級別為j和i(其中j是列,i是行)。
一般來說,GLCM表示為P[i,j] = n??,其中n??是圖像中位于距離處的像素值(i,j)的出現次數。共生矩陣P的維數為n*n,其中n是圖像中的灰度級數。
GLCM是根據位移矢量中提到的距離和角度計算的。對于一個像素x,我們可以計算8個不同方向的GLCM值,如圖7所示。
圖7,像素x的最近鄰像素
為了更好地理解下面的例子(圖8),一個4x4的圖像是由4個灰度級組成的。這里,在圖8中,0°角下,i=2,j=3,d=1的GLCM值為4。圖8中頂部的矩陣表明,在我們的圖像中有4個實例,灰度級別3的像素與灰度級別2的像素水平分離(即0°)。
圖8,共生矩陣的例子,4個灰度級別的4x4的圖像
該矩陣可以進一步用于數值計算全局紋理特征,如相關性、能量、熵、同質性、對比度、顯著性和陰影。為了進一步了解這些特征是如何從GLCM中提取的,請查看這篇論文:http://www.ijsrp.org/research-paper-0513/ijsrp-p1750.pdf,其中詳細討論了GLCM。
Local Binary Pattern (LBP):
GLCM側重于從整體圖像獲取信息,而LBP側重于局部特征而非全局特征。因為紋理是模式的重復,所以LBP嘗試根據這些模式對紋理進行分類。紋理的局部表示是通過比較一個像素與其鄰域的所有像素來計算的。
在構造LBP之前,我們需要將圖像轉換為灰度。對于灰度中的每個像素,我們在中心像素周圍選擇一個大小為r的鄰域。通過將相鄰像素標記為0和1來確定中心像素的LBP值,只要像素的強度等于或大于中心像素,它就標記為1,否則標記為0(如圖9所示,其固定的鄰域為3 x 3)。
圖9,構建LBP的第一步
在下一步計算LBP中,我們從任何相鄰的像素開始,順時針或逆時針方向工作,這個順序必須對數據集中所有圖片的所有像素保持相同。這個輸出保存在一個8位數組中,它被轉換成小數,如圖10所示。以8個周圍像素為例,LBP碼的潛在組合為2 - 256種。
圖10,中心像素的8位二進制鄰域,并將其轉換為十進制表示
一旦我們對圖像的所有像素重復上述方法,我們就得到了LBP圖像。僅供參考,參見圖11原始圖像(左)的LBP表示示例(右)。
圖11,原始圖(左)LBP轉換后的圖(右)
在使用LBP之后,將提取紋理,以便捕獲紋理的極細粒度細節,并且對紋理進行分類要簡單得多。
小波
在此之前,紋理分析的基本問題是缺乏滿意的工具來描述不同尺寸的紋理。多分辨率分析的進步,如Gabor和小波變換方法有助于解決這一缺陷。小波變換作用于圖像的頻域。你可能想知道圖像的頻域是什么?
一幅圖像有兩個域,一個是空間域,另一個是頻率域。用像素矩陣表示的圖像稱為空間域,而頻域表示像素值在空間域中變化的速率。
頻率指的是圖像中顏色成分的變化速率,頻率高的地方顏色變化快,頻率低的地方顏色變化慢。
高頻分量對應圖像邊緣,低頻分量對應平滑區域。小波分析用于將圖像中的信息分成兩個離散的部分-近似和細節。
一旦將小波變換應用于圖像,它將產生四個象限(如圖12所示)的圖像。每個象限代表以下內容:
LL (low - low):左上象限沿圖像的行和列使用低通濾波器濾波。這個子塊擁有原始圖像的一半分辨率。
HL(高-低)/LH(低-高):右上和左下象限沿行和列使用高通濾波器和低通濾波器交替過濾。HL子塊顯示圖像的水平邊緣,而LH子塊顯示原始圖像的垂直邊緣。
HH (high - high):右下象限使用高通濾波器沿圖像的行和列進行濾波。該子塊沿著對角線方向描述了原始圖像的邊緣。
然后再對一半分辨率的圖像做小波變換,這是遞歸地完成的,這樣原始圖像的鄰近像素越來越不相關。
圖12
參考圖13了解小波變換的不同層次。
圖13,經過幾級小波變換,得到了多分辨率圖
上述圖像分解后的表示方法被稱為多尺度表示和多分辨率方案。經過小波變換(小波圖像分解)后的輸出很容易解釋。圖像的每個子部分都提供了方向和特定尺度的信息,這些信息很容易分離出來。小波變換后的子圖像保留了空間信息。
分形
利用分形維數可以識別圖像的紋理粗糙度、平滑度、固體度和面積等特征。
在歐幾里得n空間中,如果閉集X是N?不同的不相交副本的并集,N?的每個元素按比例r縮小都與X相同,則X被稱為自相似。我們可以用下面的表達式為X寫出分形維數D:
盒計數法計算分形維數的算法如下:
目的:分形維數(FD)的計算。
輸入:二維圖像I
輸出:FD
1.Reada2-DinputimageI
2.[P,Q]=SIZE[I]
3.IfP>Qthenr=p
Elser=q
4.ComputefractaldimensionusingEquation1
5.Stop
采用盒計數算法計算所有圖像的分形維數。圖14中lena、bird和rice的圖像是為了說明問題。下表1中列出了分形維數得到的結果。
圖14,原圖:(a) Lena (b) bird (c ) rice;40% 損壞的圖:(d) Lena (e) bird (f)rice
表1,使用盒計數法得到的分形維數
在不同的噪聲水平下,計算了被破壞的Lena, bird和rice圖像的分形維數。其結果見表2
表2,Lena, bird和rice的損壞圖像的分形維數
由表2可知,圖像的分形維數與粗糙度成正比增加。圖像的粗糙度與噪聲密度成正比,在這種情況下,由于椒鹽噪聲的增加,粗糙度增加了。
由以上結果可知,分形維數是比較圖像粗糙度的一種合適的度量。
由于粗糙度在紋理分析中起著重要的作用,分形是一種很好的基于粗糙度的紋理分類方法。
圖像梯度
圖像梯度是許多計算機視覺任務的基本組成部分之一,也是紋理分類的一項重要技術。圖像梯度的主要應用是在邊緣檢測中。當紋理在不合適的光照下被捕獲時,邊緣檢測對于尋找紋理的邊界是很有用的。
由于圖像梯度是圖像強度的方向變化,為了計算圖像的梯度,我們需要大小和方向,即梯度大小:圖像強度變化的強度的度量,和梯度方向:圖像強度變化的方向的度量。
為了測量大小,我們計算垂直變化(G?)和水平變化(G?),
現在梯度大小(G)和梯度方向(θ)可以用Sobel方法是一種用于尋找圖像梯度的技術。在這種技術中,所有圖像的垂直和水平核都是預先定義的,它們被用來計算圖像梯度(結果顯示在圖15中)。
圖15,左:原始lena圖像,右:Sobel實現的圖像梯度
現在這個圖像梯度已經突出了所有的邊緣,以類似的方式,圖像梯度識別所有圖像的邊緣,這將確保不同的紋理區域將被有效分割。
在深度學習中使用這些技術
到目前為止,我們已經了解了各種紋理提取特征。讓我們看看如何將這些技術與深度學習相結合,這樣我們越來越接近使用紋理分類解決現實生活中的用例。
紋理分類可以使用卷積神經網絡(CNN)實現。一個基本的CNN如圖16所示。CNN具有非凡的感知模式的能力,很可能是最精通的深度學習方法。唯一的缺點是,找到不同超參數的理想值仍然是一個主要的挑戰。
圖16,基本CNN模型
由于紋理分類是一項復雜的任務,基本的CNN模型可能不適用于高度基于紋理的數據集。因此,如圖17所示,我們在做實驗時使用了一個稍微高級的架構。該架構是2-D卷積層、池化(最大、最小或平均)和批歸一化層的組合,使模型能夠有效地訓練。我們利用2D卷積層,以便更好地進行特征提取。根據數據集的復雜性,我們可以有更多的層。
圖17,一個輸入的紋理分類的CNN模型
我們還嘗試了另一種方法,如圖18所示,我們將輸入圖像與紋理(轉換)圖像結合起來,并使用共享權重機制將它們傳遞到卷積層。通過使用這種方法,更容易從變換后的圖像中提取特征,因為它們有預先計算的特征值,并給網絡關于圖像代表什么的想法。無論是一個GLCM矩陣,或一個LBP矩陣,或一個圖像梯度矩陣,或兩個轉換后的輸入的組合,或三者的組合都可以作為輸入的一部分與原始圖像一起傳遞。
圖18,3個輸入的CNN紋理分類模型
在圖18中,原始圖像的一個輸入后面跟著一個lambda層,用于第二個輸入和轉換后的圖像的第三個輸入。在它們旁邊是卷積層,輸入大小為128×128,輸出大小為126×126。卷積層的輸出被送入三個Max-Pooling層,一個Max-Pooling層用于每個輸出大小為63×63的輸入。遵循相同的過程,直到使用Add層來連接所有三個輸出,并產生30×30大小的輸出。Flatten層用于115200個輸出,然后是輸出為512的dense層,隨后是批歸一化和Dropout層,以相同的順序添加了兩次。最后,添加一個有11個輸出神經元的dense層。
我們在基于紋理的KTH數據集,包含11個材質的圖像上進行了紋理分類任務的實驗。
表3,不同的方法的對比
圖19,對表3的可視化圖
從表3和圖19中,我們可以看到,當更相關(紋理豐富)的信息作為輸入傳遞給深度學習模型時,準確率顯著提高。這些技術包括兩個以上的特征作為輸入,如GLCM矩陣、LBP矩陣、小波和分形維數,以及原始輸入圖像。
這主要是因為模型也從紋理特征中學習,證明了監督預訓練和幾個轉換后的特征矩陣的直接相關性,可以提高精度。
一般來說,信息轉換后的輸入代表相關特征,從而導致更好的準確性。然而,在這種關系中也有一些例外——例如,當原始輸入與GLCM結合時,在特定情況下,精度會下降一小部分(圖19)。
在本博客中,我們詳細解釋了紋理特征的主要類型及其分析,并演示了提供更多信息數據(以紋理特征的形式)的方法可以有助于提高CNN模型的性能。我們將在接下來的文章中進一步探討這個概念。
英文原文:https://medium.com/@trapti.kalra_ibm/texture-analysis-with-deep-learning-for-improved-computer-vision-aa627c8bb133
-
深度學習
+關注
關注
73文章
5493瀏覽量
121000
發布評論請先 登錄
相關推薦
評論