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

?

基于C#和SQL Server的圖像特征庫(kù)設(shè)計(jì)與實(shí)現(xiàn)①

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

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

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

0 引 言

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

1 圖像顏色特征算法分析

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

對(duì)于一幅圖像I,顏色相關(guān)圖是從聯(lián)合概率分布情況出發(fā),描述的是距離為d像素的一對(duì)像素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時(shí)的棋盤距離

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

(2)

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

(3)

2 圖像特征數(shù)據(jù)庫(kù)結(jié)構(gòu)實(shí)現(xiàn)

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

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

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

CREATE DATABASE ImageFeature ON PRIMARY

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

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

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

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

代碼如下:

CREATE TABLE corrfeature (

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

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

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

引入命名命名空間: 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ù)庫(kù)連接*/

try

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

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("表建立完成!");

}

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

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

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

3.1 C#中建立特征提取類

首先在C#中建立一個(gè)提取顏色相關(guān)圖特征的類imagecorr,以備調(diào)用和資源共享,核心代碼如下:

public class imagecorr

{static public float[] Correlogram(Bitmap bmp) /*實(shí)現(xiàn)顏色自相關(guā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]; /*保存顏色自相關(guān)圖特征向量*/

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 ;

}

}

/*計(jì)算圖像自相關(guān)圖特征*/

for(int i=0;i

{for(int j=0;j

{ int q = gray[i, j];

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

{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#結(jié)合嵌入式SQL批量提取圖像特征入庫(kù)

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

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

{ FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();

folderBrowserDialog1.Description = "圖像顏色特征入庫(kù)";

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

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

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

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

/*關(guān)閉數(shù)據(jù)庫(kù)連接,同表結(jié)構(gòu)的建立,此處省略*/

}

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

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);

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

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 { /*捕獲異常,同表結(jié)構(gòu)的建立*/}

}

}

else //是目錄

{ Listimagepath(files[i]); /*對(duì)子目錄進(jìn)行遞歸調(diào)用*/ }

}

}

4 結(jié) 語

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

猜你喜歡
字段特征提取檢索
圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
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字段責(zé)任附注方式解析
基于MED和循環(huán)域解調(diào)的多故障特征提取
無正題名文獻(xiàn)著錄方法評(píng)述
關(guān)于CNMARC的3--字段改革的必要性與可行性研究
Walsh變換在滾動(dòng)軸承早期故障特征提取中的應(yīng)用
軸承(2010年2期)2010-07-28 02:26:12
纳雍县| 五莲县| 沧州市| 古蔺县| 揭阳市| 巨野县| 桦甸市| 汉沽区| 金川县| 太仓市| 石首市| 黔西| 济宁市| 三河市| 揭西县| 子洲县| 肇州县| 会同县| 施秉县| 壤塘县| 灵台县| 千阳县| 神木县| 凤翔县| 澄迈县| 黔江区| 潜江市| 漠河县| 宁蒗| 靖西县| 太仆寺旗| 乐都县| 佳木斯市| 馆陶县| 兴仁县| 桐城市| 班戈县| 九江县| 招远市| 宁陕县| 靖宇县|