⑴ 紋理特徵提取方法:LBP, 灰度共生矩陣
搬運自本人 CSDN 博客: 《紋理特徵提取方法:LBP, 灰度共生矩陣》
註:本文中大量行內 Latex 公式在中不支持,如果想要仔細參閱,請移步上面的 CSDN 博客鏈接。
在前面的博文 《圖像紋理特徵總體簡述》 中,筆者總結了圖像紋理特徵及其分類。在這里筆者對其中兩種演算法介紹並總結。
參考網址:
《紋理特徵提取》
《【紋理特徵】LBP 》
《灰度共生矩陣(GLCM)理解》
《灰度共生矩陣的理解》
《圖像的紋理特徵之灰度共生矩陣 》
參考論文:
《基於灰度共生矩陣提取紋理特徵圖像的研究》——馮建輝
《灰度共生矩陣紋理特徵提取的Matlab實現》——焦蓬蓬
LBP方法(Local binary patterns, 局部二值模式)是一種用來描述圖像局部紋理特徵的運算元;它的作用是進行特徵提取,提取圖像的局部紋理特徵。
LBP是一個計算機視覺中用於圖像特徵分類的一個方法,用於紋理特徵提取。後來LBP方法與HOG特徵分類器與其他機器學習演算法聯合使用。
LBP演算法的核心思想,是以某個像素點為中心,與其鄰域像素點共同計算。關於鄰域像素點的選擇方法,其實並不唯一:
這里選擇環形鄰域的方法進行說明:
窗口中心的像素點作為中心,該像素點的像素值作為閾值。然後將周圍8個像素點的灰度值與該閾值進行比較,若周圍某像素值大於中心像素值,則該像素點位置被標記為1;反之,該像素點標記為0。
如此這樣,該窗口的8個點可以產生8位的無符號數,這樣就得到了該窗口的LBP值,該值反應了該窗口的紋理信息。如下圖所示:
圖中,中心像素點的像素值作為閾值,其值v = 3;周圍鄰域8個像素值中,有3個比閾值小的像素點置0,5個比閾值大的像素點置1。
LBP演算法的計算公式如下:
$$ LBP_{P, R}(x_{c},y_{c}) = sum_{p=0}^{P-1}s(g_{p} - g_{c})2^p, s(x)=left{egin{matrix}1 : x geq 0 0 : x leq 0 end{matrix} ight. $$
LBP紋理特徵向量,一般以圖像分塊LBP直方圖表示。具體步驟如下:
得到了整幅圖像的LBP紋理特徵後,便可以利用SVM或者其他機器學習演算法進行分類了。
這兩天筆者將會對源碼進行測試封裝,以後會上傳到我的GitHub網站上。
灰度共生矩陣法(GLCM, Gray-level co-occurrence matrix),就是通過計算灰度圖像得到它的共生矩陣,然後透過計算該共生矩陣得到矩陣的部分特徵值,來分別代表圖像的某些紋理特徵(紋理的定義仍是難點)。灰度共生矩陣能反映圖像灰度關於<font color = red> 方向、相鄰間隔、變化幅度等 </font>綜合信息,它是分析圖像的局部模式和它們排列規則的基礎。
對於灰度共生矩陣的理解,需要明確幾個概念:方向,偏移量和灰度共生矩陣的階數。
計算紋理特徵第一步,就是將多通道的圖像(一般指RGB圖像)轉換為灰度圖像,分別提取出多個通道的灰度圖像。
紋理特徵是一種結構特徵,使用不同通道圖像得到的紋理特徵都是一樣的,所以可以任意選擇其一。
一般在一幅圖像中的灰度級有256級,從0--255。但在計算灰度共生矩陣時我們並不需要256個灰度級,且計算量實在太大,所以一般分為8個灰度級或16個灰度級。
而且當分成8個灰度級時,如果直接將像素點的灰度值除以32取整,會引起影像清晰度降低,所以進行灰度級壓縮時,首先我們會將圖片進行直方圖均衡化處理,增加灰度值的動態范圍,這樣就增加了影像的整體對比效果。
註:筆者後文中的例子中,為了簡要說明,所以灰度等級簡單設置為4。
計算特徵值前,先選擇計算過程中的一些參數:
下面分部且適當的使用一些例子說明計算過程:
為了達到簡單說明計算紋理特徵值的目的,筆者此處做簡要的假設:灰度被分為4階,灰度階從0--3;窗口大小為6 × 6;
窗口A的灰度矩陣A如下:
窗口B的灰度矩陣B如下:
此處以左上角元素為坐標原點,原點記為(1, 1);以此為基礎舉例,第四行第二列的點記為(4, 2);
情景1:d = 1,求0°方向矩陣A的共生矩陣:
則按照0°方向(即水平方向 從左向右,從右向左兩個方向 ),統計矩陣值(1, 2),則如下圖所示:
$$
P_{A}(d=1, heta =0^o)=egin{vmatrix}
0 & 8 & 0 & 7
8 & 0 & 8 & 0
0 & 8 & 0 & 7
7 & 0 & 7 & 0
end{vmatrix}
$$
情景2:d = 1,求45°方向矩陣A的共生矩陣:
按照情景1,同理可得此時的統計矩陣結果如下:
$$
P_{A}(d=1, heta =45^o)=egin{vmatrix}
12 & 0 & 0 & 0
0 & 14 & 0 & 0
0 & 0 & 12 & 0
0 & 0 & 0 & 12
end{vmatrix}
$$
情景3:d = 1,求0°與45°方向矩陣B的共生矩陣:
與前面同理,可以得到矩陣B的統計及矩陣結果如下:
$$
P_{B}(d=1, heta =0^o)=egin{vmatrix}
24 & 4 & 0 & 0
4 & 8 & 0 & 0
0 & 0 & 12 & 2
0 & 0 & 2 & 4
end{vmatrix}
$$
$$
P_{B}(d=1, heta =45^o)=egin{vmatrix}
18 & 3 & 3 & 0
3 & 6 & 1 & 1
3 & 1 & 6 & 1
0 & 1 & 1 & 2
end{vmatrix}
$$
矩陣A, B的其餘90°、135°矩陣與上面同理,所以筆者偷懶略去。
這樣,我們就已經計算得到了單個窗口的灰度共生矩陣的各個方向的矩陣,下面就要用剛才算出的矩陣計算灰度共生矩陣特徵值。
用P表示灰度共生矩陣的歸一化頻率矩陣,其中i, j表示按照某方向同時出現於兩個像素的某兩個級別的灰度值,所以P(i, j)表示滿足這種情況的兩個像素出現的概率。
以上述情景2中的矩陣為例:
原矩陣為:
$$
P(d=1, heta =45^o)=egin{vmatrix}
12 & 0 & 0 & 0
0 & 14 & 0 & 0
0 & 0 & 12 & 0
0 & 0 & 0 & 12
end{vmatrix}
$$
歸一化後,矩陣形式變為:
$$
P(d=1, heta =45^o)=egin{vmatrix}
12/50 & 0 & 0 & 0
0 & 14/50 & 0 & 0
0 & 0 & 12/50 & 0
0 & 0 & 0 & 12/50
end{vmatrix}
$$
灰度共生矩陣理論的前輩Haralick等人用灰度共生矩陣提出了14中特徵值,但由於灰度共生矩陣的計算量很大,所以為了簡便,我們一般採用四個最常用的特徵來提取圖像的紋理特徵:<font color=red> 能量、對比度、相關度、熵 </font>。
$ ASM = sum_{i} sum_{j}P(i, j)^2 $
能量是灰度共生矩陣各元素的平方和,又被稱角二階距。它是圖像紋理灰度變化均一的度量,反映了圖像灰度分布均勻程度和紋理粗細程度。
$ CON = sum_{i} sum_{j} (i-j)^2 P(i,j) $
對比度是灰度共生矩陣主對角線附近的慣性矩,它體現矩陣的值如何分布,反映了圖像的清晰度和紋理溝紋的深淺。
$ CORRLN = [sum_{i} sum_{j}((ij)P(i,j)) - mu_{x} mu_{y}]/ sigma_{x} sigma_{y} $
相關度體現了空間灰度共生矩陣元素在行或列方向上的相似程度,反映了圖像局部灰度相關性。
$ ENT = - sum_{i} sum_{j} P(i,j) log P(i,j) $
熵體現了圖像紋理的隨機性。若共生矩陣中所有值都相等,取得最大值;若共生矩陣中的值不均勻,則其值會變得很小。
求出該灰度共生矩陣各個方向的特徵值後,再對這些特徵值進行均值和方差的計算,這樣處理就消除了方向分量對紋理特徵的影響。
一個滑動窗口計算結束後,該窗口就可以移動一個像素點,形成另一個小窗口圖像,重復進行上一步的計算,生成新窗口圖像的共生矩陣和紋理特徵值;
以此類推,滑動窗口遍歷完所有的圖像像素點後,整個圖像就形成了一個由紋理特徵值構成的一個紋理特徵值矩陣。
之後,就可以將這個紋理特徵值矩陣轉換成紋理特徵圖像。
筆者已經對源碼進行測試了封裝,並上傳到了筆者的GitHub網站上。
GitHub: https://github.com/upcAutoLang/GLCM-OpenCV
⑵ 有關matlab的圖像特徵提取問題
方程 take_character 輸入為RBG三維數組圖像,輸出為像素統計character三維數組,首先讀取圖像數組width寬,height高。統計RGB各像素值到相應二維數組。灰度量化,對RGB每個像素值與256灰度比較,賦值灰度。character數組統計灰度值。返回結果。
⑶ Matlab怎麼樣提取圖像的顏色特徵,非常
如果你是指rgb顏色層的話 use football as an example
I=imread('football.jpg');
color=I;
R=(:,:1);
G=(:,:,2);
B=(:,:,3);
然後你就得到了分別這三個顏色層的信息,這時候你可以根據你的要求做後續的工作。
⑷ 求matlab彩色圖片的顏色特徵提取演算法的代碼,和紋理特徵提取的代碼。傳統方法即可。
其實學數字圖像處理,關鍵的不是源代碼(和一般編程還是有區別的,這個是經驗之談,其實一般博導未必會編程,但是你和他說說你的方法,他一般都能切中要害),而是你能理解基於概念及適用場所。
基於顏色、紋理、形狀都屬於低層特徵,這些你理解就夠了,關鍵是對你的課題適合哪種方法來映射到高層語義上面,例如:識別物體輪廓,那可能形狀就比較適合等。
我之所以寫上面那段話,主要是我感覺你索取代碼也不說明具體要求,也就是方向不明確。
如今顏色特徵提取演算法有很多,諸如顏色直方圖、顏色矩、顏色集、顏色聚合向量、顏色相關圖等,既然你沒說,我就給個IEEE CSVT 2001的一篇關於顏色直方圖法的論文(源碼版權歸作者所有):
function colorhist = colorhist(rgb)
% CBIR_colorhist() --- color histogram calculation
% input: MxNx3 image data, in RGB
% output: 1x256 colorhistogram == (HxSxV = 16x4x4)
% as the MPEG-7 generic color histogram descriptor
% [Ref] Manjunath, B.S.; Ohm, J.-R.; Vasudevan, V.V.; Yamada, A., "Color and texture descriptors"
% IEEE Trans. CSVT, Volume: 11 Issue: 6 , Page(s): 703 -715, June 2001 (section III.B)
% check input
if size(rgb,3)~=3
error('3 components is needed for histogram');
end
% globals
H_BITS = 4; S_BITS = 2; V_BITS = 2;
%rgb2hsv可用rgb2hsi代替,見你以前的提問。
hsv = uint8(255*rgb2hsv(rgb));
imgsize = size(hsv);
% get rid of irrelevant boundaries
i0=round(0.05*imgsize(1)); i1=round(0.95*imgsize(1));
j0=round(0.05*imgsize(2)); j1=round(0.95*imgsize(2));
hsv = hsv(i0:i1, j0:j1, :);
% histogram
for i = 1 : 2^H_BITS
for j = 1 : 2^S_BITS
for k = 1 : 2^V_BITS
colorhist(i,j,k) = sum(sum( ...
bitshift(hsv(:,:,1),-(8-H_BITS))==i-1 &...
bitshift(hsv(:,:,2),-(8-S_BITS))==j-1 &...
bitshift(hsv(:,:,3),-(8-V_BITS))==k-1 ));
end
end
end
colorhist = reshape(colorhist, 1, 2^(H_BITS+S_BITS+V_BITS));
% normalize
colorhist = colorhist/sum(colorhist);
%基於紋理特徵提取灰度共生矩陣用於紋理判斷
% Calculates cooccurrence matrix
% for a given direction and distance
%
% out = cooccurrence (input, dir, dist, symmetric);
%
% INPUT:
% input: input matrix of any size
%
% dir: direction of evaluation
% "dir" value Angle
% 0 0
% 1 -45
% 2 -90
% 3 -135
% 4 -180
% 5 +135
% 6 +90
% 7 +45
%
% dist: distance between pixels
%
% symmetric: 1 for symmetric version
% 0 for non-symmetric version
%
% eg: out = cooccurrence (input, 0, 1, 1);
% Author: Baran Aydogan (15.07.2006)
% RGI, Tampere University of Technology
% [email protected]
function out = cooccurrence (input, dir, dist, symmetric);
input = round(input);
[r c] = size(input);
min_intensity = min(min(input));
max_intensity = max(max(input));
out = zeros(max_intensity-min_intensity+1);
if (dir == 0)
dir_x = 0; dir_y = 1;
end
if (dir == 1)
dir_x = 1; dir_y = 1;
end
if (dir == 2)
dir_x = 1; dir_y = 0;
end
if (dir == 3)
dir_x = 1; dir_y = -1;
end
if (dir == 4)
dir_x = 0; dir_y = -1;
end
if (dir == 5)
dir_x = -1; dir_y = -1;
end
if (dir == 6)
dir_x = -1; dir_y = 0;
end
if (dir == 7)
dir_x = -1; dir_y = 1;
end
dir_x = dir_x*dist;
dir_y = dir_y*dist;
out_ind_x = 0;
out_ind_y = 0;
for intensity1 = min_intensity:max_intensity
out_ind_x = out_ind_x + 1;
out_ind_y = 0;
[ind_x1 ind_y1] = find (input == intensity1);
ind_x1 = ind_x1 + dir_x;
ind_y1 = ind_y1 + dir_y;
for intensity2 = min_intensity:max_intensity
out_ind_y = out_ind_y + 1;
[ind_x2 ind_y2] = find (input == intensity2);
count = 0;
for i = 1:size(ind_x1,1)
for j = 1:size(ind_x2,1)
if ( (ind_x1(i) == ind_x2(j)) && (ind_y1(i) == ind_y2(j)) )
count = count + 1;
end
end
end
out(out_ind_x, out_ind_y) = count;
end
end
if (symmetric)
if (dir < 4)
dir = dir + 4;
else
dir = mod(dir,4);
end
out = out + cooccurrence (input, dir, dist, 0);
end
⑸ 求 java語言 如何提取圖像顏色特徵和顏色直方圖的方法
java.awt.Color 類用於封裝默認 sRGB 顏色空間中的顏色,或者用於封裝由 ColorSpace
標識的任意顏色空間中的顏色。每種顏色都有一個隱式的 alpha 值 1.0,或者有一個在構造方法中提供的顯式的 alpha 值。alpha
值定義了顏色的透明度,可用一個在 0.0 - 1.0 或 0 - 255 范圍內的浮點值表示它。alpha 值為 1.0 或 255
則意味著顏色完全是不透明的,alpha 值為 0 或 0.0 則意味著顏色是完全透明的。在使用顯式的 alpha 值構造 Color
時,或者在獲取某個 Color 的顏色/alpha 分量時,從不將顏色分量預乘 alpha 分量。
希望可以幫助到你.
⑹ 圖像的特徵提取都有哪些演算法
常用的圖像特徵有顏色特徵、紋理特徵、形狀特徵、空間關系特徵。
一 顏色特徵
(一)特點:顏色特徵是一種全局特徵,描述了圖像或圖像區域所對應的景物的表面性質。一般顏色特徵是基於像素點的特徵,此時所有屬於圖像或圖像區域的像素都有各自的貢獻。由於顏色對圖像或圖像區域的方向、大小等變化不敏感,所以顏色特徵不能很好地捕捉圖像中對象的局部特徵。另外,僅使用顏色特徵查詢時,如果資料庫很大,常會將許多不需要的圖像也檢索出來。顏色直方圖是最常用的表達顏色特徵的方法,其優點是不受圖像旋轉和平移變化的影響,進一步藉助歸一化還可不受圖像尺度變化的影響,基缺點是沒有表達出顏色空間分布的信息。
(二)常用的特徵提取與匹配方法
(1) 顏色直方圖
其優點在於:它能簡單描述一幅圖像中顏色的全局分布,即不同色彩在整幅圖像中所佔的比例,特別適用於描述那些難以自動分割的圖像和不需要考慮物體空間位置的圖像。其缺點在於:它無法描述圖像中顏色的局部分布及每種色彩所處的空間位置,即無法描述圖像中的某一具體的對象或物體。
最常用的顏色空間:RGB顏色空間、HSV顏色空間。
顏色直方圖特徵匹配方法:直方圖相交法、距離法、中心距法、參考顏色表法、累加顏色直方圖法。
(2) 顏色集
顏色直方圖法是一種全局顏色特徵提取與匹配方法,無法區分局部顏色信息。顏色集是對顏色直方圖的一種近似首先將圖像從 RGB顏色空間轉化成視覺均衡的顏色空間(如 HSV 空間),並將顏色空間量化成若干個柄。然後,用色彩自動分割技術將圖像分為若干區域,每個區域用量化顏色空間的某個顏色分量來索引,從而將圖像表達為一個二進制的顏色索引集。在圖像匹配中,比較不同圖像顏色集之間的距離和色彩區域的空間關系
(3) 顏色矩
這種方法的數學基礎在於:圖像中任何的顏色分布均可以用它的矩來表示。此外,由於顏色分布信息主要集中在低階矩中,因此,僅採用顏色的一階矩(mean)、二階矩(variance)和三階矩(skewness)就足以表達圖像的顏色分布。
(4) 顏色聚合向量
其核心思想是:將屬於直方圖每一個柄的像素分成兩部分,如果該柄內的某些像素所佔據的連續區域的面積大於給定的閾值,則該區域內的像素作為聚合像素,否則作為非聚合像素。
(5) 顏色相關圖
二 紋理特徵
(一)特點:紋理特徵也是一種全局特徵,它也描述了圖像或圖像區域所對應景物的表面性質。但由於紋理只是一種物體表面的特性,並不能完全反映出物體的本質屬性,所以僅僅利用紋理特徵是無法獲得高層次圖像內容的。與顏色特徵不同,紋理特徵不是基於像素點的特徵,它需要在包含多個像素點的區域中進行統計計算。在模式匹配中,這種區域性的特徵具有較大的優越性,不會由於局部的偏差而無法匹配成功。作為一種統計特徵,紋理特徵常具有旋轉不變性,並且對於雜訊有較強的抵抗能力。但是,紋理特徵也有其缺點,一個很明顯的缺點是當圖像的解析度變化的時候,所計算出來的紋理可能會有較大偏差。另外,由於有可能受到光照、反射情況的影響,從2-D圖像中反映出來的紋理不一定是3-D物體表面真實的紋理。
例如,水中的倒影,光滑的金屬面互相反射造成的影響等都會導致紋理的變化。由於這些不是物體本身的特性,因而將紋理信息應用於檢索時,有時這些虛假的紋理會對檢索造成「誤導」。
在檢索具有粗細、疏密等方面較大差別的紋理圖像時,利用紋理特徵是一種有效的方法。但當紋理之間的粗細、疏密等易於分辨的信息之間相差不大的時候,通常的紋理特徵很難准確地反映出人的視覺感覺不同的紋理之間的差別。
(二)常用的特徵提取與匹配方法
紋理特徵描述方法分類
(1)統計方法統計方法的典型代表是一種稱為灰度共生矩陣的紋理特徵分析方法Gotlieb 和 Kreyszig 等人在研究共生矩陣中各種統計特徵基礎上,通過實驗,得出灰度共生矩陣的四個關鍵特徵:能量、慣量、熵和相關性。統計方法中另一種典型方法,則是從圖像的自相關函數(即圖像的能量譜函數)提取紋理特徵,即通過對圖像的能量譜函數的計算,提取紋理的粗細度及方向性等特徵參數
(2)幾何法
所謂幾何法,是建立在紋理基元(基本的紋理元素)理論基礎上的一種紋理特徵分析方法。紋理基元理論認為,復雜的紋理可以由若干簡單的紋理基元以一定的有規律的形式重復排列構成。在幾何法中,比較有影響的演算法有兩種:Voronio 棋盤格特徵法和結構法。
(3)模型法
模型法以圖像的構造模型為基礎,採用模型的參數作為紋理特徵。典型的方法是隨機場模型法,如馬爾可夫(Markov)隨機場(MRF)模型法和 Gibbs 隨機場模型法
(4)信號處理法
紋理特徵的提取與匹配主要有:灰度共生矩陣、Tamura 紋理特徵、自回歸紋理模型、小波變換等。
灰度共生矩陣特徵提取與匹配主要依賴於能量、慣量、熵和相關性四個參數。Tamura 紋理特徵基於人類對紋理的視覺感知心理學研究,提出6種屬性,即:粗糙度、對比度、方向度、線像度、規整度和粗略度。自回歸紋理模型(simultaneous auto-regressive, SAR)是馬爾可夫隨機場(MRF)模型的一種應用實例。
三 形狀特徵
(一)特點:各種基於形狀特徵的檢索方法都可以比較有效地利用圖像中感興趣的目標來進行檢索,但它們也有一些共同的問題,包括:①目前基於形狀的檢索方法還缺乏比較完善的數學模型;②如果目標有變形時檢索結果往往不太可靠;③許多形狀特徵僅描述了目標局部的性質,要全面描述目標常對計算時間和存儲量有較高的要求;④許多形狀特徵所反映的目標形狀信息與人的直觀感覺不完全一致,或者說,特徵空間的相似性與人視覺系統感受到的相似性有差別。另外,從 2-D 圖像中表現的 3-D 物體實際上只是物體在空間某一平面的投影,從 2-D 圖像中反映出來的形狀常不是 3-D 物體真實的形狀,由於視點的變化,可能會產生各種失真。
(二)常用的特徵提取與匹配方法
Ⅰ幾種典型的形狀特徵描述方法
通常情況下,形狀特徵有兩類表示方法,一類是輪廓特徵,另一類是區域特徵。圖像的輪廓特徵主要針對物體的外邊界,而圖像的區域特徵則關繫到整個形狀區域。
幾種典型的形狀特徵描述方法:
(1)邊界特徵法該方法通過對邊界特徵的描述來獲取圖像的形狀參數。其中Hough 變換檢測平行直線方法和邊界方向直方圖方法是經典方法。Hough 變換是利用圖像全局特性而將邊緣像素連接起來組成區域封閉邊界的一種方法,其基本思想是點—線的對偶性;邊界方向直方圖法首先微分圖像求得圖像邊緣,然後,做出關於邊緣大小和方向的直方圖,通常的方法是構造圖像灰度梯度方向矩陣。
(2)傅里葉形狀描述符法
傅里葉形狀描述符(Fourier shape descriptors)基本思想是用物體邊界的傅里葉變換作為形狀描述,利用區域邊界的封閉性和周期性,將二維問題轉化為一維問題。
由邊界點導出三種形狀表達,分別是曲率函數、質心距離、復坐標函數。
(3)幾何參數法
形狀的表達和匹配採用更為簡單的區域特徵描述方法,例如採用有關形狀定量測度(如矩、面積、周長等)的形狀參數法(shape factor)。在 QBIC 系統中,便是利用圓度、偏心率、主軸方向和代數不變矩等幾何參數,進行基於形狀特徵的圖像檢索。
需要說明的是,形狀參數的提取,必須以圖像處理及圖像分割為前提,參數的准確性必然受到分割效果的影響,對分割效果很差的圖像,形狀參數甚至無法提取。
(4)形狀不變矩法
利用目標所佔區域的矩作為形狀描述參數。
(5)其它方法
近年來,在形狀的表示和匹配方面的工作還包括有限元法(Finite Element Method 或 FEM)、旋轉函數(Turning Function)和小波描述符(Wavelet Descriptor)等方法。
Ⅱ 基於小波和相對矩的形狀特徵提取與匹配
該方法先用小波變換模極大值得到多尺度邊緣圖像,然後計算每一尺度的 7個不變矩,再轉化為 10 個相對矩,將所有尺度上的相對矩作為圖像特徵向量,從而統一了區域和封閉、不封閉結構。
四 空間關系特徵
(一)特點:所謂空間關系,是指圖像中分割出來的多個目標之間的相互的空間位置或相對方向關系,這些關系也可分為連接/鄰接關系、交疊/重疊關系和包含/包容關系等。通常空間位置信息可以分為兩類:相對空間位置信息和絕對空間位置信息。前一種關系強調的是目標之間的相對情況,如上下左右關系等,後一種關系強調的是目標之間的距離大小以及方位。顯而易見,由絕對空間位置可推出相對空間位置,但表達相對空間位置信息常比較簡單。
空間關系特徵的使用可加強對圖像內容的描述區分能力,但空間關系特徵常對圖像或目標的旋轉、反轉、尺度變化等比較敏感。另外,實際應用中,僅僅利用空間信息往往是不夠的,不能有效准確地表達場景信息。為了檢索,除使用空間關系特徵外,還需要其它特徵來配合。
(二)常用的特徵提取與匹配方法
提取圖像空間關系特徵可以有兩種方法:一種方法是首先對圖像進行自動分割,劃分出圖像中所包含的對象或顏色區域,然後根據這些區域提取圖像特徵,並建立索引;另一種方法則簡單地將圖像均勻地劃分為若干規則子塊,然後對每個圖像子塊提取特徵,並建立索引。
⑺ 如何使用Opencv對圖像進行顏色特徵提取
打開小畫家,將色卡打開,點擊吸管工具,移動滑鼠到紅色塊上方,松開滑鼠,此時,吸管工具已經提取了紅色色塊信息。然後點擊右方的「編輯顏色」,彈出顏色選擇對話框,此時,右下角有剛才習慣的紅綠藍顏色信息,如紅152,綠18,藍15。這個就是顏色對應的RGB色彩值。
創建VC控制台工程,加入所需頭文件和庫文件。注意要事先將opencv 頭文件和庫文件添加到工程屬性中,作者使用opencv2.4+VC2010示範。
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <stdio.h>
#include <vector>
#include <math.h>
#pragma comment (lib,"opencv_core244d.lib")
#pragma comment (lib,"opencv_highgui244d.lib")
#pragma comment (lib,"opencv_imgproc244d.lib")
定義一個顏色常量target,默認值即為剛才吸管工具提取的紅色色塊的RGB值分量,和一個計算與顏色標准值色差的函數,暫定為色差在10以內即為相近顏色。這里cv::Vec3b 變數對應一個數組值, Vec3b[0] 對應blue,Vec3b[1]對應green,Vec3b[2]對應Red,即BGR。
接著添加以下代碼,目的為讀取源圖片,根據圖片大小做一定的縮放,然後定義同樣大小的一個灰度圖,用於存貯計算結果值。核心演算法如下,遍歷源圖片,色差(與紅色色塊比較)低於30的即為需要提取的顏色值,將此像素位置記錄並寫入到灰度圖中,以黑色顯示,否則設置為白色。然後將處理前後圖片顯示出來。
實際商業應用中也是可以如法炮製的,比如下圖的葯片,大小,顏色不統一,如何提取識別黃色小葯片在何處或計算其數量呢。
筆者嘗試使用吸管工具提取其BGR值為(22,184,245),將色差由10調整為30,可以正確檢測此葯片。如圖。