日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言实现寻找极值点,九之再续:教你一步一步用c语言实现sift算法、上

發(fā)布時(shí)間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言实现寻找极值点,九之再续:教你一步一步用c语言实现sift算法、上 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

教你一步一步用c語(yǔ)言實(shí)現(xiàn)sift算法、上

作者:July、二零一一年三月十二日

出處:http://blog.csdn.net/v_JULY_v

參考:Rob Hess維護(hù)的sift 庫(kù)

環(huán)境:windows xp+vc6.0

條件:c語(yǔ)言實(shí)現(xiàn)。

說(shuō)明:本BLOG內(nèi)會(huì)陸續(xù)一一實(shí)現(xiàn)所有經(jīng)典算法。

------------------------

引言:??? 在我寫(xiě)的關(guān)于sift算法的前倆篇文章里頭,已經(jīng)對(duì)sift算法有了初步的介紹:九、圖像特征提取與匹配之SIFT算法,而后在:九(續(xù))、sift算法的編譯與實(shí)現(xiàn)里,我也簡(jiǎn)單記錄下了如何利用opencv,gsl等庫(kù)編譯運(yùn)行sift程序。

但據(jù)一朋友表示,是否能用c語(yǔ)言實(shí)現(xiàn)sift算法,同時(shí),盡量不用到opencv,gsl等第三方庫(kù)之類的東西。而且,Rob Hess維護(hù)的sift 庫(kù),也不好懂,有的人根本搞不懂是怎么一回事。

那么本文,就教你如何利用c語(yǔ)言一步一步實(shí)現(xiàn)sift算法,同時(shí),你也就能真正明白sift算法到底是怎么一回事了。

ok,先看一下,本程序最終運(yùn)行的效果圖,sift 算法分為五個(gè)步驟(下文詳述),對(duì)應(yīng)以下第二--第六幅圖:

sift算法的步驟??? 要實(shí)現(xiàn)一個(gè)算法,首先要完全理解這個(gè)算法的原理或思想。咱們先來(lái)簡(jiǎn)單了解下,什么叫sift算法:

sift,尺度不變特征轉(zhuǎn)換,是一種電腦視覺(jué)的算法用來(lái)偵測(cè)與描述影像中的局部性特征,它在空間尺度中尋找極值點(diǎn),并提取出其位置、尺度、旋轉(zhuǎn)不變量,此算法由 David Lowe 在1999年所發(fā)表,2004年完善總結(jié)。

所謂,Sift算法就是用不同尺度(標(biāo)準(zhǔn)差)的高斯函數(shù)對(duì)圖像進(jìn)行平滑,然后比較平滑后圖像的差別,

差別大的像素就是特征明顯的點(diǎn)。

以下是sift算法的五個(gè)步驟:

一、建立圖像尺度空間(或高斯金字塔),并檢測(cè)極值點(diǎn)

首先建立尺度空間,要使得圖像具有尺度空間不變形,就要建立尺度空間,sift算法采用了高斯函數(shù)來(lái)建立尺度空間,高斯函數(shù)公式為:

G(x,y,e) = [1/2*pi*e^2] * exp[ -(x^2 + y^2)/2e^2]

上述公式G(x,y,e),即為尺度可變高斯函數(shù)。

而,一個(gè)圖像的尺度空間L(x,y,e) ,定義為原始圖像I(x,y)與上述的一個(gè)可變尺度的2維高斯函數(shù)G(x,y,e) 卷積運(yùn)算。

即,原始影像I(x,y)在不同的尺度e下,與高斯函數(shù)G(x,y,e)進(jìn)行卷積,得到L(x,y,e),如下:

L(x,y,e) = G(x,y,e)*I(x,y)

以上的(x,y)是空間坐標(biāo), e,是尺度坐標(biāo),或尺度空間因子,e的大小決定平滑程度,大尺度對(duì)應(yīng)圖像的概貌特征,小尺度對(duì)應(yīng)圖像的細(xì)節(jié)特征。大的e值對(duì)應(yīng)粗糙尺度(低分辨率),反之,對(duì)應(yīng)精細(xì)尺度(高分辨率)。

尺度,受e這個(gè)參數(shù)控制的表示。而不同的L(x,y,e)就構(gòu)成了尺度空間,具體計(jì)算的時(shí)候,即使連續(xù)的高斯函數(shù),都被離散為(一般為奇數(shù)大小)(2*k+1) *(2*k+1)矩陣,來(lái)和數(shù)字圖像進(jìn)行卷積運(yùn)算。

隨著e的變化,建立起不同的尺度空間,或稱之為建立起圖像的高斯金字塔。

但,像上述L(x,y,e) = G(x,y,e)*I(x,y)的操作,在進(jìn)行高斯卷積時(shí),整個(gè)圖像就要遍歷所有的像素進(jìn)行卷積(邊界點(diǎn)除外),于此,就造成了時(shí)間和空間上的很大浪費(fèi)。

為了更有效的在尺度空間檢測(cè)到穩(wěn)定的關(guān)鍵點(diǎn),也為了縮小時(shí)間和空間復(fù)雜度,對(duì)上述的操作作了一個(gè)改建:即,提出了高斯差分尺度空間(DOG scale-space)。利用不同尺度的高斯差分與原始圖像I(x,y)相乘 ,卷積生成。

D(x,y,e) = ((G(x,y,ke) - G(x,y,e)) * I(x,y)

= L(x,y,ke) - L(x,y,e)??? DOG算子計(jì)算簡(jiǎn)單,是尺度歸一化的LOG算子的近似。

ok,耐心點(diǎn),咱們?cè)賮?lái)總結(jié)一下上述內(nèi)容:

1、高斯卷積

在組建一組尺度空間后,再組建下一組尺度空間,對(duì)上一組尺度空間的最后一幅圖像進(jìn)行二分之一采樣,得到下一組尺度空間的第一幅圖像,然后進(jìn)行像建立第一組尺度空間那樣的操作,得到第二組尺度空間,公式定義為

L(x,y,e) = G(x,y,e)*I(x,y)

圖像金字塔的構(gòu)建:圖像金字塔共O組,每組有S層,下一組的圖像由上一組圖像降采樣得到,效果圖,圖A如下(左為上一組,右為下一組):

2、高斯差分

在尺度空間建立完畢后,為了能夠找到穩(wěn)定的關(guān)鍵點(diǎn),采用高斯差分的方法來(lái)檢測(cè)那些在局部位置的極值點(diǎn),即采用倆個(gè)相鄰的尺度中的圖像相減,即公式定義為:

D(x,y,e) = ((G(x,y,ke) - G(x,y,e)) * I(x,y)

= L(x,y,ke) - L(x,y,e)

效果圖,圖B:

SIFT的精妙之處在于采用圖像金字塔的方法解決這一問(wèn)題,我們可以把兩幅圖像想象成是連續(xù)的,分別以它們作為底面作四棱錐,就像金字塔,那么每一個(gè) 截面與原圖像相似,那么兩個(gè)金字塔中必然會(huì)有包含大小一致的物體的無(wú)窮個(gè)截面,但應(yīng)用只能是離散的,所以我們只能構(gòu)造有限層,層數(shù)越多當(dāng)然越好,但處理時(shí) 間會(huì)相應(yīng)增加,層數(shù)太少不行,因?yàn)橄蛳虏蓸拥慕孛嬷锌赡苷也坏匠叽绱笮∫恢碌膬蓚€(gè)物體的圖像。

咱們?cè)賮?lái)具體闡述下構(gòu)造D(x,y,e)的詳細(xì)步驟:??? 1、首先采用不同尺度因子的高斯核對(duì)圖像進(jìn)行卷積以得到圖像的不同尺度空間,將這一組圖像作為金子塔圖像的第一層。

2、接著對(duì)第一層圖像中的2倍尺度圖像(相對(duì)于該層第一幅圖像的2倍尺度)以2倍像素距離進(jìn)行下采樣來(lái)得到金子塔圖像的第二層中的第一幅圖像,對(duì)該圖像采用不同尺度因子的高斯核進(jìn)行卷積,以獲得金字塔圖像中第二層的一組圖像。

3、再以金字塔圖像中第二層中的2倍尺度圖像(相對(duì)于該層第一幅圖像的2倍尺度)以2倍像素距離進(jìn)行下采樣來(lái)得到金字塔圖像的第三層中的第一幅圖像,對(duì)該圖像采用不同尺度因子的高斯核進(jìn)行卷積,以獲得金字塔圖像中第三層的一組圖像。這樣依次類推,從而獲得了金字塔圖像的每一層中的一組圖像,如下圖所示:

4、對(duì)上圖得到的每一層相鄰的高斯圖像相減,就得到了高斯差分圖像,如下述第一幅圖所示。下述第二幅圖中的右列顯示了將每組中相鄰圖像相減所生成的高斯差分圖像的結(jié)果,限于篇幅,圖中只給出了第一層和第二層高斯差分圖像的計(jì)算(下述倆幅圖統(tǒng)稱為圖2):

5、因?yàn)楦咚共罘趾瘮?shù)是歸一化的高斯拉普拉斯函數(shù)的近似,所以可以從高斯差分金字塔分層結(jié)構(gòu)提取出圖像中的極值點(diǎn)作為候選的特征點(diǎn)。對(duì)DOG 尺度空間每個(gè)點(diǎn)與相鄰尺度和相鄰位置的點(diǎn)逐個(gè)進(jìn)行比較,得到的局部極值位置即為特征點(diǎn)所處的位置和對(duì)應(yīng)的尺度。

二、檢測(cè)關(guān)鍵點(diǎn)??? 為了尋找尺度空間的極值點(diǎn),每一個(gè)采樣點(diǎn)要和它所有的相鄰點(diǎn)比較,看其是否比它的圖像域和尺度域的相鄰點(diǎn)大或者小。如下圖,圖3所示,中間的檢測(cè)點(diǎn)和它同尺度的8個(gè)相鄰點(diǎn)和上下相鄰尺度對(duì)應(yīng)的9×2個(gè)點(diǎn)共26個(gè)點(diǎn)比較,以確保在尺度空間和二維圖像空間都檢測(cè)到極值點(diǎn)。

因?yàn)樾枰噜彸叨冗M(jìn)行比較,所以在一組高斯差分圖像中只能檢測(cè)到兩個(gè)尺度的極值點(diǎn)(如上述第二幅圖中右圖的五角星標(biāo)識(shí)),而其它尺度的極值點(diǎn)檢測(cè)則需要在圖像金字塔的上一層高斯差分圖像中進(jìn)行。依次類推,最終在圖像金字塔中不同層的高斯差分圖像中完成不同尺度極值的檢測(cè)。

當(dāng)然這樣產(chǎn)生的極值點(diǎn)并不都是穩(wěn)定的特征點(diǎn),因?yàn)槟承O值點(diǎn)響應(yīng)較弱,而且DOG算子會(huì)產(chǎn)生較強(qiáng)的邊緣響應(yīng)。

三、關(guān)鍵點(diǎn)方向的分配??? 為了使描述符具有旋轉(zhuǎn)不變性,需要利用圖像的局部特征為給每一個(gè)關(guān)鍵點(diǎn)分配一個(gè)方向。利用關(guān)鍵點(diǎn)鄰域像素的梯度及方向分布的特性,可以得到梯度模值和方向如下:

其中,尺度為每個(gè)關(guān)鍵點(diǎn)各自所在的尺度。

在以關(guān)鍵點(diǎn)為中心的鄰域窗口內(nèi)采樣,并用直方圖統(tǒng)計(jì)鄰域像素的梯度方向。梯度直方圖的范圍是0~360度,其中每10度一個(gè)方向,總共36個(gè)方向。

直方圖的峰值則代表了該關(guān)鍵點(diǎn)處鄰域梯度的主方向,即作為該關(guān)鍵點(diǎn)的方向。

在計(jì)算方向直方圖時(shí),需要用一個(gè)參數(shù)等于關(guān)鍵點(diǎn)所在尺度1.5倍的高斯權(quán)重窗對(duì)方向直方圖進(jìn)行加權(quán),上圖中用藍(lán)色的圓形表示,中心處的藍(lán)色較重,表示權(quán)值最大,邊緣處顏色潛,表示權(quán)值小。如下圖所示,該示例中為了簡(jiǎn)化給出了8方向的方向直方圖計(jì)算結(jié)果,實(shí)際sift創(chuàng)始人David Lowe的原論文中采用36方向的直方圖。

方向直方圖的峰值則代表了該特征點(diǎn)處鄰域梯度的方向,以直方圖中最大值作為該關(guān)鍵點(diǎn)的主方向。為了增強(qiáng)匹配的魯棒性,只保留峰值大于主方向峰值80%的方向作為該關(guān)鍵點(diǎn)的輔方向。因此,對(duì)于同一梯度值的多個(gè)峰值的關(guān)鍵點(diǎn)位置,在相同位置和尺度將會(huì)有多個(gè)關(guān)鍵點(diǎn)被創(chuàng)建但方向不同。僅有15%的關(guān)鍵點(diǎn)被賦予多個(gè)方向,但可以明顯的提高關(guān)鍵點(diǎn)匹配的穩(wěn)定性。

至此,圖像的關(guān)鍵點(diǎn)已檢測(cè)完畢,每個(gè)關(guān)鍵點(diǎn)有三個(gè)信息:位置、所處尺度、方向。由此可以確定一個(gè)SIFT特征區(qū)域。

四、特征點(diǎn)描述符??? 通過(guò)以上步驟,對(duì)于每一個(gè)關(guān)鍵點(diǎn),擁有三個(gè)信息:位置、尺度以及方向。接下來(lái)就是為每個(gè)關(guān)鍵點(diǎn)建立一個(gè)描述符,使其不隨各種變化而改變,比如光照變化、視角變化等等。并且描述符應(yīng)該有較高的獨(dú)特性,以便于提高特征點(diǎn)正確匹配的概率。

首先將坐標(biāo)軸旋轉(zhuǎn)為關(guān)鍵點(diǎn)的方向,以確保旋轉(zhuǎn)不變性。

接下來(lái)以關(guān)鍵點(diǎn)為中心取8×8的窗口。

上圖,圖5中左部分的中央黑點(diǎn)為當(dāng)前關(guān)鍵點(diǎn)的位置,每個(gè)小格代表關(guān)鍵點(diǎn)鄰域所在尺度空間的一個(gè)像素,箭頭方向代表該像素的梯度方向,箭頭長(zhǎng)度代表梯度模值,圖中藍(lán)色的圈代表高斯加權(quán)的范圍(越靠近關(guān)鍵點(diǎn)的像素梯度方向信息貢獻(xiàn)越大)。

然后在每4×4的小塊上計(jì)算8個(gè)方向的梯度方向直方圖,繪制每個(gè)梯度方向的累加值,即可形成一個(gè)種子點(diǎn),如圖5右部分所示。此圖中一個(gè)關(guān)鍵點(diǎn)由2×2共4個(gè)種子點(diǎn)組成,每個(gè)種子點(diǎn)有8個(gè)方向向量信息。這種鄰域方向性信息聯(lián)合的思想增強(qiáng)了算法抗噪聲的能力,同時(shí)對(duì)于含有定位誤差的特征匹配也提供了較好的容錯(cuò)性。

實(shí)際計(jì)算過(guò)程中,為了增強(qiáng)匹配的穩(wěn)健性,Lowe建議對(duì)每個(gè)關(guān)鍵點(diǎn)使用4×4共16個(gè)種子點(diǎn)來(lái)描述,這樣對(duì)于一個(gè)關(guān)鍵點(diǎn)就可以產(chǎn)生128個(gè)數(shù)據(jù),即最終形成128維的SIFT特征向量。此時(shí)SIFT特征向量已經(jīng)去除了尺度變化、旋轉(zhuǎn)等幾何變形因素的影響,再繼續(xù)將特征向量的長(zhǎng)度歸一化,則可以進(jìn)一步去除光照變化的影響。

五、最后一步:當(dāng)兩幅圖像的SIFT特征向量生成后,下一步我們采用關(guān)鍵點(diǎn)特征向量的歐式距離來(lái)作為兩幅圖像中關(guān)鍵點(diǎn)的相似性判定度量。取上圖中,圖像A中的某個(gè)關(guān)鍵點(diǎn),并找出其與圖像B中歐式距離最近的前兩個(gè)關(guān)鍵點(diǎn),在這兩個(gè)關(guān)鍵點(diǎn)中,如果最近的距離除以次近的距離少于某個(gè)比例閾值,則接受這一對(duì)匹配點(diǎn)。降低這個(gè)比例閾值,SIFT匹配點(diǎn)數(shù)目會(huì)減少,但更加穩(wěn)定。

sift算法的逐步c實(shí)現(xiàn)??? ok,上文攪了那么多的理論,如果你沒(méi)有看懂它,咋辦列?沒(méi)關(guān)系,下面,咱們來(lái)一步一步實(shí)現(xiàn)此sift算法,即使你沒(méi)有看到上述的理論,慢慢的,你也會(huì)明白sift算法到底是怎么一回事,sift算法到底是怎么實(shí)現(xiàn)的...。

yeah,請(qǐng)看:

前期工作:在具體編寫(xiě)核心函數(shù)之前,得先做幾個(gè)前期的準(zhǔn)備工作:

0、頭文件:

#ifdef?_CH_

#pragma?package?

#endif

#ifndef?_EiC

#include?

#include?"stdlib.h"

#include?"string.h"

#include?"malloc.h"

#include?"math.h"

#include?

#include?

#include?

#include?

#include?

#include?

#include?

#endif

#ifdef?_EiC

#define?WIN32

#endif

1、定義幾個(gè)宏,及變量,以免下文函數(shù)中,突然冒出一個(gè)變量,而您卻不知道怎么一回事:

#define?NUMSIZE?2

#define?GAUSSKERN?3.5

#define?PI?3.14159265358979323846

//Sigma?of?base?image?--?See?D.L.'s?paper.

#define?INITSIGMA?0.5

//Sigma?of?each?octave?--?See?D.L.'s?paper.

#define?SIGMA?sqrt(3)//1.6//

//Number?of?scales?per?octave.??See?D.L.'s?paper.

#define?SCALESPEROCTAVE?2

#define?MAXOCTAVES?4

intnumoctaves;

#define?CONTRAST_THRESHOLD???0.02

#define?CURVATURE_THRESHOLD??10.0

#define?DOUBLE_BASE_IMAGE_SIZE?1

#define?peakRelThresh?0.8

#define?LEN?128

//?temporary?storage

CvMemStorage*?storage?=?0;

2、然后,咱們還得,聲明幾個(gè)變量,以及建幾個(gè)數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)是一切程序事物的基礎(chǔ)麻,:D。):

//Data?structure?for?a?float?image.

typedefstructImageSt?{/*金字塔每一層*/

floatlevelsigma;

intlevelsigmalength;

floatabsolute_sigma;

CvMat?*Level;//CvMat是OPENCV的矩陣類,其元素可以是圖像的象素值

}?ImageLevels;

typedefstructImageSt1?{/*金字塔每一階梯*/

introw,?col;//Dimensions?of?image.

floatsubsample;

ImageLevels?*Octave;

}?ImageOctaves;

ImageOctaves?*DOGoctaves;

//DOG?pyr,DOG算子計(jì)算簡(jiǎn)單,是尺度歸一化的LoG算子的近似。

ImageOctaves?*mag_thresh?;

ImageOctaves?*mag_pyr?;

ImageOctaves?*grad_pyr?;

//keypoint數(shù)據(jù)結(jié)構(gòu),Lists?of?keypoints?are?linked?by?the?"next"?field.

typedefstructKeypointSt

{

floatrow,?col;/*?反饋回原圖像大小,特征點(diǎn)的位置?*/

floatsx,sy;/*?金字塔中特征點(diǎn)的位置*/

intoctave,level;/*金字塔中,特征點(diǎn)所在的階梯、層次*/

floatscale,?ori,mag;/*所在層的尺度sigma,主方向orientation?(range?[-PI,PI]),以及幅值*/

float*descrip;/*特征描述字指針:128維或32維等*/

structKeypointSt?*next;/*?Pointer?to?next?keypoint?in?list.?*/

}?*Keypoint;

//定義特征點(diǎn)具體變量

Keypoint?keypoints=NULL;//用于臨時(shí)存儲(chǔ)特征點(diǎn)的位置等

Keypoint?keyDescriptors=NULL;//用于最后的確定特征點(diǎn)以及特征描述字

3、聲明幾個(gè)圖像的基本處理函數(shù):

圖像處理基本函數(shù),其實(shí)也可以用OPENCV的函數(shù)代替,但本文,咱們選擇了用c語(yǔ)言實(shí)現(xiàn),盡量不用第三方庫(kù)的東西,所以,還得自己編寫(xiě)這些函數(shù):

CvMat?*?halfSizeImage(CvMat?*?im);//縮小圖像:下采樣

CvMat?*?doubleSizeImage(CvMat?*?im);//擴(kuò)大圖像:最近臨方法

CvMat?*?doubleSizeImage2(CvMat?*?im);//擴(kuò)大圖像:線性插值

floatgetPixelBI(CvMat?*?im,floatcol,floatrow);//雙線性插值函數(shù)

voidnormalizeVec(float*?vec,intdim);//向量歸一化

CvMat*?GaussianKernel2D(floatsigma);//得到2維高斯核

voidnormalizeMat(CvMat*?mat)?;//矩陣歸一化

float*?GaussianKernel1D(floatsigma,intdim)?;//得到1維高斯核

//在具體像素處寬度方向進(jìn)行高斯卷積

floatConvolveLocWidth(float*?kernel,intdim,?CvMat?*?src,intx,inty)?;

//在整個(gè)圖像寬度方向進(jìn)行1D高斯卷積

voidConvolve1DWidth(float*?kern,intdim,?CvMat?*?src,?CvMat?*?dst)?;

//在具體像素處高度方向進(jìn)行高斯卷積

floatConvolveLocHeight(float*?kernel,intdim,?CvMat?*?src,intx,inty)?;

//在整個(gè)圖像高度方向進(jìn)行1D高斯卷積

voidConvolve1DHeight(float*?kern,intdim,?CvMat?*?src,?CvMat?*?dst);

//用高斯函數(shù)模糊圖像

intBlurImage(CvMat?*?src,?CvMat?*?dst,floatsigma)?;

算法核心?? 本程序中,sift算法被分為以下五個(gè)步驟及其相對(duì)應(yīng)的函數(shù)(可能表述與上,或與前倆篇文章有所偏差,但都一個(gè)意思):

//SIFT算法第一步:圖像預(yù)處理

CvMat?*ScaleInitImage(CvMat?*?im)?;//金字塔初始化

//SIFT算法第二步:建立高斯金字塔函數(shù)

ImageOctaves*?BuildGaussianOctaves(CvMat?*?image)?;//建立高斯金字塔

//SIFT算法第三步:特征點(diǎn)位置檢測(cè),最后確定特征點(diǎn)的位置

intDetectKeypoint(intnumoctaves,?ImageOctaves?*GaussianPyr);

voidDisplayKeypointLocation(IplImage*?image,?ImageOctaves?*GaussianPyr);

//SIFT算法第四步:計(jì)算高斯圖像的梯度方向和幅值,計(jì)算各個(gè)特征點(diǎn)的主方向

voidComputeGrad_DirecandMag(intnumoctaves,?ImageOctaves?*GaussianPyr);

intFindClosestRotationBin?(intbinCount,floatangle);//進(jìn)行方向直方圖統(tǒng)計(jì)

voidAverageWeakBins?(double*?bins,intbinCount);//對(duì)方向直方圖濾波

//確定真正的主方向

boolInterpolateOrientation?(doubleleft,doublemiddle,doubleright,double*degreeCorrection,double*peakValue);

//確定各個(gè)特征點(diǎn)處的主方向函數(shù)

voidAssignTheMainOrientation(intnumoctaves,?ImageOctaves?*GaussianPyr,ImageOctaves?*mag_pyr,ImageOctaves?*grad_pyr);

//顯示主方向

voidDisplayOrientation?(IplImage*?image,?ImageOctaves?*GaussianPyr);

//SIFT算法第五步:抽取各個(gè)特征點(diǎn)處的特征描述字

voidExtractFeatureDescriptors(intnumoctaves,?ImageOctaves?*GaussianPyr);

//為了顯示圖象金字塔,而作的圖像水平、垂直拼接

CvMat*?MosaicHorizen(?CvMat*?im1,?CvMat*?im2?);

CvMat*?MosaicVertical(?CvMat*?im1,?CvMat*?im2?);

//特征描述點(diǎn),網(wǎng)格

#define?GridSpacing?4

主體實(shí)現(xiàn)??? ok,以上所有的工作都就緒以后,那么接下來(lái),咱們就先來(lái)編寫(xiě)main函數(shù),因?yàn)槟阋豢粗骱瘮?shù)之后,你就立馬能發(fā)現(xiàn)sift算法的工作流程及其原理了。

(主函數(shù)中涉及到的函數(shù),下一篇文章:一、教你一步一步用c語(yǔ)言實(shí)現(xiàn)sift算法、下,咱們自會(huì)一個(gè)一個(gè)編寫(xiě)):

intmain(void)

{

//聲明當(dāng)前幀IplImage指針

IplImage*?src?=?NULL;

IplImage*?image1?=?NULL;

IplImage*?grey_im1?=?NULL;

IplImage*?DoubleSizeImage?=?NULL;

IplImage*?mosaic1?=?NULL;

IplImage*?mosaic2?=?NULL;

CvMat*?mosaicHorizen1?=?NULL;

CvMat*?mosaicHorizen2?=?NULL;

CvMat*?mosaicVertical1?=?NULL;

CvMat*?image1Mat?=?NULL;

CvMat*?tempMat=NULL;

ImageOctaves?*Gaussianpyr;

introws,cols;

#define?Im1Mat(ROW,COL)?((float?*)(image1Mat->data.fl?+?image1Mat->step/sizeof(float)?*(ROW)))[(COL)]

//灰度圖象像素的數(shù)據(jù)結(jié)構(gòu)

#define?Im1B(ROW,COL)?((uchar*)(image1->imageData?+?image1->widthStep*(ROW)))[(COL)*3]

#define?Im1G(ROW,COL)?((uchar*)(image1->imageData?+?image1->widthStep*(ROW)))[(COL)*3+1]

#define?Im1R(ROW,COL)?((uchar*)(image1->imageData?+?image1->widthStep*(ROW)))[(COL)*3+2]

storage?=?cvCreateMemStorage(0);

//讀取圖片

if(?(src?=?cvLoadImage("street1.jpg",?1))?==?0?)//?test1.jpg?einstein.pgm?back1.bmp

return-1;

//為圖像分配內(nèi)存

image1?=?cvCreateImage(cvSize(src->width,?src->height),??IPL_DEPTH_8U,3);

grey_im1?=?cvCreateImage(cvSize(src->width,?src->height),??IPL_DEPTH_8U,1);

DoubleSizeImage?=?cvCreateImage(cvSize(2*(src->width),?2*(src->height)),??IPL_DEPTH_8U,3);

//為圖像陣列分配內(nèi)存,假設(shè)兩幅圖像的大小相同,tempMat跟隨image1的大小

image1Mat?=?cvCreateMat(src->height,?src->width,?CV_32FC1);

//轉(zhuǎn)化成單通道圖像再處理

cvCvtColor(src,?grey_im1,?CV_BGR2GRAY);

//轉(zhuǎn)換進(jìn)入Mat數(shù)據(jù)結(jié)構(gòu),圖像操作使用的是浮點(diǎn)型操作

cvConvert(grey_im1,?image1Mat);

doublet?=?(double)cvGetTickCount();

//圖像歸一化

cvConvertScale(?image1Mat,?image1Mat,?1.0/255,?0?);

intdim?=?min(image1Mat->rows,?image1Mat->cols);

numoctaves?=?(int)?(log((double)?dim)?/?log(2.0))?-?2;//金字塔階數(shù)

numoctaves?=?min(numoctaves,?MAXOCTAVES);

//SIFT算法第一步,預(yù)濾波除噪聲,建立金字塔底層

tempMat?=?ScaleInitImage(image1Mat)?;

//SIFT算法第二步,建立Guassian金字塔和DOG金字塔

Gaussianpyr?=?BuildGaussianOctaves(tempMat)?;

t?=?(double)cvGetTickCount()?-?t;

printf("the?time?of?build?Gaussian?pyramid?and?DOG?pyramid?is?%.1f/n",?t/(cvGetTickFrequency()*1000.)?);

#define?ImLevels(OCTAVE,LEVEL,ROW,COL)?((float?*)(Gaussianpyr[(OCTAVE)].Octave[(LEVEL)].Level->data.fl?+?Gaussianpyr[(OCTAVE)].Octave[(LEVEL)].Level->step/sizeof(float)?*(ROW)))[(COL)]

//顯示高斯金字塔

for(inti=0;?i

{

if(i==0)

{

mosaicHorizen1=MosaicHorizen(?(Gaussianpyr[0].Octave)[0].Level,?(Gaussianpyr[0].Octave)[1].Level?);

for(intj=2;j

mosaicHorizen1=MosaicHorizen(?mosaicHorizen1,?(Gaussianpyr[0].Octave)[j].Level?);

for(?j=0;j

mosaicHorizen1=halfSizeImage(mosaicHorizen1);

}

elseif(i==1)

{

mosaicHorizen2=MosaicHorizen(?(Gaussianpyr[1].Octave)[0].Level,?(Gaussianpyr[1].Octave)[1].Level?);

for(intj=2;j

mosaicHorizen2=MosaicHorizen(?mosaicHorizen2,?(Gaussianpyr[1].Octave)[j].Level?);

for(?j=0;j

mosaicHorizen2=halfSizeImage(mosaicHorizen2);

mosaicVertical1=MosaicVertical(?mosaicHorizen1,?mosaicHorizen2?);

}

else

{

mosaicHorizen1=MosaicHorizen(?(Gaussianpyr[i].Octave)[0].Level,?(Gaussianpyr[i].Octave)[1].Level?);

for(intj=2;j

mosaicHorizen1=MosaicHorizen(?mosaicHorizen1,?(Gaussianpyr[i].Octave)[j].Level?);

for(?j=0;j

mosaicHorizen1=halfSizeImage(mosaicHorizen1);

mosaicVertical1=MosaicVertical(?mosaicVertical1,?mosaicHorizen1?);

}

}

mosaic1?=?cvCreateImage(cvSize(mosaicVertical1->width,?mosaicVertical1->height),??IPL_DEPTH_8U,1);

cvConvertScale(?mosaicVertical1,?mosaicVertical1,?255.0,?0?);

cvConvertScaleAbs(?mosaicVertical1,?mosaic1,?1,?0?);

//??cvSaveImage("GaussianPyramid?of?me.jpg",mosaic1);

cvNamedWindow("mosaic1",1);

cvShowImage("mosaic1",?mosaic1);

cvWaitKey(0);

cvDestroyWindow("mosaic1");

//顯示DOG金字塔

for(?i=0;?i

{

if(i==0)

{

mosaicHorizen1=MosaicHorizen(?(DOGoctaves[0].Octave)[0].Level,?(DOGoctaves[0].Octave)[1].Level?);

for(intj=2;j

mosaicHorizen1=MosaicHorizen(?mosaicHorizen1,?(DOGoctaves[0].Octave)[j].Level?);

for(?j=0;j

mosaicHorizen1=halfSizeImage(mosaicHorizen1);

}

elseif(i==1)

{

mosaicHorizen2=MosaicHorizen(?(DOGoctaves[1].Octave)[0].Level,?(DOGoctaves[1].Octave)[1].Level?);

for(intj=2;j

mosaicHorizen2=MosaicHorizen(?mosaicHorizen2,?(DOGoctaves[1].Octave)[j].Level?);

for(?j=0;j

mosaicHorizen2=halfSizeImage(mosaicHorizen2);

mosaicVertical1=MosaicVertical(?mosaicHorizen1,?mosaicHorizen2?);

}

else

{

mosaicHorizen1=MosaicHorizen(?(DOGoctaves[i].Octave)[0].Level,?(DOGoctaves[i].Octave)[1].Level?);

for(intj=2;j

mosaicHorizen1=MosaicHorizen(?mosaicHorizen1,?(DOGoctaves[i].Octave)[j].Level?);

for(?j=0;j

mosaicHorizen1=halfSizeImage(mosaicHorizen1);

mosaicVertical1=MosaicVertical(?mosaicVertical1,?mosaicHorizen1?);

}

}

//考慮到DOG金字塔各層圖像都會(huì)有正負(fù),所以,必須尋找最負(fù)的,以將所有圖像抬高一個(gè)臺(tái)階去顯示

doublemin_val=0;

doublemax_val=0;

cvMinMaxLoc(?mosaicVertical1,?&min_val,?&max_val,NULL,?NULL,?NULL?);

if(?min_val<0.0?)

cvAddS(?mosaicVertical1,?cvScalarAll(?(-1.0)*min_val?),?mosaicVertical1,?NULL?);

mosaic2?=?cvCreateImage(cvSize(mosaicVertical1->width,?mosaicVertical1->height),??IPL_DEPTH_8U,1);

cvConvertScale(?mosaicVertical1,?mosaicVertical1,?255.0/(max_val-min_val),?0?);

cvConvertScaleAbs(?mosaicVertical1,?mosaic2,?1,?0?);

//??cvSaveImage("DOGPyramid?of?me.jpg",mosaic2);

cvNamedWindow("mosaic1",1);

cvShowImage("mosaic1",?mosaic2);

cvWaitKey(0);

//SIFT算法第三步:特征點(diǎn)位置檢測(cè),最后確定特征點(diǎn)的位置

intkeycount=DetectKeypoint(numoctaves,?Gaussianpyr);

printf("the?keypoints?number?are?%d?;/n",?keycount);

cvCopy(src,image1,NULL);

DisplayKeypointLocation(?image1?,Gaussianpyr);

cvPyrUp(?image1,?DoubleSizeImage,?CV_GAUSSIAN_5x5?);

cvNamedWindow("image1",1);

cvShowImage("image1",?DoubleSizeImage);

cvWaitKey(0);

cvDestroyWindow("image1");

//SIFT算法第四步:計(jì)算高斯圖像的梯度方向和幅值,計(jì)算各個(gè)特征點(diǎn)的主方向

ComputeGrad_DirecandMag(numoctaves,?Gaussianpyr);

AssignTheMainOrientation(?numoctaves,?Gaussianpyr,mag_pyr,grad_pyr);

cvCopy(src,image1,NULL);

DisplayOrientation?(?image1,?Gaussianpyr);

//??cvPyrUp(?image1,?DoubleSizeImage,?CV_GAUSSIAN_5x5?);

cvNamedWindow("image1",1);

//??cvResizeWindow("image1",?2*(image1->width),?2*(image1->height)?);

cvShowImage("image1",?image1);

cvWaitKey(0);

//SIFT算法第五步:抽取各個(gè)特征點(diǎn)處的特征描述字

ExtractFeatureDescriptors(?numoctaves,?Gaussianpyr);

cvWaitKey(0);

//銷毀窗口

cvDestroyWindow("image1");

cvDestroyWindow("mosaic1");

//釋放圖像

cvReleaseImage(&image1);

cvReleaseImage(&grey_im1);

cvReleaseImage(&mosaic1);

cvReleaseImage(&mosaic2);

return0;

}

總結(jié)

以上是生活随笔為你收集整理的C语言实现寻找极值点,九之再续:教你一步一步用c语言实现sift算法、上的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

精品国产观看 | 91精品麻豆 | 久久首页 | 色播五月婷婷 | 香蕉在线观看视频 | 在线观看91网站 | jizz欧美性9 国产一区高清在线观看 | 日韩精品不卡 | 午夜精品久久久久久久久久久久 | www.五月天色 | 五月天亚洲综合 | 国产视频在线观看一区 | 欧美一级片免费播放 | 久久午夜免费视频 | 99久久精品国产亚洲 | 在线观看黄色的网站 | 韩国精品在线观看 | 91大神精品视频在线观看 | 日韩一区二区三区免费电影 | 婷婷中文字幕综合 | 久久久久久毛片 | 国产二区视频在线观看 | 成人黄色小视频 | 国产精品一区二区三区在线 | 亚洲v欧美v国产v在线观看 | 九九九视频精品 | 在线播放av网址 | 亚洲狠狠婷婷综合久久久 | 国产一卡二卡四卡国 | 欧美日韩国产精品一区二区三区 | 婷婷综合网 | 日本婷婷色| 国产精品人人做人人爽人人添 | 久久少妇免费视频 | 久久久久久久网站 | 国产精品久久久久影院日本 | 久久99国产精品久久99 | 丁香六月在线观看 | 国产精品久久久久久久久久东京 | 天天爽夜夜爽精品视频婷婷 | 日本中文字幕免费观看 | 日韩中文字幕网站 | 欧美日韩国产精品一区二区三区 | 色综合天天色综合 | 国产不卡av在线播放 | 久草免费手机视频 | 丁香婷婷在线观看 | 日日操狠狠干 | 日韩精品中文字幕一区二区 | 91午夜精品| 亚州av一区 | 伊人婷婷| 久久久香蕉视频 | 伊人看片| 四虎天堂 | 国产丝袜制服在线 | 精品一区精品二区 | 国产精品视频999 | 亚洲黄色精品 | 在线观看免费一级片 | 五月天激情综合 | 热久久免费国产视频 | 免费视频网 | 国产免费大片 | 很黄很色很污的网站 | 色婷婷婷 | 手机看片99| 91久久影院| 国产精品一区二区三区在线 | 亚洲精品视频大全 | 中文在线免费观看 | 久草久 | 91成人免费在线视频 | 欧美午夜理伦三级在线观看 | 久久手机在线视频 | 久久视频精品在线观看 | 国产一级二级三级视频 | 丁香婷婷综合五月 | 中文字幕在线视频一区二区三区 | 天天爱天天色 | 国产裸体视频bbbbb | 五月婷婷丁香 | 国产群p视频 | 最近日本mv字幕免费观看 | 国产精品成人在线 | 99精品视频精品精品视频 | 99久久久国产精品免费观看 | 久久国产美女视频 | 中文在线中文a | 精品久久久久久久 | 国产免码va在线观看免费 | 99视频99 | 在线观看视频97 | wwwwww色 | 国产精品色 | 亚洲午夜久久久久 | 久久久99精品免费观看app | 久久另类小说 | a电影在线观看 | 视频国产精品 | 欧美日韩国产精品爽爽 | 国产精品美女久久久久久久 | 欧美性免费 | 国产又黄又硬又爽 | 国产a级免费 | 欧美精品在线观看 | 91成人短视频在线观看 | 国产99久久久国产精品成人免费 | 日韩成人精品在线观看 | 色婷婷狠狠18 | 99激情网| 区一区二区三区中文字幕 | 午夜三级影院 | 97精品视频在线播放 | 亚洲日本黄色 | 欧美日韩久久一区 | 伊人久久在线观看 | 日韩av福利在线 | 黄色小视频在线观看免费 | 午夜精品一区二区三区在线视频 | 国产黄色免费电影 | 91av久久| 亚洲天天看 | 一本一本久久aa综合精品 | 国产精品九九久久99视频 | 国产精品麻 | 一区二区三区免费播放 | 免费在线国产 | 色婷婷激情电影 | 色婷婷啪啪免费在线电影观看 | 色干综合 | 中文日韩在线 | 四虎永久网站 | 天天操夜夜逼 | 亚洲欧洲精品一区 | 国产精品手机在线 | 天天透天天插 | 在线色视频小说 | 亚洲高清久久久 | 97超碰在线人人 | 美女视频是黄的免费观看 | 精品一二三区 | 五月天婷婷免费视频 | 久久久久久久久久久久久久av | 久久久久国产精品厨房 | 国产高清在线免费视频 | 福利片视频区 | 黄色小说网站在线 | 久久黄色精品视频 | 99tvdz@gmail.com | 亚洲人成免费网站 | 在线观看国产高清视频 | 正在播放国产精品 | 亚洲精品综合一区二区 | 天天激情综合 | av中文电影 | 五月天久久久久久 | 日韩在线短视频 | 成人午夜电影在线观看 | 99久久精品久久亚洲精品 | 西西444www | www.久久久com | 日韩激情网 | 国产一区免费观看 | 在线观看免费观看在线91 | 日日夜操| 岛国av在线 | 五月天婷亚洲天综合网精品偷 | 久久久精品欧美 | 国产精品久久久久久久久免费 | 操操操影院 | 国产精品久久久久一区二区三区共 | 黄视频网站大全 | 中文字幕在线观看的网站 | 激情在线免费视频 | 国产成人精品一区二区在线观看 | 久久大视频 | 一本一道波多野毛片中文在线 | 午夜男人影院 | 91 在线视频| 天天干天天色2020 | 成人app在线免费观看 | 久久精品中文字幕一区二区三区 | 久久色视频 | www.com操| 超碰成人网 | 国产精品第一页在线观看 | 欧美一区二区免费在线观看 | 97网在线观看 | 久久久久伦理电影 | 欧美激情h| 91亚洲狠狠婷婷综合久久久 | 亚洲日本在线视频观看 | 五月婷婷丁香六月 | 久草网站 | 欧洲不卡av | 亚洲美女在线一区 | 色视频在线观看免费 | 日韩在线观看电影 | 日韩av一区二区三区四区 | 91久久人澡人人添人人爽欧美 | 成人国产一区二区 | 成人黄色电影免费观看 | japanese黑人亚洲人4k | 国产精品videossex国产高清 | 伊香蕉大综综综合久久啪 | 久草在线视频免赞 | 日本久久久久久 | 麻豆影视在线观看 | 欧美国产精品久久久久久免费 | 欧美激情片在线观看 | 日韩理论电影在线观看 | 国产麻豆精品一区 | 成人动漫一区二区 | 亚洲精品中文字幕视频 | 婷婷在线免费观看 | aaa毛片视频 | 欧美伦理电影一区二区 | 久久开心激情 | 中文在线免费一区三区 | 亚洲专区视频在线观看 | 亚洲国产精品电影 | 亚洲精品18日本一区app | 狠狠操夜夜 | 视频国产 | 最近中文字幕大全中文字幕免费 | 久久久精品 一区二区三区 国产99视频在线观看 | 黄p网站在线观看 | www.99在线观看| 久久任你操 | 国产无限资源在线观看 | 免费色视频网址 | 91av免费在线观看 | 国产视频色 | 91九色porn在线资源 | 久草网在线 | 久久狠狠干 | 一区二区三区四区五区在线 | 日韩精品免费一区二区三区 | 91成人精品一区在线播放 | 五月激情六月丁香 | 日韩精品中文字幕在线不卡尤物 | 成人9ⅰ免费影视网站 | 亚洲国产丝袜在线观看 | 午夜久久电影网 | 久久综合久久久 | 免费看国产精品 | 国产一性一爱一乱一交 | 在线免费视频 你懂得 | 国产免费一区二区三区最新 | www.com黄色| 美女国内精品自产拍在线播放 | 一区二区三区动漫 | 成人a级大片 | 91麻豆视频网站 | 91在线精品观看 | 午夜精品久久久久久久久久久 | 久久久久久久免费观看 | 黄色国产高清 | 久久99国产精品久久 | 免费高清在线观看电视网站 | 天天操天天操天天操 | www激情网 | 国产精品一区二区麻豆 | 亚州av免费 | 特黄特色特刺激视频免费播放 | 国产资源中文字幕 | 97人人澡人人添人人爽超碰 | 99精品视频免费观看 | 久久九九影视 | 在线观看视频一区二区 | 国产精品永久 | 在线免费av网| 深爱激情亚洲 | 在线电影 你懂得 | 色综合久久久久 | 久久人操 | www.狠狠干 | 成人毛片一区二区三区 | 激情综合五月婷婷 | 99精品国产兔费观看久久99 | 精品在线视频一区二区三区 | 欧美久久久久久久久 | 九九久久久久久久久激情 | 91久久电影 | 亚洲情感电影大片 | 五月婷婷丁香激情 | 亚洲天天草 | 国产精品精品视频 | 久久人人爽人人爽人人片 | 深爱婷婷久久综合 | 中文字幕高清 | 国产精品久久久久久久久久东京 | 日韩免费久久 | 韩日电影在线观看 | 亚洲 欧美变态 另类 综合 | www日韩视频 | 欧美韩国日本在线观看 | 18国产精品福利片久久婷 | 国产一区二区三区在线 | 久草在线免费看视频 | 午夜体验区 | 国产成人一二片 | 欧美黄在线 | 91私密视频 | 天堂av在线7 | 911国产| 久久在草 | 91香蕉视频好色先生 | 久久专区| 亚洲国产精品va在线看黑人动漫 | 91av在线免费播放 | 91九色蝌蚪视频网站 | 天天躁天天操 | 国内精品久久久久久久久久久 | 国产另类av| 丁香六月久久综合狠狠色 | 国产黄色视 | 波多野结衣动态图 | 国产999精品久久久久久麻豆 | 亚洲aⅴ乱码精品成人区 | 国产不卡免费 | 欧美精品在线视频 | 久久人人添人人爽添人人88v | 日韩在线视频在线观看 | 国产午夜精品一区二区三区四区 | 99久久精品网 | 精品视频123区在线观看 | 久草在线中文888 | 麻豆国产网站 | 丝袜美腿av | 日韩免费福利 | 伊人午夜 | 国产成人高清av | 人人插人人插 | 伊人激情综合 | 又黄又爽的视频在线观看网站 | 高清日韩一区二区 | 久久综合九色综合网站 | 99热精品免费观看 | 国产欧美最新羞羞视频在线观看 | 日韩精品久久久免费观看夜色 | 国产精彩视频 | 亚洲国产无 | 久久中文网 | 中文字幕之中文字幕 | 黄色片免费在线 | 国产精品 日本 | 久久成人国产精品一区二区 | 狠狠操.com | 热99在线 | 婷婷激情久久 | 97av视频| 波多野结衣一区三区 | 久久久久久久久爱 | 国产日韩欧美在线一区 | 亚洲国产精品激情在线观看 | 国产精品一区免费观看 | 中文字幕免费一区二区 | 亚洲国产午夜精品 | 日韩视频免费在线 | 久草在线综合网 | 黄色一级大片在线免费看产 | 久久久久久久久毛片精品 | 97超在线 | 中文字幕中文字幕在线中文字幕三区 | 日韩视频一二三区 | av在线电影网站 | 久久成人国产精品 | av超碰在线观看 | 99久久日韩精品免费热麻豆美女 | 天天爽天天摸 | 久久精品国产亚洲精品2020 | 国产精品久久久久久久久大全 | 四虎影视www | 色综合久久久久综合体 | 欧美日韩视频在线一区 | 黄色www| 中文字幕亚洲不卡 | 日韩免费电影一区二区 | 99国产精品视频免费观看一公开 | 黄a在线看| 91精品国产欧美一区二区 | 久久九九九九 | 国产资源免费 | 亚洲成人av在线电影 | 国产精品欧美精品 | 美女国产 | 99视频精品全部免费 在线 | 一区二区精品视频 | 不卡视频在线 | 精品久久久久久综合 | 色视频在线 | 久久综合久久综合久久综合 | 天天操天天色天天射 | 天天摸天天弄 | 在线免费黄 | 国产视频在线一区二区 | 中文字幕在线日 | 欧美一级性生活 | 久久久久女人精品毛片九一 | 看片的网址 | 98福利在线| 91九色蝌蚪视频在线 | 欧美性成人 | 九九天堂| 在线看片中文字幕 | 日本少妇视频 | 国产一级在线播放 | 国内精品久久久久久久 | 国产精品久久久久永久免费观看 | 人人精品 | 久久久久久久久久电影 | 香蕉视频18 | 色丁香久久 | 久久久久99精品国产片 | 久久高清免费视频 | 久久综合五月婷婷 | 一本一本久久a久久精品牛牛影视 | 久久久精品久久 | 国产小视频在线观看免费 | 超碰av在线免费观看 | 国产成人久久久77777 | 中文字幕 二区 | 在线观看韩国av | 欧美日韩不卡在线视频 | 日韩精品国产一区 | 在线观看av片 | 亚洲一级免费观看 | 亚洲综合视频在线观看 | 国产专区在线看 | 最近中文字幕在线中文高清版 | 久久免费美女视频 | 在线精品一区二区 | 成人黄色大片网站 | 久久的色 | 国产精品久久久久久久久久久免费 | 国产精品麻豆欧美日韩ww | 亚洲专区路线二 | 国产精品日韩 | 在线免费三级 | 日韩在线观看网址 | 国产精品国产三级国产不产一地 | 成人黄色小说网 | 激情网色| 91在线中字 | 天天操操 | 免费久草视频 | 久久99国产精品久久99 | 91中文字幕| 亚洲精品网址在线观看 | 精品xxx | 97国产精品一区二区 | 日韩网站在线 | 久久精品99国产 | 人人干人人模 | 中文字幕在线看视频 | 日韩中文字幕视频在线观看 | 久久精品最新 | 玖操| 97人人澡人人爽人人模亚洲 | 久久久久免费精品国产 | 色欧美成人精品a∨在线观看 | 国产九色91 | 亚洲一级片av | 亚洲国产999 | 久久久久观看 | 亚洲涩涩网| 99视频在线免费播放 | 国产精品久久久一区二区三区网站 | 欧美日韩国产在线 | 最新av免费在线观看 | 国产精品24小时在线观看 | 96国产在线| 久久激情视频网 | 亚洲成人黄色网址 | 97在线观看免费 | 一区二区三区四区五区在线 | 一级欧美一级日韩 | 久久99久国产精品黄毛片入口 | 91av短视频 | 久久99久久99精品中文字幕 | 久久免费精品国产 | 黄色av电影一级片 | 国产a免费| 视频在线观看亚洲 | 精品久久网 | 国产淫片免费看 | 国产午夜剧场 | 中文字幕之中文字幕 | 国产麻豆精品免费视频 | 欧美色图另类 | 日本精品一 | 一级黄色片在线观看 | 99久久久国产精品免费99 | 国产乱对白刺激视频在线观看女王 | 久久久999| 天天草天天干天天 | 免费麻豆 | 激情婷婷色 | 一级欧美一级日韩 | 婷婷色资源 | 中文字幕在线网址 | 免费看十八岁美女 | 久久福利精品 | 97精品在线视频 | 日韩在线一区二区免费 | 亚洲激情校园春色 | 精品免费久久久久久 | 青青网视频 | 91污视频在线 | 日韩精品免费一区二区三区 | 国产精品激情在线观看 | av短片在线观看 | 99tvdz@gmail.com| 天天操天天添天天吹 | 草久草久 | 五月激情姐姐 | 久久全国免费视频 | 中文一区二区三区在线观看 | 夜夜操天天| 91精品国产麻豆 | 婷婷久草| 欧美激情综合色 | 国产亚洲精品成人 | 国产在线成人 | 夜夜躁狠狠躁日日躁 | 久久精品一二三区白丝高潮 | 亚洲精品综合在线 | 91毛片在线观看 | 亚洲精品无 | 国产日韩欧美自拍 | 国产精品av免费在线观看 | 中文字幕高清av | 亚洲日韩欧美一区二区在线 | 国产免费久久久久 | 国内揄拍国产精品 | 日韩在线字幕 | 亚洲国产精品第一区二区 | 97成人免费视频 | 久草精品视频在线看网站免费 | 97精品免费视频 | 日韩三级一区 | 在线va视频 | 日韩系列在线 | 日韩精品一区电影 | 成人精品影视 | 久久久精品国产免费观看同学 | 亚洲欧美日韩精品久久奇米一区 | 中文字幕一区在线 | 最近2019中文免费高清视频观看www99 | 久99久在线视频 | 国产区免费在线 | 在线观看自拍 | 色www免费视频 | 18av在线视频 | www.国产精品 | 欧美日本啪啪无遮挡网站 | 国产3p视频| 亚洲精选视频在线 | 日韩亚洲国产中文字幕 | 成年人在线播放视频 | 亚洲三级毛片 | 成av人电影| 日韩毛片在线播放 | 能在线观看的日韩av | 日本久久久久 | 精品久久一二三区 | 国产精品久久久 | 亚洲精品在线观看中文字幕 | 伊人伊成久久人综合网站 | 久久国产精彩视频 | 亚洲欧美偷拍另类 | 欧美精品免费视频 | 操久| 成人欧美一区二区三区黑人麻豆 | 手机av资源 | 91在线超碰 | 欧美大片aaa | www.91av在线 | 日日夜夜91 | 欧美日韩国产二区三区 | 久草在线免费看视频 | 久久精品99国产精品酒店日本 | 国产精品免费观看国产网曝瓜 | 免费观看成人网 | 国产一级特黄电影 | 国产成人久久av977小说 | 玖玖精品视频 | 91精品啪在线观看国产线免费 | 国产成人一区二区三区电影 | 夜夜高潮夜夜爽国产伦精品 | 国产精品毛片一区二区 | 久久久精品国产免费观看一区二区 | 91成人网在线播放 | 91麻豆精品国产91久久久久久久久 | 国产香蕉97碰碰久久人人 | 色在线亚洲 | 在线看小早川怜子av | 欧美色图88| 人成午夜视频 | www.午夜视频| 精品福利国产 | 亚洲美女免费视频 | 午夜在线观看一区 | 国产剧情一区在线 | www日日 | 丁香午夜婷婷 | 五月婷婷黄色网 | 福利视频导航网址 | 亚洲精品456在线播放乱码 | 国产精品久久一卡二卡 | 婷婷六月网 | 在线观看黄色的网站 | 免费国产在线观看 | av网在线观看 | 国产精品成人久久久 | 高清国产午夜精品久久久久久 | 日韩高清一 | 日韩免费在线观看视频 | 五月婷婷综合在线观看 | 国产欧美在线一区 | 在线婷婷 | 免费看一级片 | 亚洲一区网站 | 97国产在线| 欧美日韩不卡一区二区三区 | 成人午夜电影网站 | 九九九九九精品 | 草久中文字幕 | 中文字幕a∨在线乱码免费看 | 国产视频网站在线观看 | 国产精品18久久久久vr手机版特色 | 看毛片网站 | 欧美在线视频一区二区三区 | 亚洲不卡123 | 国产精品久久久网站 | 欧美日韩国产精品爽爽 | 久久国产经典 | 干av在线| 日韩在线观看免费 | www.久久免费视频 | 国产精品美女久久 | 亚洲一区二区视频在线播放 | 在线观看成人av | 九九免费在线看完整版 | 五月综合久久 | 国产精品一区二区在线播放 | 99精品视频播放 | 女人魂免费观看 | 五月婷婷综 | 国产日韩欧美视频在线观看 | 黄在线| 手机色在线 | 婷婷丁香九月 | 在线视频麻豆 | 亚洲精品一区中文字幕乱码 | 亚洲乱码精品久久久 | 国产高清视频免费在线观看 | 久久精品理论 | 亚洲精品国产精品国产 | 欧美日韩成人一区 | 天天色综合1 | 波多野结衣视频一区二区 | 国产精品久久精品国产 | 久久精品一区二区 | 久久超级碰 | 国产 亚洲 欧美 在线 | 91免费版成人 | 黄色高清视频在线观看 | 日韩免费视频线观看 | 欧美一二三区播放 | 国模精品一区二区三区 | 色欧美视频 | 精品国产乱码久久久久久浪潮 | 成人全视频免费观看在线看 | 久久精品一二三区白丝高潮 | 久久国产91 | 久久精品久久99精品久久 | 成人小视频在线播放 | 曰本免费av| 国产精品资源网 | 亚洲精品tv久久久久久久久久 | 99中文在线 | 一区二区视频播放 | 精品主播网红福利资源观看 | 国产精品成人自产拍在线观看 | 婷婷丁香七月 | 久久热首页 | 日韩欧美网址 | 久久久精品国产免费观看一区二区 | 91久久国产露脸精品国产闺蜜 | 99亚洲精品在线 | 96亚洲精品久久 | 国产成人一区二区三区电影 | 免费午夜网站 | 精品久久九九 | 成人h电影在线观看 | 欧美一级免费黄色片 | 国产 色| 久久99久久99精品免观看软件 | 精品久久精品 | 国产中文字幕在线播放 | 国产黑丝一区二区 | 国产精品9999 | 日韩免费播放 | 精品国产91亚洲一区二区三区www | 91高清在线看 | 日韩欧美在线一区 | 免费在线观看av网址 | 久久另类视频 | 精品9999 | 天天色天| 婷婷丁香狠狠爱 | 久久a v视频 | 久久久久久久久久久久av | 国产一级黄色av | 98超碰在线| 中文av在线免费观看 | 午夜av免费观看 | 黄色av电影 | 亚洲久在线 | 成人h视频在线播放 | 久久人人97超碰精品888 | 五月天国产 | 97色资源 | 国产特级毛片aaaaaa毛片 | 精品国产乱码久久久久久浪潮 | 日韩久久激情 | 日韩在线视频免费观看 | 国产一区免费视频 | 精品一二三四视频 | 99在线热播精品免费 | 免费视频区 | 97在线免费视频观看 | 免费av看片 | av永久网址 | 亚洲视频综合 | 亚洲国产福利视频 | 欧美日韩不卡一区二区三区 | 久久久久久久久久久免费 | 又粗又长又大又爽又黄少妇毛片 | 综合网伊人 | 国内精品免费 | 国产日本在线观看 | 日韩精品免费一区二区 | 日韩视频1| 久久99精品视频 | 美女福利视频在线 | 国产精品毛片久久久 | 久久综合九色综合欧美狠狠 | 91麻豆精品国产91久久久更新时间 | 欧美日韩视频免费看 | www.亚洲精品在线 | 精品91在线 | 免费高清在线观看成人 | 国产高清在线免费观看 | 久久国产精品视频免费看 | 国产精品观看视频 | 久久xx视频 | 国产精品黄网站在线观看 | 久久99视频| 综合国产在线观看 | 青青河边草观看完整版高清 | 国产网站在线免费观看 | 精品综合久久 | 91在线看黄 | 国产精品一区二区三区在线 | 免费成人av电影 | 青青色影院 | 激情综合网婷婷 | 国产欧美日韩一区 | 一区二区三区高清不卡 | 成人久久久电影 | 久久婷婷激情 | 久久视频| 国产精品中文字幕av | 亚洲精品黄色 | 亚洲欧美激情精品一区二区 | 中文字幕在线看片 | 欧美久久久久久久 | 麻豆传媒电影在线观看 | 久久成年人 | 日本中文字幕在线看 | 操一草| 激情久久伊人 | 五月天综合网站 | 国产亚洲精品久久久久久无几年桃 | 亚洲播播| 福利久久 | 欧美日性视频 | 国产啊v在线观看 | 欧美日韩另类视频 | 九九精品在线观看 | 福利电影一区二区 | 91麻豆看国产在线紧急地址 | 欧美性做爰猛烈叫床潮 | 亚洲精品美女在线观看 | 色综合天天在线 | 精品久久久久久久久中文字幕 | 婷婷激情在线 | 五月开心综合 | 欧美精品一区二区性色 | 亚洲一级二级 | www.夜夜爱 | 九九亚洲精品 | 日韩中文字幕第一页 | 在线电影播放 | 五月婷香蕉久色在线看 | 黄色三级在线观看 | 免费在线91| 成人在线视频在线观看 | 亚洲专区免费观看 | 久久久久久免费网 | 久久精品麻豆 | 色五丁香| 中国一级片视频 | 99精品视频在线播放免费 | 久久久在线视频 | 麻豆国产精品va在线观看不卡 | 国产精品视频资源 | 色综合久久久网 | 国内精品久久久久影院一蜜桃 | 黄色日本片 | 五月天精品视频 | 香蕉视频在线网站 | 中文资源在线观看 | 国产99视频在线观看 | 午夜色性片 | 亚洲免费高清视频 | 91精品一| 天天做天天看 | 九九热.com | 中文字幕日本在线观看 | 韩日av在线 | av高清一区 | 成人av在线一区二区 | 中文字幕视频 | 欧美 日韩精品 | 最近中文字幕高清字幕在线视频 | 91色网址 | 久久精品视频在线看 | 久久精品视频18 | 成人黄色在线视频 | 在线观看91网站 | 欧美日韩裸体免费视频 | 国产福利在线不卡 | 中文字幕在线播放日韩 | 中文字幕在线专区 | 婷婷激情站 | 国产精品99久久久久久久久 | 日韩三区在线 | 久久久免费看片 | 精品国产一区二区三区四 | 国产精品国内免费一区二区三区 | 91麻豆精品91久久久久同性 | 国产成人精品999在线观看 | 婷婷亚洲五月色综合 | 国产啊v在线观看 | 国产精华国产精品 | 久久天天躁狠狠躁亚洲综合公司 | 天天躁日日躁狠狠躁av中文 | 日韩欧美极品 | 亚洲精品在线国产 | www夜夜操 | 国产精品1区 | 美女视频网站久久 | 日韩在线观看第一页 | 麻豆久久| 成人免费观看网址 | 四虎在线观看精品视频 | 夜夜嗨av色一区二区不卡 | 91视频电影 | 久久精品视频在线 | 久久免费的视频 | 成人av免费电影 | 日韩一区二区三区高清在线观看 | 久久99久久久久久 | 亚洲一区二区三区四区在线视频 | 一本一道波多野毛片中文在线 | 亚洲精品资源在线观看 | 国产黄大片在线观看 | 亚洲精品女人 | 97日日 | 99视频在线免费观看 | 婷婷av网站| 国产精久久久久久久 | 日女人免费视频 | 日日干av | 色99导航 | 夜夜视频欧洲 | 精品在线小视频 | www.91国产| 久久久久久久久久久影院 | 国产黄色大全 | 久久少妇免费视频 | 欧美综合在线视频 | 精品国产一区二区三区久久久久久 | 国产精品一区电影 | 欧美色图视频一区 | 亚洲精品国产欧美在线观看 | 久久在线观看视频 | 69欧美视频 | av不卡免费在线观看 | 91av视频在线观看 | 国产精品免费观看国产网曝瓜 | 久久久久久久毛片 | 亚洲色图激情文学 | 亚洲激情网站免费观看 | 另类老妇性bbwbbw高清 | 国产精品久久久久久久久久久免费看 | 91视频久久久久 | 日韩欧美在线观看一区 | 国产成人综合图片 | 亚洲高清色综合 | 1024久久| 午夜精品视频免费在线观看 | 亚洲成人av电影 | 在线免费观看涩涩 | 色综合久久久久综合体 | 精品久久久久免费极品大片 | 午夜免费福利视频 | 日日弄天天弄美女bbbb | 亚洲成人精品在线观看 | 日韩一区二区三区高清在线观看 | 最新中文在线视频 | 日韩在线高清视频 | 日韩视频图片 | 久久综合99| 国产一区在线视频观看 | 婷婷午夜 | 在线视频中文字幕一区 | 五月天综合网 | 国产黄色片免费在线观看 | 色婷婷激情 | 国产一级免费观看视频 | 在线国产激情视频 | 日日夜夜亚洲 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 亚洲午夜av电影 | 人人干人人做 | 国产午夜不卡 | 精品国产乱子伦一区二区 | 国产精品午夜在线 | 9999精品免费视频 | 精品免费国产一区二区三区四区 | 欧美日韩一级久久久久久免费看 | 亚洲黄色免费观看 | 亚洲第一区在线播放 | 精品久久免费 | 成人午夜黄色 | 另类五月激情 | 9999国产精品 | 亚洲高清av在线 | 国产精品1000 | 国产拍揄自揄精品视频麻豆 | 欧美欧美 | 青青啪| 国产人成一区二区三区影院 | 黄色一二级片 | 国产在线最新 | 亚洲午夜精品一区 | 亚洲国产资源 | 在线观看岛国av | 在线视频一二三 | 国产a高清 | 日韩高清久久 | 视频99爱 | 中文在线天堂资源 | 草免费视频| 亚洲天天综合 | 精品在线视频一区二区三区 | 一级全黄毛片 | 久操免费视频 | 黄色的网站免费看 | 特及黄色片 | 国内精品中文字幕 | 美女网站视频色 | 亚洲天天在线 | 亚洲精品啊啊啊 | 人人草在线视频 | a久久久久久 | 日韩久久精品 | 日韩一区精品 | 久久久久国产成人精品亚洲午夜 | 国产一二区视频 | 18岁免费看片| 97福利视频 | 久久精品欧美日韩精品 | 午夜三级在线 | 久久精品美女视频 | 在线视频日韩欧美 | 国产群p | 成人黄色小说在线观看 | 日韩av播放在线 | 91免费网站在线观看 | 欧美a级免费视频 | 91在线麻豆|