青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

用VC++實現圖像檢索技術

一. 理論和方法介紹

  a) 采用顏色檢索方法的目的:

  對多媒體數據的檢索,早期的方法是用文本將多媒體數據進行標識,這顯然不是基于多媒體信息本身內容的檢索,對多媒體數據中包含的信息是一中及大的浪費;

  基于內容的檢索是多媒體數據庫的關鍵技術,如何實現這塊技術,是值得商榷的,而最好的方法是使用無需領域知識的檢索方法,因此,基于顏色的方法就是實現的關鍵;

  本文介紹了顏色直方圖和顏色對方法在基于內容檢索時的實現思路和理論;

  其實顏色直方圖簡單來說,就是統計圖像中具有某一特定顏色的象素點數目而形成的各顏色的直方圖表示,不同的直方圖代表不同圖片的特征。

  b) 利用顏色直方圖進行檢索:

  該方法也可以應用于視頻數據庫的查詢中,有以下三種方式:

  (1)指明顏色組成--該法需要用戶對圖像中的顏色非常敏感,而且使用起來也不方便,檢索的查準率和查全率并不高,因此文章中并未介紹該法的實現思路

  (2)指明一幅示例圖像--通過與用戶確定的圖像的顏色直方圖的相似性匹配得到查詢結果,這是文章介紹的兩種方法的根本

  (3)指明圖像中一個子圖--分割圖像為各個小塊,然后利用選擇小塊來確定圖像中感興趣的對象的輪廓,通過建立更復雜的顏色關系(如顏色對方法)來查詢圖像,該方法是文章的重心所在

  c) 顏色直方圖實現思路的介紹:

  兩圖片是否相似可以采用歐氏距離來描述:

   Ed=(G,S)=用VC++實現圖像檢索技術(圖一)(Ed越小相似度就越大)
  檢索后,全圖直方圖的相似度的定量度量可以用如下公式表示:

   Sim(G,S)= 用VC++實現圖像檢索技術(圖二)
   (N為顏色級數,Sim越靠近1兩幅圖片越相似)

  可以對上面2中的公式加改進對某些相對重要的顏色乘上一個權重,就可以做尋找某一前景或組合的查詢。

  全圖的顏色直方圖算法過于簡單,因此帶來很多問題,如:可能會有兩幅根本不同的圖像具有完全一樣的顏色直方圖,不反映顏色位置信息,這樣導致查準率和查全率都不高,因此問文章提出了一個改進,即將圖像進行了分割,形成若干子塊,這樣就提供了一定程度的位置信息,而且可以對含用戶感興趣的子塊加大權重,提高檢索的查詢智能性和查準查全率,相應的公式有,子塊Gij與Sij的相似性度量為:

  用VC++實現圖像檢索技術(圖三)
  (P為所選顏色空間的樣點數)

  再引入子塊權重Wij,選取L個最大的Sim值作Simk(Gk,Sk),就有:
用VC++實現圖像檢索技術(圖四)
   
(Wk 的選取應根據圖像的特點決定,可以使圖像中間或用戶指定的區域權重大,以反映圖像的位置信息)

  d) 顏色對實現思路介紹:

  主要目的:借助圖像中相鄰子塊之間的顏色直方圖的配對建模,實現對圖像中的具體對象的查詢,支持對象的移位、旋轉和部分變形;

  顏色對方法特別適合于對邊界明顯的對象的查詢;

  實現思路:計算用戶輸入圖像的子塊直方圖片à用戶選定包含查詢對象的子塊à計算這些子塊與周圍相鄰的子塊的顏色對表à將這些顏色對中差值小于某一域值的顏色對刪除以消除顏色噪聲à選取顏色對表中數值最大的幾個顏色對做為圖片的代表特征à搜索目標圖像的每一子塊的顏色對表尋找與這寫代表顏色對的匹配à統計單一匹配次數à若有某一比例以上的顏色對匹配到,圖像即被檢索到。

  相似性度量:
  用VC++實現圖像檢索技術(圖五)
   
  (N為所用查詢顏色對數目)
  qj、gj:顏色對j在查詢圖像Q和目標圖像G中出現的次數

  查詢時顏色對的匹配應該是不精確的,應該允許的誤差為2%以內

  二. 具體程序實現

  a) 基于子塊顏色直方圖方法的程序實現:

  將圖片分成4×4格局,按從左到右、從上到下的順序,分別計算各子塊的顏色直方圖,因此需要設定一個三維數組,前兩維為子塊的坐標,最后一維為顏色級,但現在采樣得到的象素點的顏色值是RGB形式的,因此,需要將RGB形式轉換為可以用比較合理的有限數表示的顏色級,而人眼對亮度是最為敏感的,因此可以將RGB轉換為亮度值Y,公式為:

  Y=R×0.299+G×0.587+B×0.114

  這樣就確定的一個256級的顏色級別,而統計顏色直方圖的三維數組就可以定義為:int Color[4][4][256],當采樣到某一顏色級時候,將相應的位置加一即可。

  根據以上的子塊間的相似公式:
用VC++實現圖像檢索技術(圖六),知道某一顏色級對應的數有可能是分母,當兩個顏色級的數都為0的時候,顯然是不能統計的,因此需要一個數組記錄實際統計過的顏色級數,也需要一個數組記錄4×4子塊的兩幅圖像的各子塊的相似度。

  對于用戶選定的塊其實是代表查詢對象的,因此應該加大權重,相對來說就是減小其他塊的權重,然后可以將乘過對應權重的塊的相似度相加,得到最終的相似度,然后將所有目標圖像與用戶輸入的圖像的相似度從大到小排序,選出值最大的幾張作為最后的查詢結果顯示出來返回。

  以上是具體實現設想,程序實現如下:

//基于顏色直方圖的方法
pDC->TextOut(10,168,"檢索結果:");
CBmpProc *pDestBmp;
CString comp_pic_path;
double fsim[15]; file://15張待比較的目標圖片與用戶輸入圖片的相似度存放的數組
int psim[15]; file://與fsim想對應的圖片編號數組,以便顯示
for(int comp_pic=1;comp_pic<=15;comp_pic++){
comp_pic_path.Format("image%d.bmp",comp_pic);
bmp.LoadFromFile(comp_pic_path); // 從庫中讀入位圖
pDestBmp = (CBmpProc*)new(CBmpProc); // 用new分配類目標
pDestBmp->LoadFromObject(bmp, &CRect(0,0,128,128));
// 從bmp中的指定區域讀入圖像,以便圖片匹配的進行
pDestBmp->CalculateColor(*pDC); file://計算目標圖片的顏色直方圖
int x1,x2,y1,y2,x3,x4,y3,y4;
x1=obj_set.m_x1;x2=obj_set.m_x2;x3=obj_set.m_x3;x4=obj_set.m_x4;
y1=obj_set.m_y1;y2=obj_set.m_y2;y3=obj_set.m_y3;y4=obj_set.m_y4;
file://用戶輸入的對象所在子塊(既用戶選定的4個子塊)的坐標
double sim[4][4]; file://子塊之間的相似度數組
int ccount[4][4]; file://有過統計的顏色數目記錄數組
for(int i=0;i<4;i++)
for(int j=0;j<4;j++){
sim[i][j]=0;
ccount[i][j]=0;
}
file://以下兩個for按公式計算兩幅圖像的各對應子塊之間的相似度
for(i=0;i<4;i++)
for(int j=0;j<4;j++)
for(int k=0;k<256;k++){
if((pDestBmp->Color[i][j][k]>=pBmp->Color[i][j][k])&&pDestBmp->Color[i][j][k]!=0){
sim[i][j]+=(1-((fabs(pDestBmp->Color[i][j][k]-pBmp->Color[i][j][k]))/(pDestBmp->Color[i][j][k])));
ccount[i][j]++;
}
if((pDestBmp->Color[i][j][k]Color[i][j][k])&&pBmp->Color[i][j][k]!=0){
sim[i][j]+=(1-((fabs(pDestBmp->Colori][j][k]-pBmp->Color[i][j][k]))/(pBmp->Color[i][j][k])));
 ccount[i][j]++;
  }
 }
for(i=0;i<4;i++)
for(int j=0;j<4;j++){
sim[i][j]=sim[i][j]/ccount[i][j];
}
file://計算兩圖像最終的相似度結果
double final_sim=0;
for(i=0;i<4;i++)
for(int j=0;j<4;j++){
file://對用戶指定的塊設置權重為1
if((i==x1&&j==y1)||(i==x2&&j==y2)||(i==x3&&j==y3)||(i==x4&&j==y4))
final_sim+=sim[i][j];
else
file://其他塊降低權重為0.7,提高對對象匹配的精確度
final_sim+=(sim[i][j]*0.7);
}
file://將15幅被比較圖像與用戶輸入源圖像的最后計算出來的相似度結果記錄在數組中
fsim[comp_pic-1]=final_sim;
delete (CBmpProc*)pDestBmp;
}
int count=15;double tempf;int tempp;
for(int l=0;l<15;l++){
psim[l]=l+1; file://設定編號數組
}
file://將15個相似度從大到小排列,并且改變次序的時候編號數組和跟著改變
for(int i=count;i>0;i--){
for(int j=0;jif(fsim[j]tempf=fsim[j];
tempp=psim[j];
fsim[j]=fsim[j+1];
psim[j]=psim[j+1];
fsim[j+1]=tempf;
psim[j+1]=tempp;
}
}
int disp=0;
int space=-128;
file://將相似度最大的的兩張圖片顯示出來
for(int disp_pic=1;disp_pic<=2;disp_pic++){
comp_pic_path.Format("image%d.bmp",psim[disp_pic]);
bmp.LoadFromFile(comp_pic_path); // 從庫中讀入位圖
pDestBmp = (CBmpProc*)new(CBmpProc); // 用new分配類目標
pDestBmp->LoadFromObject(bmp, &CRect(0,0,128,128)); // 從bmp中的指定區域讀入圖像
disp++;
space+=128;
pDC->Rectangle(10+space-1,190-1,138+space+1,318+1);
pDestBmp->Draw(*pDC, &CRect(10+space,190,138+space,318));
// 將pBmp中的圖像繪入DC的指定區域
space+=6;
}
delete (CBmpProc*)pBmp; // 刪除類目標,delete會自動調用類的析構函數。
AfxMessageBox("檢索完成");
}

  b) 基于顏色對的方法的程序實現

  該方法也需要分成4×4子塊,計算顏色直方圖,具體計算顏色直方圖的方法上面已經有過詳細的解釋。
該方法主要在于對顏色對表示結構的實現,顏色對是某一圖片的代表特征,因此在程序中必須有定量表示,現在采取用兩個子塊顏色直方圖的歐氏距離表示,因此計算某一子塊的顏色對表就是按八方向計算其與周圍的子塊之間的歐氏距離,將結果存放于一個double o_dis[8]的數組中,然后將這個數組從大到小排序,排序完成后再將數組中相互之間值的差小于某一域值(取8個顏色對的平均值的2%)的顏色對祛除(按序兩兩比較再移動數組里的變量實現),最后將結果先填入圖像的特征顏色對表(有4×8=32個變量,是一個結構數組,結構記錄用戶選定子塊的坐標和與其相對應的被選中的顏色對值)。

  最后,對4個用戶選定的子塊依次計算完畢,就可以調用SortColorPair()函數,對特征顏色對表做出處理(先從大到小排序,然后祛除差值小于總平均值的2%的特征顏色對)。

  在比較的時候,按順序計算出目標圖像的子塊顏色對表,和以上的特征顏色對表匹配,如果匹配到,則標記該顏色對(設定另一標記0數組),并且將匹配數變量加一,如果最后匹配到的數目是60%以上,就算目標圖像被搜索到。

  具體程序實現如下:

//計算子塊(x,y)的顏色對表,采取"八方向鄰接技術"
int CBmpProc::CalculateColorPair(int x, int y)
{
file://顏色對采取歐氏距離來描述
double o_dis[8];
for(int k=0;k<8;k++){
o_dis[k]=0;
}
file://計算(x,y)與周圍所有子塊的顏色直方圖的歐氏距離
file://---------------------------------------------
for(int i=0;i<256;i++){
if((x-1)>=0&&(y-1)>=0)
o_dis[0]=o_dis[0]+(Color[x-1][y-1][i]-Color[x][y][i])*(Color[x-1][y-1][i]-Color[x][y][i]);
else
o_dis[0]=-1;
if((y-1)>=0)
o_dis[1]=o_dis[1]+(Color[x][y-1][i]-Color[x][y][i])*(Color[x][y-1][i]-Color[x][y][i]);
else
o_dis[1]=-1;
if((x+1)<=3&&(y-1)>=0)
o_dis[2]=o_dis[2]+(Color[x+1][y-1][i]-Color[x][y][i])*(Color[x+1][y-1][i]-Color[x][y][i]);
else
o_dis[2]=-1;
if((x-1)>=0)
o_dis[3]=o_dis[3]+(Color[x-1][y][i]-Color[x][y][i])*(Color[x-1][y][i]-Color[x][y][i]);
else
o_dis[3]=-1;
if((x+1)<=3)
o_dis[4]=o_dis[4]+(Color[x+1][y][i]-Color[x][y][i])*(Color[x+1][y][i]-Color[x][y][i]);
else
o_dis[4]=-1;
if((x-1)>=0&&(y+1)<=3)
o_dis[5]=o_dis[5]+(Color[x-1][y+1][i]-Color[x][y][i])*(Color[x-1][y+1][i]-Color[x][y][i]);
else
o_dis[5]=-1;
if((y+1)<=3)
o_dis[6]=o_dis[6]+(Color[x][y+1][i]-Color[x][y][i])*(Color[x][y+1][i]-Color[x][y][i]);
else
o_dis[6]=-1;
if((x+1)<=3&&(y+1)<=3)
o_dis[7]=o_dis[7]+(Color[x+1][y+1][i]-Color[x][y][i])*(Color[x+1][y+1][i]-Color[x][y][i]);
else
o_dis[7]=-1;
}
for(int j=0;j<8;j++){
if(o_dis[j]>=0)
o_dis[j]=sqrt(o_dis[j]);
}
file://------------------------------------------------
file://歐氏距離計算結束
int flag=0;
int num=0;
for(int pairnum=0;pairnum<32;pairnum++){
if(pair[pairnum].x!=-1){
num++;
}
}//因為在計算子塊的顏色對表的時候已經寫了特征顏色對數組,因此要先統計一下特征顏色對數組里已經//有多少有數值了,以便下次的寫入可以接在后面,而不至于覆蓋了前面的數值
file://計算顏色對差值小于某個"域值"的這個域值
double ave=0;
for(int e=0;e<8;e++){
ave+=o_dis[e];
}
ave=ave/8;ave=ave*0.02; file://采取與子塊周圍顏色對的平均值的2%計為域值
file://對該子塊的顏色對表進行從大到小的排序,采取冒泡排序
int count=8; double temp;
for(i=count;i>0;i--){
for(int j=0;jif(o_dis[j]temp=o_dis[j];
o_dis[j]=o_dis[j+1];
o_dis[j+1]=temp;
}
}
file://消除那些顏色對差值小于某個"域值"的顏色對,以消除那些沒有意義的小對象
for(k=0;kif(fabs(o_dis[k]-o_dis[k+1])for(int l=k+1;lo_dis[l]=o_dis[l+1];
}
count--;
k--;
o_dis[count]=-1;
}
}
file://將該字塊計算得到的顏色對表填入該圖像的特征顏色對表
for(int scan=0;scan<8;scan++){
if(o_dis[scan]>0){
pair[num].x=x;
pair[num].y=y;
pair[num].o_dis=o_dis[scan];
num++;
}
}
return 1;
}

//計算該圖像的最終確定的特征顏色對表
BOOL CBmpProc::SortColorPair()
{
file://32個數據項中有count個有實際數值
for(int count=0;count<32;count++){
if(pair[count].x==-1)
break;
}
struct color_pair temp;
file://對顏色對表從大到小排列序(冒泡排序法)
for(int i=count;i>0;i--){
for(int j=0;jif(pair[j].o_distemp=pair[j];
pair[j]=pair[j+1];
pair[j+1]=temp;
}
}
file://計算域值以消除差值小于這個值的顏色對
double ave=0;
for(int e=0;eave+=pair[e].o_dis;
}
ave=ave/count;
ave=ave*0.02;
file://消除差值小于域值的顏色對
for(int k=0;kif(fabs(pair[k].o_dis-pair[k+1].o_dis)for(int l=k+1;lpair[l]=pair[l+1];
}
count--;
k--;
}
}
file://置特征顏色對數目變量
pair_count=count;
return true;
}
將計算顏色直方圖的代碼表達如下:
file://以下函數計算顏色直方圖
BOOL CBmpProc::CalculateColor(CDC &dc)
{
if (!IsValid())
return FALSE;
ASSERT(m_pInfo);
ASSERT(m_pInfo->bmiHeader.biSize == sizeof(BITMAPINFOHEADER));
// 復制源圖
CDC compDC;
// 創建與當前顯示設備兼容的內存設備描述表
compDC.CreateCompatibleDC(&dc);
compDC.SelectObject(this);
COLORREF clr; file://定義一個COLORREF結構,因為提取的象素點的顏色是以RGB形式表示的
int pix_color;
int red,green,blue;
int x,y;
for(int fd=0;fd<4;fd++)
for(int sd=0;sd<4;sd++)
for(int td=0;td<256;td++){
Color[fd][sd][td]=0;
}
file://計算顏色直方圖
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
for(int k=0;k<32;k++)
for(int l=0;l<32;l++){
x=j*32+l;
y=i*32+k;
clr=compDC.GetPixel(x,y);
red=GetRValue(clr);
green=GetGValue(clr);
blue=GetBValue(clr);
file://因為RGB顏色共256^3種,不可能都保存到數組中,因此要先進行一定的提取工作,因為人對亮度的感
file://覺是最明顯的,所以可以先將RGB顏色值轉成亮度值,這個公式即轉換公司,剛好亮度數值是256級的,//就可以統計顏色直方圖了
pix_color=red*0.299+green*0.587+blue*0.114;
Color[i][j][pix_color]++;
file://對該象素點的顏色直方圖數組中的相信位置加一,是直方圖的物理實現
}
return true;
}

  以上三個函數實現對某一圖像內部的具體計算,而對于基于顏色對方法的外部計算如下:

//計算用戶確定的4塊位置與其周圍位置的顏色對(顏色對現采取用相鄰兩塊的直方圖的歐氏距離表示)
pBmp->CalculateColorPair(obj_set.m_x1,obj_set.m_y1);
pBmp->CalculateColorPair(obj_set.m_x2,obj_set.m_y2);
pBmp->CalculateColorPair(obj_set.m_x3,obj_set.m_y3);
pBmp->CalculateColorPair(obj_set.m_x4,obj_set.m_y4);
file://其實在以上的4部計算中,已經形成了初步的顏色對表,在此只不過是將表中的數據從大到小排列出來//并且祛除差值小于某一域值的顏色對
file://計算顏色對結束,形成顏色對表
pBmp->SortColorPair();
file://顏色對表計算出來,表中的數據既是用戶輸入的該圖像的代表特征
pDC->TextOut(10,168,"檢索結果:");
CBmpProc *pDestBmp;
CString comp_pic_path;
int disp=0;
int space=-128;
file://讀取帶比較的圖像(在此初定15幅--現定義這15幅圖像即圖片數據庫)
for(int comp_pic=1;comp_pic<=15;comp_pic++){
comp_pic_path.Format("image%d.bmp",comp_pic);
bmp.LoadFromFile(comp_pic_path); // 從庫中讀入位圖
pDestBmp = (CBmpProc*)new(CBmpProc); // 用new分配類目標
pDestBmp->LoadFromObject(bmp, &CRect(0,0,128,128)); // 從bmp中的指定區域讀入圖像
file://計算當前被比較的圖像的顏色直方圖
pDestBmp->CalculateColor(*pDC);
int match=0; file://顏色對匹配數目
double ave=0; file://確定匹配時候不能使用精確匹配,所以需要一個差值小于某一域值時的域值
for(int s=0;spair_count;s++){
ave+=pBmp->pair[s].o_dis;
}
ave=ave/pBmp->pair_count; file://這個域值的基數即是用戶輸入的圖片的顏色對表中顏色對的平均值
ave=ave*0.02; file://確定誤差小于2%的顏色對均屬于這個域值

int pairflag[32]; file://顏色對匹配標志數組,即某一顏色對如果在目標圖像中找到,下一次就不能再匹配
for(int t=0;t<32;t++){
pairflag[t]=-1;
}
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
file://按順序計算目標圖像中一子塊與其周圍子塊的顏色對,然后在用戶輸入的圖像的顏色對表中查詢計算出//來的顏色對
pDestBmp->CalculateColorPair(i,j);
for(int scan=0;scan<8;scan++){
if(pDestBmp->pair[scan].x==-1)
break;
}
for(int comp=0;compfor(int count=0;countpair_count;count++){
if((fabs(pBmp->pair[count].o_dis-pDestBmp->pair[comp].o_dis))file://差值小于某域值,則匹配到
pairflag[count]=0; file://置顏色對匹配標志位
match++; file://匹配數加一
break;
}
}
}
file://重新置目標圖像的顏色對表為空,因為現在的實現方式是在計算某一子塊的顏色對時已經寫過了顏色對//表,為保證顏色對表的真確性,必須在查詢下一子塊的時候重新置顏色對表為空
for(int re=0;repDestBmp->pair[re].x=-1;
}
}
file://如果有60%以上的特征顏色對匹配到,就說明該圖像已經被檢索到
if(match>=(pBmp->pair_count*0.60)){
file://以下是對檢索到的圖像的界面上的排版顯示
disp++;
space+=128;
file://畫圖像邊框
pDC->Rectangle(10+space-1,190-1,138+space+1,318+1);
pDestBmp->Draw(*pDC, &CRect(10+space,190,138+space,318)); // 將pBmp中的圖像繪入DC的指定區域
space+=6;
}
delete (CBmpProc*)pDestBmp; // 刪除類目標,delete會自動調用CBmpProc類的析構函數。
}
delete (CBmpProc*)pBmp; // 刪除類目標,delete會自動調用類的CBmpProc析構函數。
AfxMessageBox("檢索完成");

posted on 2008-09-10 19:12 wrh 閱讀(827) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情视频免费观看| 欧美jizz19性欧美| 久久99在线观看| 久久女同互慰一区二区三区| 欧美电影免费观看高清完整版| 欧美一区二区视频97| 亚洲人成网站影音先锋播放| 亚洲欧美视频在线观看视频| 麻豆视频一区二区| 欧美性猛交99久久久久99按摩| 国产自产2019最新不卡| 欧美一区二区视频网站| 精久久久久久| 欧美在线视频a| 亚洲一区二区三区精品在线| 欧美四级电影网站| 亚洲综合色丁香婷婷六月图片| 亚洲精品国产精品乱码不99按摩 | 久久尤物视频| 亚洲国产精品毛片| 国产精品成人免费| 亚洲韩国一区二区三区| 久久激情视频久久| 久久九九久久九九| 日韩午夜在线视频| 欧美亚洲一级片| 激情综合色丁香一区二区| 欧美国产日本在线| 国产精品video| 麻豆九一精品爱看视频在线观看免费 | 欧美三区免费完整视频在线观看| 99视频在线精品国自产拍免费观看| 亚洲第一主播视频| 国产乱码精品一区二区三| 欧美成人午夜剧场免费观看| 欧美色综合网| 麻豆成人av| 国产欧美一区二区三区视频 | 欧美视频在线观看视频极品| 性做久久久久久免费观看欧美| 久久精品最新地址| 美女日韩欧美| 国产精品三区www17con| 欧美激情区在线播放| 国产视频欧美视频| 亚洲国产婷婷| 久久精品一区二区三区四区| 亚洲免费在线观看| 欧美日韩精品一区| 亚洲国产精品日韩| 亚洲美女毛片| 欧美精品久久一区二区| 亚洲国产成人av在线| 日韩视频一区二区三区在线播放免费观看 | 亚洲精品1234| 免费观看日韩| 一本不卡影院| 欧美亚洲成人免费| 午夜在线精品偷拍| 久久久久综合网| 激情综合网激情| 蜜月aⅴ免费一区二区三区| 欧美成人综合在线| 亚洲一区二区高清视频| 巨乳诱惑日韩免费av| 亚洲人成人一区二区三区| 欧美日韩1080p| 午夜精品视频网站| 亚洲精品欧洲| 久久久噜噜噜久久人人看| 亚洲毛片一区二区| 国产日韩精品一区| 欧美日韩精品高清| 久久久999精品免费| 午夜久久黄色| 国产精品极品美女粉嫩高清在线 | 亚洲第一福利在线观看| 欧美国产丝袜视频| 久久久精品动漫| 亚洲视频视频在线| 欧美黄色一区| 久久精品一本| 欧美一区二区三区在线观看视频| 亚洲国产小视频在线观看| 欧美日韩成人综合在线一区二区| 欧美伊人久久久久久久久影院| 亚洲国内精品在线| 亚洲东热激情| 亚洲国产日韩欧美在线99 | 国产一区观看| 日韩视频一区二区三区在线播放免费观看| 久久精品免费电影| 久久国产夜色精品鲁鲁99| 亚洲欧美激情视频在线观看一区二区三区| 欧美日韩综合久久| 欧美成年人网站| 久久久亚洲国产美女国产盗摄| 亚洲欧美日韩在线播放| 午夜精品区一区二区三| 羞羞色国产精品| 久久精品国产99国产精品| 久久精品视频在线免费观看| 久久国产精品99精品国产| 午夜精品久久久久久久久久久久| 亚洲高清视频一区二区| 日韩一级免费| 亚洲欧美日韩精品在线| 老司机成人网| 国产精品蜜臀在线观看| 亚洲第一精品夜夜躁人人爽| 久久精品麻豆| 久久久精品一品道一区| 欧美一区二区视频在线观看2020 | 在线观看亚洲精品视频| 欧美国产日韩a欧美在线观看| 亚洲午夜视频在线观看| 乱人伦精品视频在线观看| 亚洲成人在线网| 国产精品理论片在线观看| 亚洲网站视频| 午夜精品久久| 欧美福利小视频| 亚洲欧美国内爽妇网| 欧美成人tv| 在线电影国产精品| 久久久久久999| 欧美a级大片| 欧美一级黄色网| 欧美丝袜一区二区三区| 一区二区三区视频观看| 欧美激情精品久久久久久蜜臀| 亚洲精品国产精品国自产观看浪潮| 亚洲精品美女在线观看播放| 小黄鸭精品aⅴ导航网站入口| 国产伦精品一区二区| 一本到12不卡视频在线dvd| 欧美激情视频给我| 欧美成人免费播放| 一区二区国产精品| 亚洲视频在线免费观看| 国产精品高清在线| 性色av一区二区三区在线观看| 欧美一区二区大片| 亚洲国产成人精品久久| 欧美激情在线狂野欧美精品| 欧美日本韩国一区| 一区二区三区在线高清| 亚洲韩国青草视频| 午夜精品久久久久久久| 亚洲欧美影院| 亚洲三级性片| 欧美国产一区二区在线观看| 亚洲一区二区三区四区中文| 亚洲国产精品电影| 亚洲黄色影片| 亚洲国产婷婷综合在线精品 | 一区二区三区免费在线观看| 嫩模写真一区二区三区三州| 久久久精品国产免大香伊 | 欧美视频一区二区| 亚洲国产成人91精品| 最新国产乱人伦偷精品免费网站| 亚洲一区二区免费在线| 欧美日韩免费网站| 欧美激情亚洲激情| 亚洲精品美女久久久久| 亚洲国产日韩在线| 国产精品久久久久av| 久久综合五月| 亚洲一区二区三区777| 亚洲激情电影中文字幕| 性欧美精品高清| 国产精品九九久久久久久久| 又紧又大又爽精品一区二区| 亚洲一区二区在线视频| 亚洲黄色在线看| 欧美三级电影一区| 亚洲美女免费视频| 国产日韩亚洲欧美精品| 亚洲欧美第一页| 亚洲直播在线一区| 欧美一级大片在线观看| 欧美一区二区三区在线| 欧美吻胸吃奶大尺度电影| 久久免费视频网站| 91久久精品国产| 欧美福利电影网| 亚洲一区二区三区中文字幕| 亚洲一区二区三区四区中文| 国产一区二区三区丝袜| 欧美日韩1区2区| 亚洲国产精品ⅴa在线观看| 久久性色av| 久久精品国产亚洲aⅴ| 亚洲黄网站在线观看| 99在线精品视频| 国产亚洲激情视频在线| 国产精品天美传媒入口| 欧美激情视频免费观看| aa级大片欧美|