• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于C#和SQL Server的圖像特征庫設計與實現(xiàn)①

    2019-02-15 03:56:36宋衛(wèi)華項芳莉
    關鍵詞:字段特征提取檢索

    宋衛(wèi)華, 項芳莉

    (黃山學院信息工程學院,安徽 黃山 245041)

    0 引 言

    基于內容的圖像檢索技術主要從底層顏色、形狀、拓撲結構、紋理等視覺特征和高層語義特征方方面,同時融入人工智能中的深度學習技術,對研究圖像進行分析、識別與檢索[1],其在醫(yī)療輔助診斷、農作物病蟲害識別、人臉識別、設備檢測與維修、旅游推薦等領域有著廣泛的應用?;趦热莸耐扑]系統(tǒng)研究近年來才有了突破性進展[2],基于內容的旅游推薦指根據(jù)旅游商品內容信息(如商品圖像自身屬性、商品詳情等)進行推薦,通過這些特征數(shù)據(jù)來發(fā)現(xiàn)商品的關鍵描述特性,從而將用戶瀏覽歷史特征匹配相似度較高的商品推薦給相關用戶[3]。圖像匹配的模塊主要包含數(shù)據(jù)庫建立和數(shù)據(jù)庫查詢兩大模塊,而特征庫的建立主要是對圖像源中大量數(shù)據(jù)的特征提取問題[4]。為此,文中將以圖像底層特征中的顏色特征為例,使用C#編程語言和SQL Server數(shù)據(jù)庫工具,完成圖像特征庫的設計與實現(xiàn),從而為后續(xù)進行基于圖像特征匹配的旅游推薦研究做好鋪墊。

    1 圖像顏色特征算法分析

    顏色特征作為一種廣泛存在的視覺特征,在圖像檢索和識別領域應用較多。此外,與其他視覺特性相比,其對圖像本身的尺寸、方向和視角的依賴性較小,因此具有較高的魯棒性。顏色相關圖是圖像顏色眾多表達中,描述顏色分布的一種方式,其不僅能刻畫某一種顏色比例,同時還能反映不同顏色對之間的存在的空間相關性,同時,相比于顏色直方圖和顏色聚合向量,在圖像檢索匹配和識別方面具有更高的查準率和查全率,為此被認為是圖像顏色特征的一種有效表達[5]。

    對于一幅圖像I,顏色相關圖是從聯(lián)合概率分布情況出發(fā),描述的是距離為d像素的一對像素Pi和Pj,并分別具有像素值為ci和cj的出現(xiàn)概率Pr,其公式可定義如下:

    (1)

    其中Ici表示顏色為ci的像素的集合。這里距離d采用棋盤距離,即:

    d8(Pi,P)=max(|xi-x|,|yi-y|)文中d取1,這里i∈[0,7],其位置如下圖1所示:

    P0P1P2P3PP4P5P6P7

    圖1 距離d=1時的棋盤距離

    由于統(tǒng)計所得的像素值共有256個灰度級,因此,如果考慮所有顏色之間的相關性,則顏色相關圖的計算量將相當大(空間復雜度為256×256×d),因此采用自相關圖,在此僅考慮具有相同顏色值的像素間的空間關系,從而可將空間復雜度降低至(256×d),即對于上式中ci=cj,因在此自相關圖定義如下:

    (2)

    然后統(tǒng)計上述距離下的顏色值同時為ci的顏色對的概率,公式如下:

    (3)

    2 圖像特征數(shù)據(jù)庫結構實現(xiàn)

    圖像特征庫的建立主要是通過對所給圖像數(shù)據(jù)的遍歷,提取其顏色相關圖特征,然后將特征信息存儲到數(shù)據(jù)庫中,以備用于圖像的檢索、識別等。其主要步驟如下:

    2.1 在SQL Server中創(chuàng)建數(shù)據(jù)庫

    首先在SQL Server2012中建立一個名為ImageFeature的數(shù)據(jù)庫,用于存儲圖像特征信息,實現(xiàn)如下:

    CREATE DATABASE ImageFeature ON PRIMARY

    ( NAME = ' ImageFeature _Data', FILENAME = 'D: ImageFeature _Data.mdf' , SIZE = 4096KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) /*數(shù)據(jù)庫主文件*/

    2.2 結合C#語言在SQL Server中創(chuàng)建特征數(shù)據(jù)庫的表結構

    數(shù)據(jù)庫作為存放數(shù)據(jù)的一個大倉庫,其包含多個表,而這些表存放不同的信息,遵循的是一事一地的原則。在前面論述中可知,基于底層的顏色特征信息是一個256維的向量,這就意味著在ImageFeature數(shù)據(jù)庫存放顏色特征信息的表至少要包含256個字段,然而僅僅用一般的字段命名方法并不可取,故在此為特征字段命名為corr0…corr255,其分別代表像素值為0…255所對應的顏色自相關圖特征,然而運用自主式SQL語言建立不大方便,為此結合C#語言中的ADO.NET技術[6]和嵌入式SQL,一次完成表中256個字段的建立,具體實現(xiàn)步驟如下:

    (1)新建查詢或使用SQL Server Management Studio建立一個顏色特征表

    代碼如下:

    CREATE TABLE corrfeature (

    id identity(1,1) not null, /*圖像id,標識種子,值按1遞增*/

    filepath varchar(200) not null /*圖像路徑:用于存放圖像絕對路徑*/)

    (2)利用ADO.NET技術連接數(shù)據(jù)庫結合嵌入式SQL,為顏色特征表一次添加256個特征字段

    引入命名命名空間: using System.Data.SqlClient ;核心代碼如下:

    string connString =@"server= USER-swhSQLEXPRESS.;database=ImageFeature;integrated security=true";

    SqlConnection nwindConn= new SqlConnection(connString);

    SqlCommand catCMD = nwindConn.CreateCommand();

    nwindConn.Open();/*創(chuàng)建數(shù)據(jù)庫連接*/

    try

    { /*嵌入SQL語句,一次建立256個特征字段*/

    for (int i = 0; i < 256; i++)

    {/*字段循環(huán)命名*/

    string s = "alter table corrfeature add corr" + i.ToString() + " float null";

    string temp= s.ToString();

    catCMD.CommandText = temp;

    catCMD.ExecuteNonQuery();

    }

    MessageBox.Show("表建立完成!");

    }

    則程序編譯通過后,建立的顏色特征表結構即包含id,filepath,corr0-corr255共258個字段。

    3 圖像特征數(shù)據(jù)庫數(shù)據(jù)獲取

    顏色特征表結構建立完成后,僅僅是完成了表靜態(tài)結構的建立,至此,存放數(shù)據(jù)的容器已經設計完畢。如何將圖像源中圖像的底層顏色特征信息數(shù)據(jù),存放到此表中將是接下來要準備的工作,步驟如下:

    3.1 C#中建立特征提取類

    首先在C#中建立一個提取顏色相關圖特征的類imagecorr,以備調用和資源共享,核心代碼如下:

    public class imagecorr

    {static public float[] Correlogram(Bitmap bmp) /*實現(xiàn)顏色自相關圖特征提取的函數(shù)*/

    { Color color;

    int wid,hei;

    wid=bmp.Width;

    hei=bmp.Height;

    int[,] gray = new int[wid, hei];

    float[] bin = new float[256];

    float[,] corr = new float [256, 1];

    float[]mycorrl=new float[256]; /*保存顏色自相關圖特征向量*/

    for(int i=0;i

    {for(int j=0;j

    {color = bmp.GetPixel(i, j);

    int value = (int)(0.299 * color.R + 0.587 * color.G + 0.114 * color.B);

    gray[i, j] = value ;

    }

    }

    /*計算圖像自相關圖特征*/

    for(int i=0;i

    {for(int j=0;j

    { int q = gray[i, j];

    for(int k=1;k<2;k++) /*距離d=1時的棋盤距離*/

    {for(int l=(-1)*k;l

    { try

    { if (gray[i + l, j - k] == q)

    { corr[q,k-1]++;

    mycorrl[q]++;

    }

    }

    try

    { if (gray[i + k, j + l] == q)

    {

    corr[q,k-1]++;

    mycorrl[q]++;

    }

    }

    try

    { if (gray[i - l, j + k] == q)

    { corr[q,k-1]++;

    mycorrl[q]++;

    }

    }

    try

    { if (gray[i - k, j - l] == q)

    {

    corr[q,k-1]++;

    mycorrl[q]++;

    }

    }

    }

    }

    }

    }

    for(int h=0;h<256;h++)

    { if (bin[h]!=0)

    { for(int k=0;k<1;k++)

    { corr[h,k]=corr[h,k]/(8*(k+1)*bin[h]);

    mycorrl[h]=corr[h,k];

    }

    }

    }

    return mycorrl;

    }

    }

    3.2 C#結合嵌入式SQL批量提取圖像特征入庫

    運用C#連接到SQL Server中的數(shù)據(jù)庫,再結合嵌入式SQL對圖像源(一般存放在某個路徑下)中的圖像進行遞歸遍歷[7],然后調用imagecorr類中Correlogram(Bitmap bmp)函數(shù),完成批量圖像的特征提取,并將特征數(shù)據(jù)存放到數(shù)據(jù)庫中的corrfeature表中,核心代碼如下:

    private void buttonFeature_Click(object sender, EventArgs e)/*按鈕單擊事件,選擇圖像源*/

    { FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();

    folderBrowserDialog1.Description = "圖像顏色特征入庫";

    /*選擇圖像源所在目錄*/

    if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)

    { Listimagepath(new DirectoryInfo(folderBrowserDialog1.SelectedPath));}

    MessageBox.Show("特征遍歷提取完成!");

    /*關閉數(shù)據(jù)庫連接,同表結構的建立,此處省略*/

    }

    /*函數(shù)Listimagepath遞歸調用,遍歷路徑下所有圖像*/

    public void Listimagepath(FileSystemInfo myfileinfo)

    { if (!myfileinfo.Exists) return;

    DirectoryInfo dirinfomat = myfileinfo as DirectoryInfo;

    if (dirinfomat == null) return;

    FileSystemInfo[] files = dirinfomat.GetFileSystemInfos();

    for (int i = 0; i <= files.GetUpperBound(0); i++)/*遍歷目錄下所有圖像文件、子目錄 */

    {FileInfo file = files[i] as FileInfo;

    if (file != null) // 是文件

    {if (file.Extension == ".bmp")

    {string sqlstr, filename;

    filename = file.DirectoryName;

    StringBuilder s = new StringBuilder("insert into corrfeature ( filepath");

    Bitmap b = new Bitmap(file.FullName);

    /*調用imagecorr類中的函數(shù)Correlogram,獲取顏色自相關圖特征*/

    float[] mycorr = imagecorr.Correlogram(b);

    for (int j = 0; j < mycorr .Length ; j++)

    { s.Append(",corr" + j); }

    s.Append(" ) values ( '" + file.FullName + "'" );

    for (int j = 0; j < mycorr .Length ; j++)

    {s.Append("," + mycorr[j]);}

    s.Append(")");

    sqlstr = s.ToString();

    try {nwindConn.Open();

    catCMD.CommandText = sqlstr;

    int count= catCMD.ExecuteNonQuery();

    }

    catch { /*捕獲異常,同表結構的建立*/}

    }

    }

    else //是目錄

    { Listimagepath(files[i]); /*對子目錄進行遞歸調用*/ }

    }

    }

    4 結 語

    文中在分析圖像底層顏色相關圖算法的基礎上,運用C#語言和SQL Server2012完成了圖像顏色自相關圖特征數(shù)據(jù)的獲取,進而實現(xiàn)了圖像顏色特征數(shù)據(jù)庫的快速構建,對研究圖像檢索、識別、去噪、旅游推薦等方面具有一定的參考價值。

    猜你喜歡
    字段特征提取檢索
    圖書館中文圖書編目外包數(shù)據(jù)質量控制分析
    2019年第4-6期便捷檢索目錄
    基于Daubechies(dbN)的飛行器音頻特征提取
    電子制作(2018年19期)2018-11-14 02:37:08
    Bagging RCSP腦電特征提取算法
    專利檢索中“語義”的表現(xiàn)
    專利代理(2016年1期)2016-05-17 06:14:36
    CNMARC304字段和314字段責任附注方式解析
    基于MED和循環(huán)域解調的多故障特征提取
    無正題名文獻著錄方法評述
    關于CNMARC的3--字段改革的必要性與可行性研究
    圖書館建設(2014年3期)2014-02-12 15:41:35
    Walsh變換在滾動軸承早期故障特征提取中的應用
    軸承(2010年2期)2010-07-28 02:26:12
    梓潼县| 巴中市| 靖江市| 封丘县| 民丰县| 开化县| 宿州市| 吴旗县| 玉田县| 贡嘎县| 南通市| 萨迦县| 沈丘县| 镇赉县| 绥德县| 武功县| 沁源县| 衡阳县| 临清市| 体育| 兴化市| 湖北省| 长阳| 竹溪县| 古蔺县| 崇明县| 儋州市| 宁都县| 昭苏县| 临高县| 嵊州市| 元阳县| 黔江区| 翁牛特旗| 梅州市| 莱芜市| 瑞昌市| 施甸县| 琼海市| 峨山| 山西省|