提取圖像數據的特徵,讓機器「看見」

2021-02-21 數據派THU

本文介紹圖像特徵提取的兩種方法,基於結構形態的特徵提取與基於幾何分布的特徵提取。

[ 導語 ] 人眼可以看到圖像的視覺信息,包括顏色特徵、紋理特徵、形狀特徵和空間關係特徵,但這種信息並不能讓計算機「看見」。想要讓計算機處理這種視覺信息,就要將圖像的視覺信息轉化成計算機能夠識別和處理的定量形式,也就是圖像特徵提取。下面將介紹兩種方法--基於結構形態的特徵提取與基於幾何分布的特徵提取。

研究方向:圖像處理,特徵提取

通常情況下,基於結構形態的特徵有兩類表示方法,一類是輪廓特徵,另一類是區域特徵。基於結構形態的特徵提取方法主要是將字符圖像的結構形態轉化為特徵向量,主要包括邊界特徵法、傅立葉特徵算子法、形狀不變矩法以及幾何參數法
邊界特徵法,顧名思義,該方法主要關注的是圖像邊界部分的特徵。其中,霍夫變換法和邊界方向直方圖法是兩種最典型的邊界特徵法。原始圖像坐標系下的一個點對應於參數坐標系中的一條直線,反之,參數坐標系下的一條直線對應於原始圖像坐標系下的一個點。然後,將原始圖像坐標系下的各個點都投影到參數坐標系之後,會發現有聚集的點,這些聚集的點組成了原始坐標系下的直線。
下面我們給出一個小例子,通過霍夫變換來檢測圖片中的直線。

原始圖片

#coding=utf-8import cv2import numpy as npim = cv2.imread('hough.png')edges = cv2.Canny(im, 50, 150, apertureSize=3)result = im.copy()minLineLength = 10maxLineGap = 30lines = cv2.HoughLinesP(edges, 1, np.pi/180, 200, minLineLength, maxLineGap)for x1, y1, x2, y2 in lines[0]:    cv2.line(result, (x1, y1), (x2, y2), (0, 0, 255), 2)cv2.imwrite("hough_result.png", result)

首先利用常見的圖像邊緣檢測算子求得圖像的邊緣,然後做出關於邊緣大小和方向的直方圖。通常的方法是構造圖像灰度梯度方向矩陣。圖像邊緣檢測。常用的邊緣檢測算子有Laplacian算子、Sobel算子、Prewitt算子、Canny算子等。一幅圖像是由很多個離散的像素點組成的,上面提到的這些算子將通過差分的方式來近似偏導數的值。其中,Canny算子是效果較好的一種圖像邊緣檢測算子。它分為兩個階段,首先對圖像進行高斯平滑,然後對平滑之後的圖像進行Roberts算子運算。以下圖(圖左為原圖,圖右為灰度圖)所示,給出Canny邊緣檢測算子的代碼。
#coding=utf-8import cv2image = cv2.imread("lena.jpg")image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)#Canny邊緣檢測canny = cv2.Canny(image, 30, 150)cv2.imwrite("Canny.jpg", canny)

傅立葉特徵算子,又稱傅立葉形狀描述子,主要作用是通過對目標邊界的輪廓進行離散傅立葉變換得到目標邊界形狀的定量表達。離散傅立葉變換是圖像處理中常用的一種變換手段。通過離散傅立葉變換,我們可以將圖像的信號從時域轉換到頻域。當確定了圖像中的目標區域的起始點以及方向之後,我們就可以利用一系列的坐標對來描述邊界的信息了。假設邊界上有個邊界點,起始點為,按照順時針方向可以表示為一個坐標序列:一般來說,如果我們將目標邊界看成是從某一個點出發,則沿著該邊界順時針旋轉一周的周邊長可以用一個複函數來表示。換句話說就是,邊界上點的坐標可以用如下複數來表示:

通過這種方式,可以成功地將坐標序列的二維表示轉換為一維表示。對於複數,可以用一個一維離散傅立葉變換係數表示:

這裡的是圖像邊界的傅立葉描述子。同理,如果對進行傅立葉反變換,則可以得到最開始的坐標序列的表達式(僅選取前個傅立葉變換係數近似):

低階係數表示的是邊界的大致形狀,高階係數表示的是邊界的細節特徵。傅立葉描述子在描述邊界時,對旋轉、平移、尺度變化等均不敏感。
#coding=utf-8import cv2import numpy as np#直接讀為灰度圖像img = cv2.imread('fuliye.png', 0)f = np.fft.fft2(img)fshift = np.fft.fftshift(f)#先取絕對值,表示取模。再取對數,將數據範圍變小magnitude_spectrum = 20*np.log(np.abs(fshift))
cv2.imwrite("original.jpg", img)cv2.imwrite("center.jpg", magnitude_spectrum)

形狀不變矩法的主要思想是將對變換不敏感的、基於區域的幾何矩特徵作為形狀特徵。之所以稱之為「不變矩」,是因為矩特徵在旋轉、平移、尺度縮放的環境下都不會發生改變。對於二維連續函數階矩的定義如下:

上式中的和可以取所有的自然數,所以上式構建了一個矩的集合,且集合與函數具有唯一性。為了更方便地描述物體的形狀,我們假設函數是一個二值函數,即該函數在目標物體上的取值為1,在背景上的取值為0。不區分目標物體內部的灰度,參數稱為矩的階。特別地,當時,得到零階矩。零階矩的幾何意義是表示物體的面積,即:

根據歸一化之後的中心矩,對旋轉、平移、尺度等都不敏感的七個不變矩。下面我們對同一幅圖像,分別進行尺度縮小為原始圖像的一半、逆時針旋轉5度操作以及垂直鏡像變換的操作,分別求出原始圖像及變換後的各個圖像的七階矩。可以得出,這七階矩的值對於尺度、旋轉及鏡像變換不敏感。程序代碼如下:
import cv2from datetime import datetimeimport numpy as npnp.set_printoptions(suppress=True)
def my_humoments(img_gray): moments = cv2.moments(img_gray) humoments = cv2.HuMoments(moments) #取對數 humoments = np.log(np.abs(humoments)) print(humoments) if __name__ == '__main__': t1 = datetime.now() fp = 'lena.jpg' img = cv2.imread(fp) #縮放 h,w,_ = img.shape img = cv2.resize(img, (h/2, w/2), cv2.INTER_LINEAR) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imwrite("scale.jpg",img_gray) #旋轉 (h, w) = img.shape[:2] center = (w // 2, h // 2) M = cv2.getRotationMatrix2D(center, 5, 1.0) img = cv2.warpAffine(img, M, (w, h)) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imwrite("rotate.jpg", img_gray) #垂直鏡像 img = cv2.flip(img, 0, dst=None) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imwrite("flip.jpg",img_gray) my_humoments(img_gray)

幾何參數法主要包括像素與鄰域、位置、方向、距離、區域周長和區域面積。一幅圖像中,位於坐標處的像素有4個相鄰的像素,分別位於其上下左右,坐標分別為,如下圖所示。有時我們不僅需要某個像素點周圍4個像素的值,而且需要其周圍8個像素的值,此時8個點的坐標分別為,如下圖所示。目標在圖片中的位置有兩種表達方式,一種叫質心即目標質量的中心,另一種叫形心即目標形狀的中心。對於一個大小的目標,假設其灰度值大小為,則質心公式如下:

像圓形這樣的圖形,很難定義它的方向。一般地,我們在定義方向的時候,為了保證唯一性,事先假定物體的形狀是長方形,它的長邊即物體的方向。在圖像處理領域,常用的距離公式包括歐幾裡得距離、4鄰域距離以及8鄰域距離。假設兩個點的坐標分別為,則AB兩點之間的距離公式如下:區域的周長可以用區域邊界所佔的面積表示,可以認為是邊界的像素點數量。如果將像素看成是一個個單獨的點,那麼區域的周長就可以認為是區域的邊界8鏈碼的長度。如果將像素看成是圖像中一個個單位面積的小方格,那麼可認為區域和背景都是由方格組成的。區域的周長就可以定義為區域和背景的交界線的長度。對於二值圖來說,區域的面積可以簡單地定義為目標物所佔像素點的數量,即區域的邊界內包含的像素點的個數。區域面積的計算公式如下:基於幾何分布的特徵提取方法大致可以分為兩類,一類是二維直方圖投影法,另一類區域網格統計法。幾何分布特徵提取方法的代表之一就是二維直方圖投影法,也就是獲取水平以及豎直方向上各行、列黑色像素累計分布的結果,如下圖所示。由於圖片經過歸一化後,長寬相對固定,例如32×36像素的二值字符「3」如下圖左所示。一般二維直方圖投影法對圖像的掃描順序為從上到下、從左往右,所以得到的對應數字矩陣如下圖右所示。在水平方向和豎直方向分別對原圖進行投影,然後分別按照行列方向統計黑色像素的值且進行歸一化,最終得到特徵向量。以圖3-24a的二值字符「3」為例,可以得到68維的特徵向量值,如下表所示。區域網格統計法是另一種常見的基於幾何分布的特徵提取方法。其主要思想是先利用一個的網格將原圖進行分割,然後按從上至下、從左至右的順序依次統計每一個網格中「1」的個數,從而得到最終的特徵向量。以上面的二值字符「3」為例,我們用一個3×4的網格對其進行分割,得到的結果如下圖所示。

本文摘編自劉樹春的《深度實踐OCR:基於深度學習的文字識別》,經出版方授權發布。作者劉樹春是阿里巴巴本地生活研究院算法專家,前復旦七牛雲聯合實驗室OCR算法負責人。本書系統地介紹了文字識別的各類方法,包括圖像預處理、數據生成與增強、文字檢測、文字識別以及後處理和結構化等內容,內容翔實,推薦閱讀!

相關焦點

  • 三種用Python從圖像數據中提取特徵的技術
    但數據科學家最近有這樣一種研究趨勢,他們堅信,在處理非結構化數據(尤其是圖像數據)時,深度學習模型是不斷向前發展的。毫無疑問,深度學習技術表現得非常好,但這是處理圖像的唯一方法嗎?並非所有人都擁有像Google和Facebook等大型技術巨頭那樣無限的資源,那麼,如果不透過深度學習,要如何處理圖像數據呢?可以利用機器學習的力量!沒錯,可以使用簡單的機器學習模型,如決策樹或支持向量機( SVM )。如果能提供正確的數據和功能,這些機器學習模型可以充分發揮作用,甚至可以用作基準解決方案。
  • 庖丁解牛,原來CNN是這樣提取圖像特徵的!
    作為機器學習的一個分支,深度學習同樣需要計算機獲得強大的學習能力,那麼問題來了,我們究竟要計算機學習什麼東西?答案當然是圖像特徵了。將一張圖像看做是一個個像素值組成的矩陣,那麼對圖像的分析就是對矩陣的數字進行分析,而圖像的特徵,就隱藏在這些數字規律中。深度學習對外推薦自己的一個很重要的點——深度學習能夠自動提取特徵。
  • 目標檢測的圖像特徵提取之 HOG特徵
    因此HOG特徵是特別適合於做圖像中的人體檢測的。 2、HOG特徵提取算法的實現過程:大概過程:HOG特徵提取方法就是將一個image(你要檢測的目標或者掃描窗口):1)灰度化(將圖像看做一個x,y,z(灰度)的三維圖像);2)採用Gamma校正法對輸入圖像進行顏色空間的標準化(歸一化);目的是調節圖像的對比度,降低圖像局部的陰影和光照變化所造成的影響,同時可以抑制噪音的幹擾
  • 圖像特徵提取三大法寶:HOG特徵,LBP特徵,Haar特徵
    2、HOG特徵提取算法的實現過程:大概過程:HOG特徵提取方法就是將一個image(你要檢測的目標或者掃描窗口):1)灰度化(將圖像看做一個x,y,z(灰度)的三維圖像);2)採用Gamma校正法對輸入圖像進行顏色空間的標準化(歸一化);目的是調節圖像的對比度,降低圖像局部的陰影和光照變化所造成的影響,同時可以抑制噪音的幹擾;
  • 機器視角:長文揭秘圖像處理和卷積神經網絡架構
    人類大腦是一非常強大的機器,每秒內能看(捕捉)多張圖,並在意識不到的情況下就完成了對這些圖的處理。但機器並非如此。機器處理圖像的第一步是理解,理解如何表達一張圖像,進而讀取圖片。簡單來說,每個圖像都是一系列特定排序的圖點(像素)。如果你改變像素的順序或顏色,圖像也隨之改變。舉個例子,存儲並讀取一張上面寫著數字 4 的圖像。
  • LabVIEW 圖像處理與機器視覺
    本文僅以輔助參考為目的,沒有過多講解 LabVIEW 機器視覺的基本知識和編程方法,默認使用者對 LabVIEW 和機器視覺具備基礎的認識和了解,若無此基礎,建議先進行一定的入門學習。對於圖像和視覺部分。
  • Opencv+TF-Slim實現圖像分類及深度特徵提取
    本文將用Opencv的dnn模塊調用預訓練的InceptionV4模型進行圖像分類及深度特徵的提取。圖像分類模型最後邏輯層是輸出分類得分,最後一個卷積層/池化層輸出的結果為圖像特徵數據,通過在推斷時候指定該層名稱就可以實現在OpenCV DNN中通過CNN網絡實現圖像特徵提取,對Inception V4模型來說,在forward時候把圖像分類輸出層"InceptionV4/Logits/Predictions"改為
  • 基於機器視覺的零件圖像採集及識別的研究
    0 引言 機器視覺是通過光學的裝置和非接觸的傳感器自動地接受和處理一個真實物體的圖像,以獲得所需信息或用於控制機器動作的裝置。
  • 【Python機器學習】系列之特徵提取與處理篇(深度詳細附源碼)
    而很多機器學習問題需要研究的對象可能是分類變量、文字甚至圖像。本章介紹提取這些變量特徵的方法。這些技術是數據處理的前提——序列化,更是機器學習的基礎。●分類變量特徵提取許多機器學習問題都有分類的、標記的變量,不是連續的。例如,一個應用是用分類特徵比如工作地點來預測工資水平。
  • 圖像特徵工程:HOG特徵描述子介紹
    介紹在機器學習算法的世界裡,特徵工程是非常重要的。實際上,作為一名數據科學家,這是我最喜歡的方面之一!從現有特徵中設計新特徵並改進模型的性能,這就是我們進行最多實驗的地方。世界上一些頂級數據科學家依靠特徵工程來提高他們在競賽排行榜得分。我相信你甚至會在結構化數據上使用各種特徵工程技術。
  • ORB特徵提取
    1 概述ORB[1] (Oriented FAST and Rotated BRIEF)是一種快速的特徵提取算法,該算法是FAST和BRIEF算法的結合和改進,可以理解為 ORB=oFAST+rBRIEF。
  • 圖像分類 | 深度學習PK傳統機器學習
    圖像分類的傳統方法是特徵描述及檢測,這類傳統方法可能對於一些簡單的圖像分類是有效的,但由於實際情況非常複雜,傳統的分類方法不堪重負。現在,我們不再試圖用代碼來描述每一個圖像類別,決定轉而使用機器學習的方法處理圖像分類問題。目前,許多研究者使用CNN等深度學習模型進行圖像分類;另外,經典的KNN和SVM算法也取得不錯的結果。
  • 高光譜圖像的數據特性之探討
    具體而言,高光譜成像技術利用成像光譜儀,實現了表徵光譜響應的一維特徵與反映目標分布情況的二維幾何信息的聯合獲取,促使高光譜圖像既能夠以圖像方式刻畫目標,還能夠藉助精細電磁波譜進行光譜探測,完成圖像與光譜信息的結合。在高光譜地物觀測圖中,任一像元可提取出一條表徵地物信息的光譜曲線,而任一波段又可以抽取為一幅二維空間圖像,用於描述地表二維空間特性。
  • 圖像特徵點|SIFT特徵點之圖像金字塔
    小白學視覺公眾號開始有償徵稿啦~~~,有興趣的小夥伴可以查看徵稿啟事計算機視覺中的特徵點提取算法比較多,但SIFT除了計算比較耗時以外,其他方面的優點讓其成為特徵點提取算法中的一顆璀璨的明珠。     cvSmooth(gauss_pyr[o][i - 1], gauss_pyr[o][i],CV_GAUSSIAN, 0, 0, sig[i], sig[i]);      }  return gauss_pyr;1.2、高斯差分金字塔2002年Mikolajczyk在詳細的實驗比較中發現尺度歸一化的高斯拉普拉斯函數的極大值和極小值同其它的特徵提取函數
  • 計算機視覺:你必須了解的圖像數據底層技術
    計算機視覺其實是一個複雜多元的交叉領域,包含了很多來自數位訊號處理、神經科學、圖像處理、模式識別、機器學習(ML)、機器人、人工智慧(AI)等領域的概念。 許多視覺應用程式都是從獲取圖像和數據開始,然後處理數據,執行一些分析和識別步驟,最後執行一個動作的:
  • MATLAB數據分析/圖形圖像處理/機器學習與深度學習培訓
    MATLAB是由美國MathWorks公司推出的一款應用於科學計算和工程仿真的交互式編程軟體,它有包羅萬象的工具箱和草稿紙式的程式語言,將符號計算、數值分析、矩陣計算、科學數據可視化、數據處理與機器學習、圖像處理、信號處理、計算金融學、計算生物學以及非線性動態系統的建模和仿真等諸多強大功能集成在一個易於使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案
  • 植物表型:利用無人機拍攝的圖像對桃樹進行特徵參數提取
    該研究方法可通過消費級無人機航拍圖片精確提取果園內單棵果樹並計算樹冠相關表型參數,從而實現智慧果園栽培管理時的決策指導。 在果園中,測量樹冠表型相關特徵對於監測樹木動態生長和優化果園管理至關重要。然而,缺乏一種快速、可靠的提取樹冠特徵的方法適用於樹冠形狀不規則(如使用立體整枝方法的桃樹)的情況。
  • PHM建模方法論之「 數據特徵提取 」
    數據特徵提取步驟是整個過程的第3步,目的是通過採用合適的數據分析方法,從原始數據中提取與建模相關的有效特徵來建立模型。常用的特徵提取方法,包括時域特徵提取,頻域特徵提取,以及時頻域特徵提取。時域特徵提取通常包括的參數較多,比如有RMS(有效值)、峰峰值、峭度、裕度、歪度、均值、均方根、脈衝因數、波形因數、波峰因數等等。 上圖展示了4種不同健康條件下軸承的振動信號。
  • 「人物特寫」清華大學鄧志東:「特徵提取+推理」的小數據學習才是...
    人類基於「特徵提取+推理」的小樣本、小數據學習人類的科技發展史反覆告訴我們,並不是你有多大雄心、投入多少人力物力,就一定會取得多大的技術突破和成功,有時候其實只是一種歷史的偶然和巧合。當然這種偶然也是建立在大量準備基礎之上的必然。這就是我們常說的,必然中的偶然、偶然中的必然。下一次的技術突破或爆發,應該具備哪些條件?
  • 視頻圖像中文本的檢測、定位與提取
    目前,基於內容的視頻信息檢索(Content―Based Video Retrieval,簡稱CBVR)的研究已取得了較大的進展,但是檢索所採用的特徵基本上都是低級視覺特徵,如顏色、紋理、形狀、空間關係和運動等。