• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Matlab實現以圖識圖的研究

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

      劉瑞霖

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

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

      1 研究的背景和目的

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

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

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

      2 研究的實施方法

      2.1 研究平臺的介紹

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

      2.2 以圖識圖的原理

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

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

      1)顏色特征

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

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

      2)紋理特征

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

      能表達各種顏色的在圖像中的分布情況,導致搜索準確率大大降低。

      3)顏色直方圖

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

      2.3 研究實施步驟

      基于圖像內容實現檢索的基本思路是:

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

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

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

      (1)圖像解碼

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

      (2)圖像預處理

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

      (3)圖片特征提取

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

      (4)得出特征矩陣

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

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

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

      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個像素點的圓周內),有足夠多的點(12個點),與點A的灰度之差大于設定的一個閾值,那么程序就判定點A為角點。在以圖識圖中,角點可作為局部特征來進行檢索。但一張圖片中有無數像素點,如果將每個點進行計算,工作量將會巨大。因此通過算法篩選出可能是角點的像素點是一種有效的方法。以下是簡易判斷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;

      兴仁县| 潜江市| 福贡县| 泰顺县| 三河市| 巴里| 枝江市| 建水县| 辽阳县| 平和县| 永定县| 德安县| 顺昌县| 普陀区| 林口县| 汾西县| 额敏县| 和政县| 清水县| 云南省| 巧家县| 彭山县| 大埔区| 北海市| 德钦县| 集安市| 青海省| 石门县| 乡宁县| 政和县| 普宁市| 绥化市| 太白县| 怀集县| 西青区| 宝丰县| 白沙| 宁阳县| 晴隆县| 水城县| 海盐县|