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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

主动轮廓线模型Snake模型简介openCV中cvSnakeImage()函数代码分析

發布時間:2023/12/14 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 主动轮廓线模型Snake模型简介openCV中cvSnakeImage()函数代码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主動輪廓線模型又稱為Snake模型,自Kass于1987年提出以來,已廣泛應用于數字圖像分析和計算機視覺領域。由于Snake模型具有良好的提取和跟蹤特定區域內目標輪廓的能力,因此非常適合于醫學圖像如CT和MR圖像的處理,以獲得特定器官及組織的輪廓。簡單的來講,Snake模型就是一條可變形的參數曲線及相應的能量函數,以最小化能量目標函數為目標,控制參數曲線變形,具有最小能量的閉合曲線就是目標輪廓。 Snake模型具有一些經典方法所無法比擬的優點:圖像數據、初始估計、目標輪廓及基于知識的約束統一于一個過程中;經適當的初始化后,它能自主地收斂于能量極小值狀態;尺度空間中由初到精地極小化能量可以極大地擴展捕獲區域和降低復雜性。同時,Snake模型也有其自身的缺點:對初始位置敏感,需要依賴其他機制將Snake放置在感興趣的圖像特征附近;由于Snake模型的非凸性,它有可能收斂到局部極值點,甚至發散。

?

Snake模型稱為動態輪廓模型(Active Contour? Model)是Kass與1987年提出的,它對于在噪聲和對比度不敏感,能將目標從復雜背景中分割出來,并能有效的跟蹤目標的形變和非剛體的復雜運動而被廣泛用于圖像分割和物體跟蹤等圖像處理領域。

Snake主要原理是先提供待分割圖像的一個初始輪廓的位置,并對其定義個能量函數,是輪廓沿能量降低的方向靠近。當能量函數達到最小的時候,提供的初始輪廓收斂到圖形中目標的真實輪廓。

Snake能量函數是有內部能量函數和外部能量函數組成,內部能量控制輪廓的平滑性和連續性,外部能量由圖像能量和約束能量組成,控制輪廓向著實際輪廓收斂,其中約束能量可根據具體的對象形態定義,使得snake具有很大的靈活性。

Snake模型發展10多年來,許多學者對于經典的snake模型做了改進,提出各種改進的snake模型,其中梯度矢量流(Gradient Vector? Flow,GVF)模型擴大了經典snake的外力作用范圍,加強了對目標凹輪廓邊緣的吸引力,提高了傳統的snake模型。

?

Snake模型主要研究的方面:

1.表示內部能量的曲線演化??? 2.外力??? 3.能量最小化

Snake模型初始輪廓的選擇

由于snake模型對于初始位置比較敏感,因此要求初始輪廓盡可能的靠近真實輪廓,而當圖像邊緣模糊,目標比較復雜或與其他的物體靠的比較近時,其初始輪廓更不易確定。

現有的初始輪廓確定的方法有以下幾種:1.人工勾勒圖像的邊緣??? 2.序列圖像差分邊界??? 3.基于序列圖像的前一幀圖像邊界的預測? 4.基于傳統圖像分割結果進行邊界選取

分水嶺算法

分水嶺算法是由S.Beucher? F.Meyer最早引入圖像分割領域,它的基本思想是來源于測地學上的側線重構,其內容是把圖像看做是測地學上的拓撲地貌。進行分水嶺模型計算的比較經典的算法是L? Vincent提出的,在該算法中首先是對每個像素的灰度級進行從低到高排序,然后用等級對壘模擬淹沒,初始時,等級隊列中為淹沒的初始點,在從低到高實現淹沒的過程中,對每一個局部極小值在H階高度的影響域采用先進先出(FIFO)結構進行判斷及標注,直到最后一個值被淹沒,從而正確劃分各個區域。

整個洪水淹沒的循環迭代過程可以通過以下兩個步驟表示:

分水嶺算法的優點:

1.分水嶺算法對于圖像中由于像素差別較小而產生微弱邊緣具有良好的響應,可以得到封閉連續的邊緣,而且可以保證在照明,陰影等影響下分割邊緣的封閉性和連續性

分水嶺算法對于目標物體之間或者是目標物體同背景物體之間粘連的情況有較好的處理效果。能夠較好的分割這類目標物體。

3.圖像內部的陰暗變化對于分水嶺算法影響較小,可以在一定程度上減小由于陰暗便哈帶來的圖像分割影響

與其他邊緣分割算子比較:

Canny算子可以很好的勾勒出物體的輪廓,過分的強調輪廓的特性,而沒有強調物體的輪廓必須是封閉的,在圖像中顯示的輪廓是不封閉的,物體內部陰暗變化也被當做邊界檢測出來,形成大量的偽邊緣。

分水嶺算法分割得到的輪廓曲線時連續封閉的,圖像內部的陰暗變化沒有生成獨立的輪廓線。

Snake模型的缺陷:

對初始位置敏感,易陷入局部極值,無法收斂到輪廓深度凹陷部分,不具備自動拓撲變換功能等。

Snake模型的改進算法:

1.Cohen提出的氣球(balloon)理論模型:應用壓力和高斯能力一起增大吸引范圍的方法,該壓力可使模型擴大或縮小,因此不再要求將模型初始化在所期望的對象邊界附近。在圖像的梯度力場上疊加氣球里,以使輪廓線作為一個整體進行膨脹或收縮,從而擴大了模型尋找圖像特證的范圍。

優勢:對初始邊界不敏感????????????

存在的缺點:存在弱邊界,漏出邊界間隙等問題。

2.Xu提出梯度矢量流(GVF)概念,用GVF場代替經典外力場,GVF場可以看做是對圖像梯度場得逼近,這不僅使模型捕捉的范圍得到了提高,而且能使活動輪廓進入凹陷區。

優勢:有良好的收斂性,深入目標邊緣的凹陷區域???????????

存在的缺點:仍不能解決曲線的拓撲變化問題

局部優化算法:

1.Amini提出基于動態規劃的snake算法。 2.變分法? 3.貪婪算法? 4.有限差分法?? 5.有限元法

全局優化算法:

1.模擬退火???? 2.遺傳算法??? 3.神經網絡

Snake模型的蟻群算法(Ant Colony Optimization)模型

蟻群算法是最近幾年有意大利學者M.Dorigo等人首次提出的一種新型的模擬進化算法,稱為蟻群系統,蟻群算法通過候選解組成的群體的進化過程來尋求最優解,該過程包括兩個基本階段:適應階段和協同工作階段,算法本身采用正反饋原理,加快了進化過程,不易陷入局部最優解,而且個體之間不斷進行信息交流和傳遞,有利于對解空間的進一步探索,因此有很強的發展解的能力。

?

?

Snake的進化模型

1.McInerney 提出一種拓撲自適應snake模型(Topology Adaptive? Snake,T-Snake)

該算法基于仿射細胞圖像分解(Affine Cell Image? Decomposition,ACID)先在待分割圖像上加以三角網格,然后在圖像區域的適當位置做一條初始曲線,最后取曲線與網格的交點作為snake的初始離散點,其第i個snake的離散點的坐標為其中,相鄰兩點,之間由一條彈性樣條連接而成

由于T-Snake模型可借助三角形網格和網格點的特征函數來確定邊界三角形,可促使snake模型演化過程中的分裂和合并,從而保證了其具有能夠處理拓撲結果復雜圖像的能力,因此能夠很好的滿足醫學圖像拓撲結果復雜的特點。此算法用于腦部MR切片有良好的性能。

2.雙T-Snake模型

雙T-Snake模型(Dual-T-Snakes)是在T-Snake模型的基礎上產生的,其主要思想是采用內外兩個初始輪廓,其中一個輪廓從目標外向內收縮和分裂,另一個輪廓從目標內部向外膨脹,兩個初始輪廓可以離目標邊界較遠,迭代的過程中對能量較大的輪廓增加驅動力,使其靠近與之相對應的輪廓,直到連個輪廓收斂到同一個為止

3.Loop? Snake 模型

Loop? Snake模型是一種加強了拓撲控制的T-Snake模型,這種方法的關鍵集中在曲線的每一步進化中都要形成循環,其基本思想是,確保圖像輪廓曲線精確地線性地映射到適當的分類中,然后在額外的記過loop-Tree的幫助下,盡可能少的時間內運用已經被snake探究的循環來決定是否進行區域劃分,這種模型的實質是對T-Snake模型的一種改進。由于加強了拓撲控制,使得Loop Snake模型既可以忽略背景中強噪聲又可以在演化過程中進行多次分裂。

4.連續snake模型

在Snake模型中,輪廓曲線由一條給定容許誤差范圍的光滑曲線組成,相對于離散snake來說,連續snake模型所需要的控制點少,比離散的更具優越性。

5.B-Snake模型

B-Snake模型是通過B樣條曲線來定義的,其輪廓曲線由各曲線段光滑相連而成,每一個曲線段都是由一個給定次數多項式表示,這種多項式是B樣條曲度函數的一種線性組合,并以控制點為系數。在有些B-Snake模型中并沒有明確應用內部能量,這是因為B樣條本身就含有內部能量,snake輪廓曲線只受外力影響著圖像邊緣移動。可用于對圖像切片分割區域的描述與跟蹤而用于器官的三維重建。

?

應用snake的優勢:由于生物或人體組織解剖結構的復雜性,以及軟組織形狀的易變性,那些僅依賴于圖像本身的灰度,紋理屬性等低層次視覺屬性來進行分割的圖像分割方法難以獲得理想的分割效果,因此醫學圖像分割迫切需要有一種靈活的框架,能將基于圖像本身低層次視覺屬性(邊緣,紋理,灰度,色彩)和人們對于待分割目標的知識經驗,如目標形狀的描述,亮度,色彩的經驗統計,醫生的經驗等,可以一種有機的方式整合起來,得到待分割區域的完整表達。

?

Opencv中snake函數解析及例子:

?

[cpp]?view plain?copy

  • /*M///?
  • //?
  • //??IMPORTANT:?READ?BEFORE?DOWNLOADING,?COPYING,?INSTALLING?OR?USING.?
  • //?
  • //??By?downloading,?copying,?installing?or?using?the?software?you?agree?to?this?license.?
  • //??If?you?do?not?agree?to?this?license,?do?not?download,?install,?
  • //??copy?or?use?the?software.?
  • //?
  • //?
  • //????????????????????????Intel?License?Agreement?
  • //????????????????For?Open?Source?Computer?Vision?Library?
  • //?
  • //?Copyright?(C)?2000,?Intel?Corporation,?all?rights?reserved.?
  • //?Third?party?copyrights?are?property?of?their?respective?owners.?
  • //?
  • //?Redistribution?and?use?in?source?and?binary?forms,?with?or?without?modification,?
  • //?are?permitted?provided?that?the?following?conditions?are?met:?
  • //?
  • //???*?Redistribution's?of?source?code?must?retain?the?above?copyright?notice,?
  • //?????this?list?of?conditions?and?the?following?disclaimer.?
  • //?
  • //???*?Redistribution's?in?binary?form?must?reproduce?the?above?copyright?notice,?
  • //?????this?list?of?conditions?and?the?following?disclaimer?in?the?documentation?
  • //?????and/or?other?materials?provided?with?the?distribution.?
  • //?
  • //???*?The?name?of?Intel?Corporation?may?not?be?used?to?endorse?or?promote?products?
  • //?????derived?from?this?software?without?specific?prior?written?permission.?
  • //?
  • //?This?software?is?provided?by?the?copyright?holders?and?contributors?"as?is"?and?
  • //?any?express?or?implied?warranties,?including,?but?not?limited?to,?the?implied?
  • //?warranties?of?merchantability?and?fitness?for?a?particular?purpose?are?disclaimed.?
  • //?In?no?event?shall?the?Intel?Corporation?or?contributors?be?liable?for?any?direct,?
  • //?indirect,?incidental,?special,?exemplary,?or?consequential?damages?
  • //?(including,?but?not?limited?to,?procurement?of?substitute?goods?or?services;?
  • //?loss?of?use,?data,?or?profits;?or?business?interruption)?however?caused?
  • //?and?on?any?theory?of?liability,?whether?in?contract,?strict?liability,?
  • //?or?tort?(including?negligence?or?otherwise)?arising?in?any?way?out?of?
  • //?the?use?of?this?software,?even?if?advised?of?the?possibility?of?such?damage.?
  • //?
  • //M*/??
  • #include?"_cv.h"??
  • ???
  • #define?_CV_SNAKE_BIG?2.e+38f??
  • #define?_CV_SNAKE_IMAGE?1??
  • #define?_CV_SNAKE_GRAD??2??
  • ???
  • ???
  • /*F///?
  • //????Name:??????icvSnake8uC1R?????
  • //????Purpose:???
  • //????Context:???
  • //????Parameters:?
  • //???????????????src?-?source?image,?
  • //???????????????srcStep?-?its?step?in?bytes,?
  • //???????????????roi?-?size?of?ROI,?
  • //???????????????pt?-?pointer?to?snake?points?array?
  • //???????????????n?-?size?of?points?array,?
  • //???????????????alpha?-?pointer?to?coefficient?of?continuity?energy,?
  • //???????????????beta?-?pointer?to?coefficient?of?curvature?energy,??
  • //???????????????gamma?-?pointer?to?coefficient?of?image?energy,??
  • //???????????????coeffUsage?-?if?CV_VALUE?-?alpha,?beta,?gamma?point?to?single?value?
  • //????????????????????????????if?CV_MATAY?-?point?to?arrays?
  • //???????????????criteria?-?termination?criteria.?
  • //???????????????scheme?-?image?energy?scheme?
  • //?????????????????????????if?_CV_SNAKE_IMAGE?-?image?intensity?is?energy?
  • //?????????????????????????if?_CV_SNAKE_GRAD??-?magnitude?of?gradient?is?energy?
  • //????Returns:???
  • //F*/??
  • ???
  • static?CvStatus??
  • icvSnake8uC1R(?unsigned?char?*src,???//原始圖像數據??
  • ???????????????int?srcStep,?????????//每行的字節數??
  • ???????????????CvSize?roi,?????????//圖像尺寸??
  • ???????????????CvPoint?*?pt,???????//輪廓點(變形對象)??
  • ???????????????int?n,????????????//輪廓點的個數??
  • ???????????????float?*alpha,???????//指向α的指針,α可以是單個值,也可以是與輪廓點個數一致的數組??
  • ???????????????float?*beta,????????//β的值,同α??
  • ???????????????float?*gamma,???????//γ的值,同α??
  • ???????????????int?coeffUsage,???//確定αβγ是用作單個值還是個數組??
  • ????????CvSize?win,???????//每個點用于搜索的最小的領域大小,寬度為奇數??
  • ?????????????CvTermCriteria?criteria,???//遞歸迭代終止的條件準則??
  • int?scheme?)?????????//確定圖像能量場的數據選擇,1為灰度,2為灰度梯度??
  • {??
  • ????int?i,?j,?k;??
  • ????int?neighbors?=?win.height?*?win.width;????//當前點領域中點的個數??
  • ???
  • ???//當前點的位置??
  • ????int?centerx?=?win.width?>>?1;????????????
  • ????int?centery?=?win.height?>>?1;???????????
  • ???
  • ????float?invn;????????//n?的倒數???
  • ????int?iteration?=?0;?????//迭代次數??
  • ????int?converged?=?0;??????//收斂標志,0為非收斂??
  • ??????
  • ??//能量??
  • ????float?*Econt;????//??
  • ????float?*Ecurv;???//輪廓曲線能量??
  • ????float?*Eimg;????//圖像能量??
  • ????float?*E;??????//??
  • ????
  • ???//αβγ的副本??
  • ????float?_alpha,?_beta,?_gamma;??
  • ???
  • ????/*#ifdef?GRAD_SNAKE?*/??
  • ????float?*gradient?=?NULL;??
  • ????uchar?*map?=?NULL;??
  • ????int?map_width?=?((roi.width?-?1)?>>?3)?+?1;??
  • ????int?map_height?=?((roi.height?-?1)?>>?3)?+?1;??
  • ????CvSepFilter?pX,?pY;??
  • ????#define?WTILE_SIZE?8??
  • ????#define?TILE_SIZE?(WTILE_SIZE?+?2)?????????
  • ????short?dx[TILE_SIZE*TILE_SIZE],?dy[TILE_SIZE*TILE_SIZE];??
  • ????CvMat?_dx?=?cvMat(?TILE_SIZE,?TILE_SIZE,?CV_16SC1,?dx?);??
  • ????CvMat?_dy?=?cvMat(?TILE_SIZE,?TILE_SIZE,?CV_16SC1,?dy?);??
  • ????CvMat?_src?=?cvMat(?roi.height,?roi.width,?CV_8UC1,?src?);??
  • ???
  • ????/*?inner?buffer?of?convolution?process?*/??
  • ????//char?ConvBuffer[400];??
  • ???
  • ????/*#endif?*/??
  • ???
  • ?????//檢點參數的合理性??
  • ????/*?check?bad?arguments?*/??
  • ????if(?src?==?NULL?)??
  • ????????return?CV_NULLPTR_ERR;??
  • ????if(?(roi.height?<=?0)?||?(roi.width?<=?0)?)??
  • ????????return?CV_BADSIZE_ERR;??
  • ????if(?srcStep?<?roi.width?)??
  • ????????return?CV_BADSIZE_ERR;??
  • ????if(?pt?==?NULL?)??
  • ????????return?CV_NULLPTR_ERR;??
  • ????if(?n?<?3?)?????????????????????????//輪廓點至少要三個??
  • ????????return?CV_BADSIZE_ERR;??
  • ????if(?alpha?==?NULL?)??
  • ????????return?CV_NULLPTR_ERR;??
  • ????if(?beta?==?NULL?)??
  • ????????return?CV_NULLPTR_ERR;??
  • ????if(?gamma?==?NULL?)??
  • ????????return?CV_NULLPTR_ERR;??
  • ????if(?coeffUsage?!=?CV_VALUE?&&?coeffUsage?!=?CV_ARRAY?)??
  • ????????return?CV_BADFLAG_ERR;??
  • ????if(?(win.height?<=?0)?||?(!(win.height?&?1)))???//鄰域搜索窗口得是奇數??
  • ????????return?CV_BADSIZE_ERR;??
  • ????if(?(win.width?<=?0)?||?(!(win.width?&?1)))??
  • ????????return?CV_BADSIZE_ERR;??
  • ???
  • ????invn?=?1?/?((float)?n);????????//輪廓點數n的倒數,用于求平均???
  • ???
  • ????if(?scheme?==?_CV_SNAKE_GRAD?)??
  • {??
  • ?????//X方向上和Y方向上的Scoble梯度算子,用于求圖像的梯度,??
  • //處理的圖像最大尺寸為TILE_SIZE+2,此例為12,算子半長為3即{-3,-2,-1,0,1,2,3}??
  • //處理后的數據類型為16位符號數,分別存放在_dx,_dy矩陣中,長度為10??
  • ????????pX.init_deriv(?TILE_SIZE+2,?CV_8UC1,?CV_16SC1,?1,?0,?3?);??
  • ????????pY.init_deriv(?TILE_SIZE+2,?CV_8UC1,?CV_16SC1,?0,?1,?3?);??
  • ???????//圖像梯度存放緩沖區??
  • ????????gradient?=?(float?*)?cvAlloc(?roi.height?*?roi.width?*?sizeof(?float?));??
  • ???
  • ????????if(?!gradient?)??
  • ????????????return?CV_OUTOFMEM_ERR;??
  • ???????//map用于標志相應位置的分塊的圖像能量是否已經求得??
  • ????????map?=?(uchar?*)?cvAlloc(?map_width?*?map_height?);??
  • ????????if(?!map?)??
  • ????????{??
  • ????????????cvFree(?&gradient?);??
  • ????????????return?CV_OUTOFMEM_ERR;??
  • ????????}??
  • ????????/*?clear?map?-?no?gradient?computed?*/??
  • ???????//清除map標志??
  • ????????memset(?(void?*)?map,?0,?map_width?*?map_height?);??
  • }??
  • //各種能量的存放處,取每點的鄰域的能量??
  • ????Econt?=?(float?*)?cvAlloc(?neighbors?*?sizeof(?float?));??
  • ????Ecurv?=?(float?*)?cvAlloc(?neighbors?*?sizeof(?float?));??
  • ????Eimg?=?(float?*)?cvAlloc(?neighbors?*?sizeof(?float?));??
  • ????E?=?(float?*)?cvAlloc(?neighbors?*?sizeof(?float?));??
  • ???//開始迭代??
  • ????while(?!converged?)????//收斂標志無效時進行??
  • ????{??
  • ????????float?ave_d?=?0;??//輪廓各點的平均距離??
  • ????????int?moved?=?0;??????//輪廓變形時,發生移動的數量??
  • ???
  • ????????converged?=?0;???????//標志未收斂??
  • ????????iteration++;????????//更新迭代次數+1??
  • ???
  • //計算輪廓中各點的平均距離??
  • ????????/*?compute?average?distance?*/??
  • ??????//從點0到點n-1的距離和??
  • ????????for(?i?=?1;?i?<?n;?i++?)??
  • ????????{??
  • ????????????int?diffx?=?pt[i?-?1].x?-?pt[i].x;??
  • ????????????int?diffy?=?pt[i?-?1].y?-?pt[i].y;??
  • ???
  • ????????????ave_d?+=?cvSqrt(?(float)?(diffx?*?diffx?+?diffy?*?diffy)?);???
  • ????????}??
  • ?????//再加上從點n-1到點0的距離,形成回路輪廓??
  • ????????ave_d?+=?cvSqrt(?(float)?((pt[0].x?-?pt[n?-?1].x)?*??
  • ??????????????????????????????????(pt[0].x?-?pt[n?-?1].x)?+??
  • ??????????????????????????????????(pt[0].y?-?pt[n?-?1].y)?*?(pt[0].y?-?pt[n?-?1].y)));??
  • ????//求平均,得出平均距離??
  • ????????ave_d?*=?invn;??
  • ????????/*?average?distance?computed?*/??
  • ???
  • ???
  • ??????//對于每個輪廓點進行特定循環迭代求解??
  • ????????for(?i?=?0;?i?<?n;?i++?)??
  • ????????{??
  • ????????????/*?Calculate?Econt?*/??
  • ??????????//初始化各個能量??
  • ????????????float?maxEcont?=?0;??
  • ????????????float?maxEcurv?=?0;??
  • ????????????float?maxEimg?=?0;??
  • ????????????float?minEcont?=?_CV_SNAKE_BIG;??
  • ????????????float?minEcurv?=?_CV_SNAKE_BIG;??
  • ????????????float?minEimg?=?_CV_SNAKE_BIG;??
  • ????????????float?Emin?=?_CV_SNAKE_BIG;??
  • ?????????//初始化變形后輪廓點的偏移量??
  • ????????????int?offsetx?=?0;??
  • ????????????int?offsety?=?0;??
  • ????????????float?tmp;??
  • ???
  • ????????//計算邊界??
  • ????????????/*?compute?bounds?*/??
  • ???????????//計算合理的搜索邊界,以防領域搜索超過ROI圖像的范圍??
  • ????????????int?left?=?MIN(?pt[i].x,?win.width?>>?1?);??
  • ????????????int?right?=?MIN(?roi.width?-?1?-?pt[i].x,?win.width?>>?1?);??
  • ????????????int?upper?=?MIN(?pt[i].y,?win.height?>>?1?);??
  • ????????????int?bottom?=?MIN(?roi.height?-?1?-?pt[i].y,?win.height?>>?1?);??
  • ??????????//初始化Econt??
  • ????????????maxEcont?=?0;??
  • ????????????minEcont?=?_CV_SNAKE_BIG;??
  • ?????????//在合理的搜索范圍內進行Econt的計算??
  • ????????????for(?j?=?-upper;?j?<=?bottom;?j++?)??
  • ????????????{??
  • ????????????????for(?k?=?-left;?k?<=?right;?k++?)??
  • ????????????????{??
  • ????????????????????int?diffx,?diffy;??
  • ????????????????????float?energy;??
  • ?????????????//在輪廓點集的首尾相接處作相應處理,求輪廓點差分??
  • ????????????????????if(?i?==?0?)??
  • ????????????????????{??
  • ????????????????????????diffx?=?pt[n?-?1].x?-?(pt[i].x?+?k);??
  • ????????????????????????diffy?=?pt[n?-?1].y?-?(pt[i].y?+?j);??
  • ????????????????????}??
  • ????????????????????else??
  • ?????????????//在其他地方作一般處理??
  • ???
  • ????????????????????{??
  • ????????????????????????diffx?=?pt[i?-?1].x?-?(pt[i].x?+?k);??
  • ????????????????????????diffy?=?pt[i?-?1].y?-?(pt[i].y?+?j);??
  • ????????????????????}??
  • ?????????????//將鄰域陳列坐標轉成Econt數組的下標序號,計算鄰域中每點的Econt??
  • ??????????????//Econt的值等于平均距離和此點和上一點的距離的差的絕對值(這是怎么來的?)??
  • ????????????????????Econt[(j?+?centery)?*?win.width?+?k?+?centerx]?=?energy?=??
  • ????????????????????????(float)?fabs(?ave_d?-??
  • ??????????????????????????????????????cvSqrt(?(float)?(diffx?*?diffx?+?diffy?*?diffy)?));??
  • ?????????????//求出所有鄰域點中的Econt的最大值和最小值??
  • ????????????????????maxEcont?=?MAX(?maxEcont,?energy?);??
  • ????????????????????minEcont?=?MIN(?minEcont,?energy?);??
  • ????????????????}??
  • ????????????}??
  • ???????????//求出鄰域點中最大值和最小值之差,并對所有的鄰域點的Econt進行標準歸一化,若最大值最小??
  • ???????????//相等,則鄰域中的點Econt全相等,Econt歸一化束縛為0??
  • ????????????tmp?=?maxEcont?-?minEcont;??
  • ????????????tmp?=?(tmp?==?0)???0?:?(1?/?tmp);??
  • ????????????for(?k?=?0;?k?<?neighbors;?k++?)??
  • ????????????{??
  • ????????????????Econt[k]?=?(Econt[k]?-?minEcont)?*?tmp;??
  • ????????????}??
  • ???
  • ???
  • ???????????//計算每點的Ecurv??
  • ????????????/*??Calculate?Ecurv?*/??
  • ????????????maxEcurv?=?0;??
  • ????????????minEcurv?=?_CV_SNAKE_BIG;??
  • ????????????for(?j?=?-upper;?j?<=?bottom;?j++?)??
  • ????????????{??
  • ????????????????for(?k?=?-left;?k?<=?right;?k++?)??
  • ????????????????{??
  • ????????????????????int?tx,?ty;??
  • ????????????????????float?energy;??
  • ????????????????????//第一個點的二階差分??
  • ????????????????????if(?i?==?0?)??
  • ????????????????????{??
  • ????????????????????????tx?=?pt[n?-?1].x?-?2?*?(pt[i].x?+?k)?+?pt[i?+?1].x;??
  • ????????????????????????ty?=?pt[n?-?1].y?-?2?*?(pt[i].y?+?j)?+?pt[i?+?1].y;??
  • ????????????????????}??
  • ???????????????????//最后一個點的二階差分??
  • ????????????????????else?if(?i?==?n?-?1?)??
  • ????????????????????{??
  • ????????????????????????tx?=?pt[i?-?1].x?-?2?*?(pt[i].x?+?k)?+?pt[0].x;??
  • ????????????????????????ty?=?pt[i?-?1].y?-?2?*?(pt[i].y?+?j)?+?pt[0].y;??
  • ????????????????????}??
  • ???????????????????//其余點的二階差分??
  • ????????????????????else??
  • ????????????????????{??
  • ????????????????????????tx?=?pt[i?-?1].x?-?2?*?(pt[i].x?+?k)?+?pt[i?+?1].x;??
  • ????????????????????????ty?=?pt[i?-?1].y?-?2?*?(pt[i].y?+?j)?+?pt[i?+?1].y;??
  • ????????????????????}??
  • ??????????????????//轉換坐標為數組序號,并求各點的Ecurv的值,二階差分后取平方??
  • ????????????????????Ecurv[(j?+?centery)?*?win.width?+?k?+?centerx]?=?energy?=??
  • ????????????????????????(float)?(tx?*?tx?+?ty?*?ty);??
  • ??????????????????//取最小的Ecurv和最大的Ecurv??
  • ????????????????????maxEcurv?=?MAX(?maxEcurv,?energy?);??
  • ????????????????????minEcurv?=?MIN(?minEcurv,?energy?);??
  • ????????????????}??
  • ????????????}??
  • ???????????????//對Ecurv進行標準歸一化??
  • ????????????tmp?=?maxEcurv?-?minEcurv;??
  • ????????????tmp?=?(tmp?==?0)???0?:?(1?/?tmp);??
  • ????????????for(?k?=?0;?k?<?neighbors;?k++?)??
  • ????????????{??
  • ????????????????Ecurv[k]?=?(Ecurv[k]?-?minEcurv)?*?tmp;??
  • ????????????}??
  • ???????????
  • ???????????//求Eimg??
  • ????????????/*?Calculate?Eimg?*/??
  • ????????????for(?j?=?-upper;?j?<=?bottom;?j++?)??
  • ????????????{??
  • ????????????????for(?k?=?-left;?k?<=?right;?k++?)??
  • ????????????????{??
  • ????????????????????float?energy;??
  • ???????????????//若采用灰度梯度數據??
  • ????????????????????if(?scheme?==?_CV_SNAKE_GRAD?)??
  • ????????????????????{??
  • ????????????????????????/*?look?at?map?and?check?status?*/??
  • ????????????????????????int?x?=?(pt[i].x?+?k)/WTILE_SIZE;??
  • ????????????????????????int?y?=?(pt[i].y?+?j)/WTILE_SIZE;??
  • ????????????????????????//若此處的圖像能量還沒有獲取,則對此處對應的圖像分塊進行圖像能量的求解??
  • ????????????????????????if(?map[y?*?map_width?+?x]?==?0?)??
  • ????????????????????????{??
  • ????????????????????????????int?l,?m;?????????????????????????????
  • ???
  • ????????????????????????????/*?evaluate?block?location?*/??
  • ???????????????????????????//計算要進行梯度算子處理的圖像塊的位置??
  • ????????????????????????????int?upshift?=?y???1?:?0;??
  • ????????????????????????????int?leftshift?=?x???1?:?0;??
  • ????????????????????????????int?bottomshift?=?MIN(?1,?roi.height?-?(y?+?1)*WTILE_SIZE?);??
  • ????????????????????????????int?rightshift?=?MIN(?1,?roi.width?-?(x?+?1)*WTILE_SIZE?);??
  • ??????????????????????????//圖像塊的位置大小(由于原ROI不一定是8的倍數,所以圖像塊會大小不一)??
  • ????????????????????????????CvRect?g_roi?=?{?x*WTILE_SIZE?-?leftshift,?y*WTILE_SIZE?-?upshift,??
  • ????????????????????????????????leftshift?+?WTILE_SIZE?+?rightshift,?upshift?+?WTILE_SIZE?+?bottomshift?};??
  • ????????????????????????????CvMat?_src1;??
  • ????????????????????????????cvGetSubArr(?&_src,?&_src1,?g_roi?);??//得到圖像塊的數據??
  • ????????????????????????????//分別對圖像的X方向和Y方向進行梯度算子??
  • ????????????????????????????pX.process(?&_src1,?&_dx?);??
  • ????????????????????????????pY.process(?&_src1,?&_dy?);??
  • ?????????????????????????//求分塊區域中的每個點的梯度??
  • ????????????????????????????for(?l?=?0;?l?<?WTILE_SIZE?+?bottomshift;?l++?)??
  • ????????????????????????????{??
  • ????????????????????????????????for(?m?=?0;?m?<?WTILE_SIZE?+?rightshift;?m++?)??
  • ????????????????????????????????{??
  • ????????????????????????????????????gradient[(y*WTILE_SIZE?+?l)?*?roi.width?+?x*WTILE_SIZE?+?m]?=??
  • ????????????????????????????????????????(float)?(dx[(l?+?upshift)?*?TILE_SIZE?+?m?+?leftshift]?*??
  • ?????????????????????????????????????????????????dx[(l?+?upshift)?*?TILE_SIZE?+?m?+?leftshift]?+??
  • ?????????????????????????????????????????????????dy[(l?+?upshift)?*?TILE_SIZE?+?m?+?leftshift]?*??
  • ?????????????????????????????????????????????????dy[(l?+?upshift)?*?TILE_SIZE?+?m?+?leftshift]);??
  • ????????????????????????????????}??
  • ????????????????????????????}??
  • ????????????????????????????//map相應位置置1表示此處圖像能量已經獲取??
  • ????????????????????????????map[y?*?map_width?+?x]?=?1;??
  • ????????????????????????}??
  • ??????????????????????//以梯度數據作為圖像能量??
  • ????????????????????????Eimg[(j?+?centery)?*?win.width?+?k?+?centerx]?=?energy?=??
  • ????????????????????????????gradient[(pt[i].y?+?j)?*?roi.width?+?pt[i].x?+?k];??
  • ????????????????????}??
  • ????????????????????else??
  • ????????????????????{??
  • ???????????????????????//以灰度作為圖像能量??
  • ????????????????????????Eimg[(j?+?centery)?*?win.width?+?k?+?centerx]?=?energy?=??
  • ????????????????????????????src[(pt[i].y?+?j)?*?srcStep?+?pt[i].x?+?k];??
  • ????????????????????}??
  • ???????????????????//獲得鄰域中最大和最小的圖像能量??
  • ????????????????????maxEimg?=?MAX(?maxEimg,?energy?);??
  • ????????????????????minEimg?=?MIN(?minEimg,?energy?);??
  • ????????????????}??
  • ????????????}??
  • ??????????????//Eimg的標準歸一化??
  • ????????????tmp?=?(maxEimg?-?minEimg);??
  • ????????????tmp?=?(tmp?==?0)???0?:?(1?/?tmp);??
  • ???
  • ????????????for(?k?=?0;?k?<?neighbors;?k++?)??
  • ????????????{??
  • ????????????????Eimg[k]?=?(minEimg?-?Eimg[k])?*?tmp;??
  • ????????????}??
  • ????????????//加入系數??
  • ????????????/*?locate?coefficients?*/??
  • ????????????if(?coeffUsage?==?CV_VALUE)??
  • ????????????{??
  • ????????????????_alpha?=?*alpha;??
  • ????????????????_beta?=?*beta;??
  • ????????????????_gamma?=?*gamma;??
  • ????????????}??
  • ????????????else??
  • ????????????{????????????????????
  • ????????????????_alpha?=?alpha[i];??
  • ????????????????_beta?=?beta[i];??
  • ????????????????_gamma?=?gamma[i];??
  • ????????????}??
  • ???
  • ????????????/*?Find?Minimize?point?in?the?neighbors?*/??
  • ????????????//求得每個鄰域點的Snake能量??
  • ????????????for(?k?=?0;?k?<?neighbors;?k++?)??
  • ????????????{??
  • ????????????????E[k]?=?_alpha?*?Econt[k]?+?_beta?*?Ecurv[k]?+?_gamma?*?Eimg[k];??
  • ????????????}??
  • ????????????Emin?=?_CV_SNAKE_BIG;??
  • ????????//獲取最小的能量,以及對應的鄰域中的相對位置??
  • ????????????for(?j?=?-upper;?j?<=?bottom;?j++?)??
  • ????????????{??
  • ????????????????for(?k?=?-left;?k?<=?right;?k++?)??
  • ????????????????{??
  • ???
  • ????????????????????if(?E[(j?+?centery)?*?win.width?+?k?+?centerx]?<?Emin?)??
  • ????????????????????{??
  • ????????????????????????Emin?=?E[(j?+?centery)?*?win.width?+?k?+?centerx];??
  • ????????????????????????offsetx?=?k;??
  • ????????????????????????offsety?=?j;??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}??
  • ?????????//如果輪廓點發生改變,則記得移動次數??
  • ????????????if(?offsetx?||?offsety?)??
  • ????????????{??
  • ????????????????pt[i].x?+=?offsetx;??
  • ????????????????pt[i].y?+=?offsety;??
  • ????????????????moved++;??
  • ????????????}??
  • ????????}??
  • ???
  • ??????//各個輪廓點迭代計算完成后,如果沒有移動的點了,則收斂標志位有效,停止迭代??
  • ????????converged?=?(moved?==?0);??
  • ?????//達到最大迭代次數時,收斂標志位有效,停止迭代??
  • ????????if(?(criteria.type?&?CV_TERMCRIT_ITER)?&&?(iteration?>=?criteria.max_iter)?)??
  • ????????????converged?=?1;??
  • ??//到大相應精度時,停止迭代(與第一個條件有相同效果)??
  • ????????if(?(criteria.type?&?CV_TERMCRIT_EPS)?&&?(moved?<=?criteria.epsilon)?)??
  • ????????????converged?=?1;??
  • ????}??
  • ???
  • ??//釋放各個緩沖區??
  • ????cvFree(?&Econt?);??
  • ????cvFree(?&Ecurv?);??
  • ????cvFree(?&Eimg?);??
  • ????cvFree(?&E?);??
  • ???
  • ????if(?scheme?==?_CV_SNAKE_GRAD?)??
  • ????{??
  • ????????cvFree(?&gradient?);??
  • ????????cvFree(?&map?);??
  • ????}??
  • ????return?CV_OK;??
  • }??
  • ???
  • ???
  • CV_IMPL?void??
  • cvSnakeImage(?const?IplImage*?src,?CvPoint*?points,??
  • ??????????????int?length,?float?*alpha,??
  • ??????????????float?*beta,?float?*gamma,??
  • ??????????????int?coeffUsage,?CvSize?win,??
  • ??????????????CvTermCriteria?criteria,?int?calcGradient?)??
  • {??
  • ???
  • ????CV_FUNCNAME(?"cvSnakeImage"?);??
  • ???
  • ????__BEGIN__;??
  • ???
  • ????uchar?*data;??
  • ????CvSize?size;??
  • ????int?step;??
  • ???
  • ????if(?src->nChannels?!=?1?)??
  • ????????CV_ERROR(?CV_BadNumChannels,?"input?image?has?more?than?one?channel"?);??
  • ???
  • ????if(?src->depth?!=?IPL_DEPTH_8U?)??
  • ????????CV_ERROR(?CV_BadDepth,?cvUnsupportedFormat?);??
  • ???
  • ????cvGetRawData(?src,?&data,?&step,?&size?);??
  • ???
  • ????IPPI_CALL(?icvSnake8uC1R(?data,?step,?size,?points,?length,??
  • ??????????????????????????????alpha,?beta,?gamma,?coeffUsage,?win,?criteria,??
  • ??????????????????????????????calcGradient???_CV_SNAKE_GRAD?:?_CV_SNAKE_IMAGE?));??
  • ????__END__;??
  • }??
  • ???
  • /*?end?of?file?*/??
  • ???
  • ???
  • ???
  • ???
  • ???
  • 測試應用程序??
  • ???
  • #include?"stdafx.h"??
  • #include?<iostream>??
  • #include?<string.h>??
  • #include?<cxcore.h>??
  • #include?<cv.h>??
  • #include?<highgui.h>??
  • #include?<fstream>??
  • ???
  • ???
  • IplImage?*image?=?0?;?//原始圖像??
  • IplImage?*image2?=?0?;?//原始圖像copy??
  • ???
  • using?namespace?std;??
  • int?Thresholdness?=?141;??
  • int?ialpha?=?20;??
  • int?ibeta=20;??
  • int?igamma=20;??
  • ???
  • void?onChange(int?pos)??
  • {??
  • ?????
  • ????if(image2)?cvReleaseImage(&image2);??
  • ????if(image)?cvReleaseImage(&image);??
  • ???
  • ????image2?=?cvLoadImage("grey.bmp",1);?//顯示圖片??
  • ????image=?cvLoadImage("grey.bmp",0);??
  • ???
  • ????cvThreshold(image,image,Thresholdness,255,CV_THRESH_BINARY);?//分割域值?????
  • ???
  • ????CvMemStorage*?storage?=?cvCreateMemStorage(0);??
  • ????CvSeq*?contours?=?0;??
  • ???
  • ????cvFindContours(?image,?storage,?&contours,?sizeof(CvContour),?//尋找初始化輪廓??
  • ????????CV_RETR_EXTERNAL?,?CV_CHAIN_APPROX_SIMPLE?);??
  • ???
  • ????if(!contours)?return?;??
  • ????int?length?=?contours->total;?????
  • ????if(length<10)?return?;??
  • ????CvPoint*?point?=?new?CvPoint[length];?//分配輪廓點??
  • ???
  • ????CvSeqReader?reader;??
  • ????CvPoint?pt=?cvPoint(0,0);;?????
  • ????CvSeq?*contour2=contours;?????
  • ???
  • ????cvStartReadSeq(contour2,?&reader);??
  • ????for?(int?i?=?0;?i?<?length;?i++)??
  • ????{??
  • ????????CV_READ_SEQ_ELEM(pt,?reader);??
  • ????????point[i]=pt;??
  • ????}??
  • ????cvReleaseMemStorage(&storage);??
  • ???
  • ????//顯示輪廓曲線??
  • ????for(int?i=0;i<length;i++)??
  • ????{??
  • ????????int?j?=?(i+1)%length;??
  • ????????cvLine(?image2,?point[i],point[j],CV_RGB(?0,?0,?255?),1,8,0?);??
  • ????}??
  • ???
  • ????float?alpha=ialpha/100.0f;??
  • ????float?beta=ibeta/100.0f;??
  • ????float?gamma=igamma/100.0f;??
  • ???
  • ????CvSize?size;??
  • ????size.width=3;??
  • ????size.height=3;??
  • ????CvTermCriteria?criteria;??
  • ????criteria.type=CV_TERMCRIT_ITER;??
  • ????criteria.max_iter=1000;??
  • ????criteria.epsilon=0.1;??
  • ????cvSnakeImage(?image,?point,length,&alpha,&beta,&gamma,CV_VALUE,size,criteria,0?);??
  • ???
  • ????//顯示曲線??
  • ????for(int?i=0;i<length;i++)??
  • ????{??
  • ????????int?j?=?(i+1)%length;??
  • ????????cvLine(?image2,?point[i],point[j],CV_RGB(?0,?255,?0?),1,8,0?);??
  • ????}??
  • ????delete?[]point;??
  • ???
  • }??
  • ???
  • int?main(int?argc,?char*?argv[])??
  • {??
  • ???
  • ?????
  • ????cvNamedWindow("win1",0);??
  • ????cvCreateTrackbar("Thd",?"win1",?&Thresholdness,?255,?onChange);??
  • ????cvCreateTrackbar("alpha",?"win1",?&ialpha,?100,?onChange);??
  • ????cvCreateTrackbar("beta",?"win1",?&ibeta,?100,?onChange);??
  • ????cvCreateTrackbar("gamma",?"win1",?&igamma,?100,?onChange);??
  • ????cvResizeWindow("win1",300,500);??
  • ????onChange(0);??
  • ???
  • ????for(;;)??
  • ????{??
  • ????????if(cvWaitKey(40)==27)?break;??
  • ????????cvShowImage("win1",image2);??
  • ????}??
  • ?????
  • ????return?0;??
  • }?
  • ?

    ?

    ?

    本文由以下兩篇博客整理得到:

    http://blog.csdn.net/lbd2008/article/details/7180506

    http://chyyeng.blog.163.com/blog/static/16918230201272724529214/

    總結

    以上是生活随笔為你收集整理的主动轮廓线模型Snake模型简介openCV中cvSnakeImage()函数代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    99福利片| 国产精品观看视频 | 精品国产伦一区二区三区观看方式 | 亚洲欧美va | 久久在线影院 | 日韩毛片在线播放 | av午夜电影 | 亚洲高清在线 | 狠狠狠狠狠狠 | 日韩欧美一区二区在线观看 | 亚洲成人动漫在线观看 | 婷婷丁香在线视频 | 超碰在线98| 夜夜骑天天操 | 美国三级黄色大片 | 亚洲精品久久久蜜臀下载官网 | 狠狠干网址 | 国产黄色精品 | 亚洲美女精品 | 欧美a性| 青青河边草免费视频 | 久久综合干| 十八岁以下禁止观看的1000个网站 | 久久av观看| 中文字幕 成人 | 国产永久免费观看 | 国产1区2区3区精品美女 | 丁香花在线视频观看免费 | 夜夜爽夜夜操 | 日韩欧美视频免费在线观看 | 国产中文字幕在线视频 | 亚洲aⅴ乱码精品成人区 | 国产亚洲精品综合一区91 | 视频一区亚洲 | 91亚瑟视频 | 最近高清中文在线字幕在线观看 | h视频在线看 | 综合色站| 久久综合色综合88 | 99视频精品视频高清免费 | 天天天插 | 黄色成人免费电影 | 日女人电影 | 日韩一区二区在线免费观看 | 在线免费观看麻豆视频 | 伊人影院99 | 色中文字幕在线观看 | 玖玖色在线观看 | 国产精品久久久久久久久久久免费 | 成人在线视频免费观看 | 国产精品久久久久久a | 亚洲色综合| 国产在线精品播放 | 亚洲国产精品一区二区久久hs | 亚洲视频1区2区 | 国产区精品在线观看 | 亚洲最大av网站 | 右手影院亚洲欧美 | 91亚洲精品乱码久久久久久蜜桃 | 五月视频 | 久久精品欧美一区 | 99久久www免费 | 久久久久国产精品免费 | 亚洲传媒在线 | 亚洲v精品 | 色www免费视频 | 911精品美国片911久久久 | 久日精品 | 成人高清在线 | 欧美日韩不卡在线 | 国产亚洲精品中文字幕 | av在线电影网站 | 国产中文字幕在线视频 | 久久久久国产精品一区二区 | 欧美一级黄色网 | 久久不卡国产精品一区二区 | 九九免费在线观看视频 | 国产不卡高清 | 九九久久影视 | 亚洲精品视频在线观看网站 | 日本99久久 | 天天草天天干天天射 | 精品久久久亚洲 | 精品国产一区二区三区四区在线观看 | 日韩在线观看视频在线 | 香蕉视频在线免费看 | 亚洲免费观看在线视频 | 91久久国产露脸精品国产闺蜜 | 天天色天天射天天干 | 美女免费黄网站 | 亚洲视频电影在线 | 日日干激情五月 | 天天射天天 | 久久人人艹 | 中文字幕丝袜制服 | 五月丁婷婷 | 天天伊人网 | 婷婷伊人五月天 | 亚洲专区欧美专区 | 成人精品电影 | 中文字幕91| 欧美激情精品 | 免费成视频 | 欧美福利视频一区 | 视频一区二区三区视频 | 在线播放 亚洲 | 免费成人在线网站 | 在线免费黄色av | 黄色成人免费电影 | 久久激情五月丁香伊人 | 国产第一页在线观看 | 免费视频二区 | 黄色1级大片 | 日韩欧美一区二区三区黑寡妇 | 久草在线视频看看 | 亚洲最大成人免费网站 | 国产又黄又硬又爽 | 91九色老| 激情久久久久 | 制服丝袜在线 | 亚州激情视频 | 久久99视频精品 | 一区国产精品 | 亚洲精品美女久久17c | 欧洲激情综合 | 深夜福利视频一区二区 | 一区二区三区四区五区在线 | 日日弄天天弄美女bbbb | 99福利片| 一区二区三区视频网站 | 久久久精品国产免费观看一区二区 | 日韩av图片 | 天天综合天天综合 | 国模视频一区二区三区 | 亚洲精品动漫成人3d无尽在线 | 特级黄色片免费看 | 国产一二三四在线视频 | 成年人免费看的视频 | 久久一级片| 色在线免费观看 | 五月天婷婷视频 | 91在线免费视频观看 | 五月开心网 | 欧美色一色 | 国产精品免费大片视频 | 成人免费毛片aaaaaa片 | 亚洲另类久久 | 亚洲国产精品va在线看黑人动漫 | 成人av一区二区兰花在线播放 | 成人国产精品一区二区 | 免费观看黄 | 国产视频久久久 | 香蕉影视app | 欧美日韩久 | 欧美99精品 | 欧美日韩午夜爽爽 | 欧美一级免费黄色片 | www.亚洲黄 | 欧美日韩成人 | 亚洲精品www久久久 www国产精品com | 日韩在线电影 | www.com久久久| 国产成人久久精品77777综合 | 国产精品永久在线 | 五月天综合 | 在线精品视频免费观看 | 免费三级骚 | 亚洲三级网站 | www.夜夜爽| 九九影视理伦片 | 亚洲精品黄色 | 超碰97人人射妻 | 成人蜜桃网 | 天天爽综合网 | 美女久久久久久久久久久 | 国产午夜麻豆影院在线观看 | 天天天天色射综合 | 成全免费观看视频 | 日韩黄色中文字幕 | 色婷婷久久| 中文字幕在线视频一区二区三区 | 国产手机在线 | 日日爽天天操 | 免费无遮挡动漫网站 | 亚洲春色成人 | 免费高清在线一区 | www.99热精品 | 天堂资源在线观看视频 | 国产69久久精品成人看 | 精品国产精品久久 | 日日爽 | 婷婷播播网 | 成人动漫一区二区 | 国产精品视频永久免费播放 | 欧美日韩国产精品一区二区三区 | 国产日产高清dvd碟片 | 九九热精品在线 | 日韩黄色免费在线观看 | 亚洲精品综合一二三区在线观看 | 日韩精品无 | 日本性生活免费看 | 99r在线精品 | 国产色婷婷| 97香蕉久久国产在线观看 | 成人91在线| 中文字幕黄色av | 伊人天天综合 | 亚洲福利精品 | 午夜日b视频 | 色欲综合视频天天天 | 久久国产精品99久久久久久进口 | 亚洲电影在线看 | 91精品免费看 | 免费成人在线电影 | 成人a级免费视频 | 91综合视频在线观看 | 亚洲天天摸日日摸天天欢 | 中文字幕在线看片 | 伊人婷婷网 | 久久国产成人午夜av影院潦草 | 精品美女久久久久久免费 | 麻豆一精品传二传媒短视频 | av高清不卡 | 三级黄色在线观看 | 日韩成人看片 | 91九色视频网站 | 国产美女网站视频 | 三级黄色片子 | 99精品在线观看 | www.在线观看视频 | 成人aaa毛片 | 成人国产精品一区 | 日日天天av| 中文国产字幕在线观看 | 91激情 | 高清免费在线视频 | 香蕉网址| 亚洲精品乱码白浆高清久久久久久 | 欧美亚洲免费在线一区 | 99在线视频播放 | 欧美精品久久天天躁 | 国产精品永久免费在线 | 美女精品国产 | 在线观看中文字幕一区二区 | 91日韩国产 | 天天看天天干天天操 | 97精品国产97久久久久久免费 | 国产精品久久久久一区二区国产 | 亚洲精品乱码久久久久久蜜桃欧美 | 91在线欧美| 亚洲一区二区精品在线 | 9在线观看免费高清完整版在线观看明 | 日韩理论视频 | 亚洲无线视频 | 亚洲视频在线免费观看 | 日韩大片在线免费观看 | 久久激情日本aⅴ | 九九九九九精品 | 97在线免费 | 伊人中文字幕在线 | 五月天久久狠狠 | 欧美日韩久久不卡 | 成人av电影在线观看 | 99久高清在线观看视频99精品热在线观看视频 | 91禁在线看 | 在线电影av | 日产乱码一二三区别在线 | 国产三级香港三韩国三级 | 狠狠插狠狠干 | 操操操日日 | 日日天天 | 国产精品 中文字幕 亚洲 欧美 | 欧美韩国日本在线观看 | 国产特级毛片aaaaaaa高清 | 国产亚洲视频在线免费观看 | 中文字幕在线视频一区二区 | 亚洲日本精品视频 | 日日综合 | 国产视频一级 | 看片一区二区三区 | 国产一级视屏 | 成年人免费在线观看网站 | 1024手机在线看 | 蜜桃麻豆www久久囤产精品 | 婷婷色站| 97色涩| 视频一区亚洲 | 波多野结衣最新 | 日批视频在线观看免费 | 日韩在线观看小视频 | 九九免费精品 | 亚洲一级性 | 一级黄色在线视频 | 色就色,综合激情 | 久草在线99 | 91av视频导航| 久久电影国产免费久久电影 | 国产一区二区三区免费在线观看 | 91视频在线观看下载 | 狠狠狠狠狠狠狠狠干 | 91亚洲精品久久久蜜桃网站 | 激情欧美国产 | 国产午夜精品一区二区三区在线观看 | 一本一本久久a久久精品综合妖精 | 激情av在线资源 | 伊人五月综合 | 一区二区三区四区五区六区 | 国产福利小视频在线 | 欧美日韩在线第一页 | 欧美日韩国语 | 婷色在线| 久草在| 久久久国产精品久久久 | 麻豆视频在线看 | 色av婷婷 | 视频1区2区 | 在线看黄网站 | 香蕉视频亚洲 | 久久不卡国产精品一区二区 | 久久综合在线 | 丁香 婷婷 激情 | 2017狠狠干 | 天堂麻豆 | 一级淫片在线观看 | 99久久精品无码一区二区毛片 | 久草免费在线视频观看 | 中文字幕在线看视频国产中文版 | 97福利在线 | 久久久国产精品人人片99精片欧美一 | www.黄色 | 婷婷六月天丁香 | 正在播放国产91 | 日韩va在线观看 | 黄色软件在线看 | 狠狠干夜夜 | 久久99亚洲精品久久 | 国产精品欧美一区二区三区不卡 | 国产精品成人国产乱 | 欧美中文字幕第一页 | 人操人| se婷婷| 91夫妻自拍 | 国产免费久久久久 | 久久精品久久久久久久 | 四虎影视成人永久免费观看视频 | 99r在线观看 | 国产精品成人aaaaa网站 | 国产在线观看99 | 欧美一级在线观看视频 | 亚洲成av人片一区二区梦乃 | 亚洲成人欧美 | 96视频免费在线观看 | 色吊丝在线永久观看最新版本 | 四虎国产免费 | 免费看片日韩 | 亚洲永久精品在线观看 | 一级欧美日韩 | 国内精品毛片 | 成人网看片| 国产成人av网站 | 久久全国免费视频 | 中文字幕亚洲精品日韩 | 射九九 | 国产午夜一级毛片 | 国产精品一区久久久久 | 日本爱爱免费视频 | av在线超碰 | 亚洲专区视频在线观看 | 狠狠色丁香婷婷综合久久片 | 午夜性色 | 欧美极品在线播放 | 91中文在线观看 | www.久久久久| 97精品国产97久久久久久久久久久久 | 国产高清免费在线观看 | 国产又粗又猛又爽 | 综合影视 | 国产视频色| 91av免费观看 | 精品国产免费久久 | 狠狠操影视 | 欧美激情一区不卡 | jizz999| 国产视频综合在线 | 久草视频中文在线 | 99久久国产免费免费 | av资源在线看 | 97在线精品视频 | 婷婷精品国产一区二区三区日韩 | 92精品国产成人观看免费 | 午夜精品久久久久久久99 | 国产精品成人久久久 | 五月天婷婷丁香花 | 欧美一区在线看 | 在线观av| 亚洲资源视频 | 亚洲乱码国产乱码精品天美传媒 | av在线观 | 人人玩人人添人人澡97 | 久久久免费 | 国产91精品久久久久 | 一级成人网 | 亚洲黄色免费在线 | 黄色小网站免费看 | 97人人爽人人| 国产精品99免视看9 国产精品毛片一区视频 | 久久精品国产精品亚洲精品 | 免费高清在线观看电视网站 | 日韩毛片在线播放 | 国产高清专区 | 精品视频成人 | 国产福利91精品一区二区三区 | 日本精品久久久久 | 开心激情五月网 | 国产精品一区二区在线 | 在线免费观看欧美日韩 | 日韩欧美观看 | 美女精品久久久 | av片在线观看免费 | 国产一区黄色 | 国产一级h| 久久在线精品 | 天堂av免费| 国产综合香蕉五月婷在线 | 免费网址你懂的 | 久久综合激情 | 深爱激情五月综合 | 色婷婷综合成人av | 白丝av在线| 一本一道波多野毛片中文在线 | 久久久夜色 | 久久夜靖品| 女人高潮一级片 | 在线超碰av| 免费看污网站 | 嫩嫩影院理论片 | 国内精品小视频 | 狠狠操狠狠干天天操 | 亚洲日本在线一区 | 精品一区二区日韩 | 日日麻批40分钟视频免费观看 | 在线视频精品播放 | 色综合久久久久久久 | 国产69精品久久99不卡的观看体验 | 日韩免费网址 | 国产韩国精品一区二区三区 | 久久亚洲综合国产精品99麻豆的功能介绍 | 精品一区二区久久久久久久网站 | 久久国色夜色精品国产 | 久久在线看| 超碰在线97观看 | 欧日韩在线 | 久久在线精品视频 | 国模视频一区二区 | 六月激情丁香 | 国产精品成人在线观看 | 黄色精品国产 | 亚洲精品国精品久久99热一 | 66av99精品福利视频在线 | 日韩aa视频 | 91精品国产高清自在线观看 | 国产 视频 高清 免费 | 午夜精品福利在线 | 首页中文字幕 | 国产黄色片免费在线观看 | 日日夜av| 三级黄色免费 | 亚洲午夜激情网 | 中文字幕第一页av | 97国产| 中文字幕一区二区在线观看 | 日本中文不卡 | 91亚洲国产成人久久精品网站 | 成人18视频| 欧洲亚洲国产视频 | а天堂中文最新一区二区三区 | 国产精品私人影院 | 日韩中文字幕视频在线 | 中文字幕成人 | 精品在线视频一区 | 亚洲情感电影大片 | 伊人热| 国内精品久久久久久久97牛牛 | 国产精品热| 97久久久免费福利网址 | 精品高清美女精品国产区 | 日韩激情av在线 | 久久理论视频 | 精品a级片 | 中文字幕 国产视频 | 日韩91在线| 精品久久一 | 日本黄色一级电影 | 97超视频免费观看 | 99精品免费久久久久久久久 | 国产亚洲精品bv在线观看 | 国语精品久久 | 精品一区二区电影 | 国产91精品欧美 | 激情五月婷婷激情 | 一区二区三区动漫 | 日韩高清精品一区二区 | 夜夜婷婷 | 黄色大片视频网站 | 国产成人三级在线 | 亚洲小视频在线 | av大片免费在线观看 | 深爱激情亚洲 | www.久久色.com | 日韩剧| 粉嫩av一区二区三区四区在线观看 | 特级黄色一级 | 国产精品午夜久久 | 狠狠色丁香久久婷婷综合_中 | 精品久久国产精品 | 日日爱视频 | 欧美国产日韩久久 | 99re8这里有精品热视频免费 | 久久综合九色综合97_ 久久久 | 久av在线 | 在线观看免费高清视频大全追剧 | 一级淫片a | 国产成人一区二 | 国产精品成人自产拍在线观看 | 免费91在线观看 | 亚洲区另类春色综合小说 | 成人在线观看av | 中文字幕在线观看视频一区 | 岛国精品一区二区 | 超碰成人av | 99自拍视频在线观看 | 精品视频中文字幕 | 91在线观看高清 | 91精品推荐 | 97在线资源| 激情综合站 | 成人午夜黄色影院 | 色偷偷88欧美精品久久久 | a精品视频 | 日韩精品一区二区三区免费视频观看 | 天天色天天射天天干 | 97av精品| 久久久麻豆 | 黄色av电影网 | 亚洲二区精品 | 手机在线黄色网址 | 国产麻豆精品在线观看 | 国产高清精 | 国产手机视频在线观看 | 久久国产精品一国产精品 | a级黄色片视频 | 久热久草 | 久久久久久久免费看 | 欧美精品一区在线 | 久久视频这里只有精品 | 国产成人99久久亚洲综合精品 | 亚洲传媒在线 | 成人精品国产免费网站 | 色综合天天爱 | 久久久精品一区二区 | 精品亚洲成a人在线观看 | 中文在线a√在线 | 亚洲精品五月天 | 久久国产一区二区 | 久久精彩免费视频 | 人人干人人搞 | 99热.com| 99久久这里只有精品 | 国产精品久久一卡二卡 | 九九热久久久 | 亚洲视频免费在线看 | 久久激情视频 久久 | 91久久精品一区二区三区 | 欧美尹人 | 91热爆视频 | 久久久免费高清视频 | 尤物九九久久国产精品的分类 | 国产精品久久久久久久久久久免费 | 99免费精品视频 | 国产黄大片在线观看 | 日韩国产精品一区 | 亚洲动漫在线观看 | 97超碰人人爱 | 午夜视频在线网站 | 国产在线观看网站 | 国产精品男女啪啪 | 欧美日韩国产高清视频 | 国产人成一区二区三区影院 | 精品成人a区在线观看 | 天天夜操| 国产精品一区二区三区久久 | 9在线观看免费高清完整版在线观看明 | 九九九九九国产 | 国产中文字幕91 | 在线观看电影av | 九九久久在线看 | 99精品国产高清在线观看 | 日本性视频 | 成人永久在线 | 国产视频日韩 | 亚洲韩国一区二区三区 | 国产视频九色蝌蚪 | 成年人免费在线看 | 久久免费播放视频 | 日韩精品一区二区三区免费视频观看 | 国产人成一区二区三区影院 | 免费午夜网站 | 免费在线国产 | 亚洲一区日韩精品 | 久久久激情视频 | 色橹橹欧美在线观看视频高清 | 日韩精品在线视频免费观看 | 国产免费中文字幕 | 亚洲视频观看 | 成人啪啪18免费游戏链接 | 日韩av中文字幕在线 | 久久视了 | 99精品国产成人一区二区 | 五月天久久激情 | 久草视频资源 | 91精选 | 午夜视频黄 | 国产亚洲精品成人av久久影院 | 韩国av一区二区三区 | 日日摸日日添日日躁av | 精品视频免费播放 | 在线免费观看视频一区二区三区 | 最新av免费在线观看 | 久久综合色综合88 | 亚洲一级片在线观看 | 国产精品扒开做爽爽的视频 | 美女久久99| 激情av一区二区 | 久久免费黄色网址 | 久久在线一区 | 久草免费在线观看 | 日本三级中文字幕在线观看 | 午夜婷婷在线观看 | 色偷偷88欧美精品久久久 | 日本视频久久久 | 99久高清在线观看视频99精品热在线观看视频 | 一区二区激情视频 | 美女精品在线 | 日本在线观看一区二区 | 日本精品久久 | 国产美女被啪进深处喷白浆视频 | 国产免费国产 | 中文字幕乱在线伦视频中文字幕乱码在线 | 麻豆视频在线观看免费 | 99久久精品免费 | 久热精品国产 | 婷婷久久亚洲 | 日本成人中文字幕在线观看 | 99在线国产 | 5月丁香婷婷综合 | 最新av电影网址 | 91资源在线免费观看 | 亚洲天堂首页 | a'aaa级片在线观看 | 久久视频热| 99在线视频免费观看 | 欧美精品国产综合久久 | 久久五月精品 | 婷婷狠狠操 | 国产精品美女免费 | 婷婷在线色| 日韩激情中文字幕 | 中文字幕亚洲在线观看 | 国内三级在线观看 | 91色欧美| 国产精品久久久久久久久久 | 久久久免费电影 | 久久久国产精品人人片99精片欧美一 | 婷色在线| 婷婷久久国产 | 国产精品观看 | 不卡视频在线看 | 天堂视频一区 | 国产资源| 91av在线免费看 | 国产精品久99 | 精品国产乱码久久久久久天美 | 在线观看久久 | 99久久精品国产观看 | 亚洲午夜精品久久久 | 国产二区视频在线观看 | 国产精品美女久久 | 最新av免费在线 | 成人久久18免费网站 | 久久精品国产v日韩v亚洲 | 欧美色综合久久 | 国产精品免费一区二区三区 | 视频在线99re| 在线观看免费版高清版 | 五月天婷婷在线视频 | 久久人视频| 国产精品久久久久一区二区国产 | 国产精品久久网站 | 欧美日韩国产精品一区二区三区 | 免费av高清| 亚洲成人高清在线 | 91精品第一页 | 久久手机视频 | 久久久久久久久久免费 | 日韩视频一区二区三区在线播放免费观看 | 久久tv | 99国产精品一区二区 | 天天干,天天射,天天操,天天摸 | 一级全黄毛片 | 天天色婷婷 | 日本久久免费电影 | 久久久久久久久久久福利 | 五月婷婷毛片 | 成 人 黄 色 视频免费播放 | 中文av资源站 | 色综合婷婷久久 | 亚洲精品在线视频 | 亚洲精品在线观看不卡 | 久久久久久久久久免费视频 | 国产一级性生活 | 丁香色综合 | 国产免费黄色 | av女优中文字幕在线观看 | 丰满少妇一级 | 黄a网站 | 国产精品国内免费一区二区三区 | 天天干天天看 | 在线观看一区 | 中文字幕在线观看国产 | 天天操福利视频 | 久久国产精品精品国产色婷婷 | 国产一区成人在线 | 国产精品毛片久久久久久久久久99999999 | 伊人五月天.com | 亚洲一区 av| 久久久久综合网 | 一级全黄毛片 | 久久五月婷婷丁香 | 美女久久 | 岛国片在线| 四虎www com | 81国产精品久久久久久久久久 | 精品一二三区视频 | 亚州视频在线 | 高清av免费看 | 在线视频免费观看 | 久久人人精品 | 99色免费视频 | 欧美日韩免费观看一区二区三区 | 玖玖视频精品 | 美女视频一区 | 国产黄色资源 | 国产高清久久久久 | 国产精品99在线播放 | 精品二区久久 | 久久久久久久99 | 国产精品久久久久久久久软件 | 日本黄色免费在线观看 | 四虎4hu永久免费 | 日韩在线观看a | 日韩伦理片hd | 一区二区三区在线观看 | 激情久久久久久久久久久久久久久久 | 国产久视频 | 午夜精品福利在线 | 狠狠狠狠狠狠操 | 99久久精品国产一区二区三区 | 色橹橹欧美在线观看视频高清 | 国产综合片 | 缴情综合网五月天 | 亚洲国产资源 | 亚洲精品tv| 国产精品美女久久久久aⅴ 干干夜夜 | 草久久av| 欧美一级视频免费 | 国产一在线精品一区在线观看 | 成人av中文字幕在线观看 | 最近中文字幕高清字幕在线视频 | 丁香六月伊人 | 激情欧美xxxx| 干干日日 | 欧美成人日韩 | www.五月激情.com| 亚洲国产成人精品在线 | 国产精品va在线播放 | 欧美视频国产视频 | 欧美日韩中文在线 | 不卡的av在线播放 | 精品国产欧美一区二区三区不卡 | 久久久久亚洲国产精品 | 中文字幕在线看片 | 黄色片网站大全 | 中文字幕在线观看第一页 | 亚洲精品美女久久久久网站 | www.亚洲激情.com | 亚洲综合导航 | 操高跟美女 | 久久久国产精品人人片99精片欧美一 | 天天干国产| 蜜桃av久久久亚洲精品 | 国产精品免费一区二区三区在线观看 | 久综合网 | 国产资源站| 久久96国产精品久久99漫画 | 天天干天天看 | 国产区免费 | japanesexxxhd奶水 91在线精品一区二区 | 国产日韩欧美综合在线 | 欧美午夜理伦三级在线观看 | 黄色午夜 | 日韩av不卡在线播放 | 国产剧在线观看片 | 精品久久久久久久久久久久久久久久 | 成人av电影在线播放 | 中文超碰字幕 | 精品免费国产一区二区三区四区 | 国产一级二级三级视频 | 亚洲精品在线资源 | 成年一级片 | 成人午夜电影网 | 精品久久久一区二区 | 亚洲成人av在线 | 99国产精品| 免费成人在线观看视频 | 婷婷激情5月天 | 国产一在线精品一区在线观看 | 97精品国产一二三产区 | 国产精品久久久久影视 | 午夜视频免费在线观看 | 97人人模人人爽人人少妇 | 国产精品18久久久久久久久 | 国产黄色片久久久 | 婷婷丁香社区 | 天天操狠狠操夜夜操 | 国产又粗又长又硬免费视频 | 亚洲精品字幕 | 精品1区2区3区 | 久久久久国产视频 | 在线观看国产一区二区 | 91九色蝌蚪视频在线 | 精品三级av| 国产精品成人aaaaa网站 | 婷婷中文字幕 | 国产在线观看一 | 亚洲精品女人久久久 | 精品一区精品二区高清 | av播放在线 | 久草在线一免费新视频 | 中文字幕在线一区二区三区 | 欧美先锋影音 | 开心激情五月网 | 亚洲成人免费在线观看 | 热久久视久久精品18亚洲精品 | 91xav| 婷婷激情5月天 | 精品在线你懂的 | 久久久久免费看 | 中文字幕一区二区三区久久蜜桃 | 中国一级特黄毛片大片久久 | 久色伊人 | 亚洲国产中文字幕在线观看 | 天堂av在线网站 | 国产小视频免费在线网址 | 日韩免费一区二区在线观看 | avhd高清在线谜片 | 国产一区在线播放 | 国产精品初高中精品久久 | 欧美视频网址 | 精品美女视频 | 国产一区在线不卡 | 人成电影网 | 欧美a级免费视频 | 亚洲欧洲国产日韩精品 | 中文字幕日本特黄aa毛片 | 亚洲精品在线一区二区 | 黄色大全免费网站 | 日韩免费一级电影 | 亚洲成人av在线电影 | 国内精品久久久久久 | 四虎国产免费 | 97国产大学生情侣白嫩酒店 | 美女精品在线 | 在线视频免费观看 | 在线观看中文字幕 | 超碰人在线 | 国产精品大片免费观看 | 99在线精品视频在线观看 | 久久国产精品99久久久久久丝袜 | 国产午夜精品福利视频 | 五月天久久 | 91精品久| www91在线 | 久草网首页 | 久久国产精品免费看 | 97高清视频| 亚州欧美精品 | 久久婷婷一区 | 国产97碰免费视频 | 天天爽天天爽天天爽 | 日本黄色免费播放 | 亚洲国产97在线精品一区 | av免费电影网站 | 久久国产精品偷 | 久草视频在线免费看 | 91网免费观看 | 日韩电影一区二区三区 | 国产成人精品av在线 | 黄色小网站在线 | 在线观看中文字幕一区二区 | 亚洲人视频在线 | 国产一区二区成人 | 国产成人精品999在线观看 | 中文字幕有码在线观看 | 中文字幕亚洲在线观看 | 狠狠狠色丁香婷婷综合激情 | 精品久久福利 | 91精品久久久久久久久久入口 | 久久不射网站 | 一区二区电影在线观看 | 久久国产精品电影 | 日韩欧美视频在线 | 99久久精品免费看国产 | 九九九九免费视频 | 欧美经典久久 | 一区二区激情视频 | 天天插夜夜操 | 中国一级片在线观看 | 国产精品九九九 | 国产精品美女www爽爽爽视频 | 欧美性久久久 | 久久久久久伊人 | 色网站在线| 又色又爽又黄 | 岛国一区在线 | 国产精品欧美一区二区 | 久久亚洲专区 | 久久久精品综合 | 在线看中文字幕 | 91久久久久久久一区二区 | 中文字幕久久网 | 免费一级特黄毛大片 | 日韩精品免费在线观看视频 | 久艹视频在线免费观看 | 久久国产热 | 亚洲精品久久久久999中文字幕 | 亚洲激情综合网 | 99精品久久久 | 亚洲一区免费在线 | 一区二区精品在线观看 | 青青河边草免费 | 99精品电影 | 在线观看成人毛片 | 欧美极品少妇xxxx | www五月| 97超碰网 | 狠狠操狠狠干天天操 | 视频在线观看亚洲 | 精品国产免费人成在线观看 | 免费在线观看黄色网 | 一区免费视频 | av成人亚洲| 少妇性aaaaaaaaa视频 | 免费黄色在线网站 | 狠狠狠色丁香综合久久天下网 | 成人免费视频网站 | 亚洲香蕉在线观看 | 激情综合国产 | 二区三区av | 久久久国产精品一区二区三区 | 一本一道久久a久久精品 | 久久久精品国产免费观看同学 | 17videosex性欧美 | 五月天久久综合网 | 成人午夜电影在线 | 区一区二在线 | 国产91精品一区二区绿帽 | 五月婷影院 | 国产一级淫片免费看 | 99热最新地址 | 欧美最猛性xxxx | 黄色特级片 | av在线网站大全 | 蜜臀91丨九色丨蝌蚪老版 | 香蕉网在线 | 粉嫩av一区二区三区四区 | 嫩草91影院| 另类老妇性bbwbbw高清 | 国产精品麻豆一区二区三区 | 成人av在线直播 | 国产专区视频在线观看 | 久久久久亚洲精品 | 国产黄色片免费观看 | 国产精品一区久久久久 | 久久久精品视频网站 | 中国黄色一级大片 | 国产一级二级av | 成人福利在线 | www91在线观看 |