国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Matlab實現(xiàn)以圖識圖的研究

2016-06-30 21:31劉瑞霖
科技視界 2016年15期

劉瑞霖

【摘 要】以前我們想根據(jù)一張圖片搜索更多類似圖片時,往往是輸入圖片的文件名、索引或關(guān)鍵詞來搜索,其結(jié)果往往不盡人意。本文作者擬研究運用圖像識別技術(shù)來實現(xiàn)以圖識圖。圖像識別是基于圖片內(nèi)容,應(yīng)用計算機視覺技術(shù),讓計算機根據(jù)“看到”的有關(guān)圖片而進行比對、匹配,搜索結(jié)果的相似度將有所提高。以圖識圖的實現(xiàn)方法有很多,本文的研究方法是基于Matlab平臺,通過對目標(biāo)圖片和圖庫圖片進行顏色、紋理等特征分析,通過指定算法得到特征矩陣,從而匹配相似度較高的圖片。從研究結(jié)果看,本文所設(shè)計的研究步驟和算法,能較好地實現(xiàn)以圖識圖的功能。

【關(guān)鍵詞】Matlab;以圖識圖;顏色特征;紋理特征;顏色直方圖;特征矩陣

1 研究的背景和目的

隨著互聯(lián)網(wǎng)的發(fā)展,人們之間的交流已不再局限于文字,圖片也成為了信息傳遞的一種重要媒介。然而,雖然圖片比文字更為生動、直觀,容易理解,但面對一幅陌生的圖片,想通過搜索而進一步了解它卻遠(yuǎn)沒有文字搜索容易。在這種情況下,能幫助用戶找到近似的圖片的以圖識圖技術(shù),便尤為重要。美國的谷歌識圖、中國的百度識圖等應(yīng)用相繼推出,讓這方面的研究吸引了越來越多的關(guān)注。

以前的搜索引擎一般是根據(jù)圖片的文件名、索引、關(guān)鍵詞等來進行匹配,但是結(jié)果往往會不盡人意。以圖識圖是應(yīng)用了計算機視覺(computer vision)技術(shù),讓計算機“看到”有關(guān)圖片而進行自動比對、匹配,搜索結(jié)果的相似度將有所提高。

本文擬通過Matlab平臺,研究以圖識圖的實現(xiàn)方法。

2 研究的實施方法

2.1 研究平臺的介紹

MATLAB是指矩陣實驗室(MatrixLaboratory).是一個高級的矩陣/陣列語言,同時也是個是一個包含大量計算算法的集合。Matlab擁有600多個工程中要用到的數(shù)學(xué)運算函數(shù),可以方便的實現(xiàn)用戶所需的各種計算功能。它還提供了專業(yè)水平的符號計算、文字處理、可視化建模仿真和實時控制等功能.由于Matlab是為矩陣計算而研發(fā)的,內(nèi)含多種矩陣運算方法,而每張圖片又可以看作多個像素點組合而成的矩陣,因此它在圖片的特征提取和計算方面顯得尤為方便,適合以圖識圖軟件的編寫。

2.2 以圖識圖的原理

以圖識圖簡單來講就是根據(jù)客戶的目標(biāo)圖片在圖片庫里搜尋相似圖片?;镜脑砭褪侵父鶕?jù)圖像內(nèi)容特征以及特征組合,給每張圖片分配一個像指紋一樣的矩陣,矩陣越接近,圖片就越相似。

本文是通過提取圖像的內(nèi)容特征,如顏色、紋理、形狀等來研究,沒有包括更深一層的語義。提取圖像的內(nèi)容特征就是對圖片特征矩陣(顏色矩陣、紋理矩陣等)的提取,將人類所能觀察到的圖片數(shù)據(jù)化。數(shù)據(jù)化后,將圖片庫中原有的特征矩陣相比對,通常是求兩矩陣之差。因此,數(shù)據(jù)化后得出的檢索結(jié)果,就是圖片庫中,與目標(biāo)圖片的某幾種特征差別最小的,比如說顏色最相近,紋理最近似的。

1)顏色特征

圖像其實是由許許多多被稱為像素點的小點構(gòu)成的,每個像素點有不同的值,這是組成圖像的基本單元要素。

顏色特征就是根據(jù)不同像素點的不同值的特征而提取的一種全局特征。一個像素點代表一種顏色,將所有像素點進行提取、統(tǒng)計,就可以得到各種顏色在圖像中像素點總個數(shù),然通過顏色直方圖表達(dá)出來。

2)紋理特征

“紋理是由一個具有一定的不變性的視覺基元,在給定區(qū)域內(nèi)的不同位置上,以不同的形變和不同的方向重復(fù)出現(xiàn)的一種圖紋”,它也是圖像的重要“身份”特征之一。使用紋理特征可以較好地區(qū)分出相似顏色區(qū)域,對于物體和背景不易分割的圖像比較適用。

能表達(dá)各種顏色的在圖像中的分布情況,導(dǎo)致搜索準(zhǔn)確率大大降低。

3)顏色直方圖

顏色直方圖是顏色在圖像中的空間分布情況,它是基于不同的顏色空間和坐標(biāo)系。常用的顏色空間有RGB、HSV、Luv和Lab空間,其中HSV是最常用的,對應(yīng)人眼視覺特性,從色彩(Hue)、飽和度(Saturation)和值(Value)三個方面來表達(dá)圖像的特征。

2.3 研究實施步驟

基于圖像內(nèi)容實現(xiàn)檢索的基本思路是:

1)分析目標(biāo)圖片的基本內(nèi)容,通過自動或半自動的方法提取目標(biāo)圖像的特征,包括顏色、紋理、形狀以及空間關(guān)系等特征。

2)將得到的圖像特征作為其“指紋身份”,根據(jù)指定的算法計算和評價目標(biāo)圖像和圖庫圖像各種特征之間的相似程度。

3)根據(jù)比對結(jié)果,將最相似的一組圖片反饋給使用者。

(1)圖像解碼

通過掃描、采樣和量化,提取圖片的顏色空間。在Matlab中可以直接用一個子程序A=imread(‘圖片路徑/圖片名.圖片格式‘)實現(xiàn)。

(2)圖像預(yù)處理

對圖像進行縮放、灰度、反轉(zhuǎn)、直方圖等格式轉(zhuǎn)換,以供程序提取特征使用。

(3)圖片特征提取

通過程序提取圖像顏色、紋理和HSV顏色空間等描述全局特征,使用fast、Harris描述圖像的局部特征。

(4)得出特征矩陣

通過Matlab得到MAT格式的矩陣集合,每個矩陣代表一個圖片。

(5)特征相似度匹配及索引

用“距離”的概念來度量圖片的相似度。有閔式、余弦和海明距離來規(guī)定這些圖片的相似程度,計算兩張圖片的“距離”的最簡單的算法就是:距離=sqrt(sum((X-Y)^2)), X與Y代表兩個矩陣中相對應(yīng)的元素。再按照一定的檢索算法,和圖片庫的特征進行比對,得到匹配程度的排序。

2.4 具體算法

1)比較兩張圖片imgn1和imgn2的紋理特征:

imgn1=zeros(m1,n1);

for i=2:m1-1

for j=2:n1-2

pow1=0;

for q =j-1:j+1

for p=i-1:i+1

if img1(p,q) > img1(i,j)

if p~=i || q~=j

imgn1(i,j)=imgn1(i,j)+2^pow1;

pow1=pow1+1;

end

end

end

end

end

end

x1=imgn1(:);

X=1.0.*hist(x1,256)/(m1*n1);

img2=imread('D:\f.jpg');

img2=rgb2gray(img2);

[m2 n2]=size(img2);

imgn2=zeros(m2,n2);

for a=2:m2-1

for b=2:n2-1

pow2=0;

for t =b-1:b+1

for s=a-1:a+1

if img2(s,t) > img2(a,b)

if s~=a || t~=b

imgn2(a,b)=imgn2(a,b)+2^pow2;

pow2=pow2+1;

end

end

end

end

end

end

x2=imgn2(:);

Y=1.0.*hist(x2,256)/(m2*n2);

dist=sqrt(sum((X-Y).*(X-Y)));

dist=dist/3

2)比較兩張圖片I1和I2的HSV顏色特征:

I1=imread('D:\b.jpg');

I2=imread('D:\e.jpg');

[m1,n1,c1]=size(I1);

[m2,n2,c2]=size(I2);

I1=rgb2hsv(I1);

I2=rgb2hsv(I2);

H1=I1(:,:,1);

S1=I1(:,:,2);

V1=I1(:,:,3);

H2=I2(:,:,1);

S2=I2(:,:,2);

V2=I2(:,:,3);

XH=1.0.*imhist(H1)/(m1*n1);

YH=1.0.*imhist(H2)/(m2*n2);

distH =sum((XH-YH).*(XH-YH));

SUMH=sum(distH(:));

SUMH=SUMH/3;

XS=1.0.*imhist(S1)/(m1*n1);

YS=1.0.*imhist(S2)/(m2*n2);

distS=sum((XS-YS).*(XS-YS));

SUMS=sum(distS(:));

SUMS=SUMS/3;

XV=1.0.*imhist(V1)/(m1*n1);

YV=1.0.*imhist(V2)/(m2*n2);

distV=sum((XV-YV).*(XV-YV));

SUMV=sum(distV(:));

SUMV=SUMV/3;

sqrt(SUMH+SUMS+SUMV)

3)局部特征fast角點:

角點就是在圖片中灰度急劇變化的點。Fast算法規(guī)定,如果點A的周圍(在半徑為3個像素點的圓周內(nèi)),有足夠多的點(12個點),與點A的灰度之差大于設(shè)定的一個閾值,那么程序就判定點A為角點。在以圖識圖中,角點可作為局部特征來進行檢索。但一張圖片中有無數(shù)像素點,如果將每個點進行計算,工作量將會巨大。因此通過算法篩選出可能是角點的像素點是一種有效的方法。以下是簡易判斷fast角點的代碼:

第一層:

I=imread('D:\Day-2\Flower2.jpg');

im2uint8(rgb2gray(I));

h=fspecial('gaussian',5);

I=imfilter(I,h);

[m,n]=size(I);

t=20;

Corners=zeros(m,n);

for i=4:m-20

for j=20:n-20

Surpass=0;

if abs(I(i,j)-I(i-3,j))>t

Surpass=Surpass+1;

end

if abs(I(i,j)-I(i,j-3))>t

Surpass=Surpass+1;

end

if abs(I(i,j)-I(i+3,j))>t

Surpass=Surpass+1;

end

if abs(I(i,j)-I(i,j+3))>t

Surpass=Surpass+1;

end

if Surpass>=3

Corners(i,j)=1;

图木舒克市| 舞阳县| 松江区| 东阳市| 休宁县| 城市| 晴隆县| 磐安县| 东乌| 遂川县| 涿鹿县| 睢宁县| 衡南县| 精河县| 修水县| 灵川县| 潞西市| 镇宁| 花莲市| 保定市| 石城县| 远安县| 固始县| 上犹县| 泉州市| 榆树市| SHOW| 锦屏县| 长顺县| 浦东新区| 乐亭县| 肇庆市| 和顺县| 赤水市| 铜陵市| 隆子县| 分宜县| 冷水江市| 安西县| 宜兰县| 大同市|