在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

真實場景的雙目立體匹配獲取深度圖詳解

新機器視覺 ? 來源:博客園 ? 作者:一度逍遙 ? 2020-08-28 15:26 ? 次閱讀

雙目立體匹配一直是雙目視覺的研究熱點,雙目相機拍攝同一場景的左、右兩幅視點圖像,運用立體匹配匹配算法獲取視差圖,進而獲取深度圖。而深度圖的應用范圍非常廣泛,由于其能夠記錄場景中物體距離攝像機的距離,可以用以測量、三維重建、以及虛擬視點的合成等。

之前有兩篇博客簡要講過OpenCV3.4中的兩種立體匹配算法效果比較。以及利用視差圖合成新視點。里面用到的匹配圖像對是OpenCV自帶校正好的圖像對。而目前大多數立體匹配算法使用的都是標準測試平臺提供的標準圖像對,比如著名的有如下兩個:
MiddleBury

KITTI

但是對于想自己嘗試拍攝雙目圖片進行立體匹配獲取深度圖,進行三維重建等操作的童鞋來講,要做的工作是比使用校正好的標準測試圖像對要多的。因此博主覺得有必要從用雙目相機拍攝圖像開始,捋一捋這整個流程。

主要分四個部分講解:

攝像機標定(包括內參和外參)

雙目圖像的校正(包括畸變校正和立體校正)

立體匹配算法獲取視差圖,以及深度圖

利用視差圖,或者深度圖進行虛擬視點的合成

注:如果沒有雙目相機,可以使用單個相機平行移動拍攝,外參可以通過攝像機自標定算出。我用自己的手機拍攝,拍攝移動時盡量保證平行移動。

一、攝像機標定

1.內參標定

攝像機內參反映的是攝像機坐標系到圖像坐標系之間的投影關系。攝像機內參的標定使用張正友標定法,簡單易操作,具體原理請拜讀張正友的大作《A Flexible New Technique for Camera Calibration》。當然網上也會有很多資料可供查閱,MATLAB 有專門的攝像機標定工具包,OpenCV封裝好的攝像機標定API等。使用OpenCV進行攝像機標定的可以參考我的第一篇博客:http://www.cnblogs.com/riddick/p/6696858.html。里面提供有張正友標定法OpenCV實現的源代碼git地址,僅供參考。

攝像機的內參包括,fx, fy, cx, cy,以及畸變系數[k1,k2,p1,p2,k3],詳細就不贅述。我用手機對著電腦拍攝各個角度的棋盤格圖像,棋盤格圖像如圖所示:

使用OpenCV3.4+VS2015對手機進行內參標定。標定結果如下,手機鏡頭不是魚眼鏡頭,因此使用普通相機模型標定即可:

圖像分辨率為:3968 x 2976。上面標定結果順序依次為fx, fy, cx, cy, k1, k2, p1, p2, k3, 保存到文件中供后續使用。

2.外參標定

攝像機外參反映的是攝像機坐標系和世界坐標系之間的旋轉R和平移T關系。如果兩個相機的內參均已知,并且知道各自與世界坐標系之間的R1、T1和R2,T2,就可以算出這兩個相機之間的Rotation和Translation,也就找到了從一個相機坐標系到另一個相機坐標系之間的位置轉換關系。攝像機外參標定也可以使用標定板,只是保證左、右兩個相機同時拍攝同一個標定板的圖像。外參一旦標定好,兩個相機的結構就要保持固定,否則外參就會發生變化,需要重新進行外參標定。

那么手機怎么保證拍攝同一個標定板圖像并能夠保持相對位置不變,這個是很難做到的,因為后續用來拍攝實際測試圖像時,手機的位置肯定會發生變化。因此我使用外參自標定的方法,在拍攝實際場景的兩張圖像時,進行攝像機的外參自標定,從而獲取當時兩個攝像機位置之間的Rotation和Translation。

比如:我拍攝這樣兩幅圖像,以后用來進行立體匹配和虛擬視點合成的實驗。

① 利用攝像機內參進行畸變校正,手機的畸變程度都很小,校正后的兩幅圖如下:

② 將上面兩幅畸變校正后的圖作為輸入,使用OpenCV中的光流法提取匹配特征點對,pts1和pts2,在圖像中畫出如下:

③ 利用特征點對pts1和pts2,以及內參矩陣camK,解算出本質矩陣E:

cv::Mat E = cv::findEssentialMat(tmpPts1, tmpPts2,camK, CV_RANSAC);

④ 利用本質矩陣E解算出兩個攝像機之間的Rotation和Translation,也就是兩個攝像機之間的外參。以下是OpenCV中API函數實現的,具體請參見API文檔:

cv::Mat R1, R2; cv::decomposeEssentialMat(E, R1, R2, t); R = R1.clone(); t = -t.clone();

二、雙目圖像的校正

1. 畸變校正

畸變校正前面已經介紹過,利用畸變系數進行畸變校正即可,下面說一下立體校正。

2. 立體校正

① 得到兩個攝像機之間的 Rotation和Translation之后,要用下面的API對兩幅圖像進行立體對極線校正,這就需要算出兩個相機做對極線校正需要的R和T,用R1,T1, R2, T2表示,以及透視投影矩陣P1,P2:

cv::stereoRectify(camK, D, camK, D, imgL.size(), R, -R*t,R1, R2, P1, P2, Q);

② 得到上述參數后,就可以使用下面的API進行對極線校正操作了,并將校正結果保存到本地:

cv::Rect(0, 0, 3, 3)),D, R1, P1(cv::Rect(0, 0, 3, 3)), imgL.size(), CV_32FC1,mapx, mapy);cv::remap(imgL, recImgL, mapx, mapy, CV_INTER_LINEAR); cv::imwrite("data/recConyL.png", recImgL); cv::Rect(0, 0, 3, 3)),D, R2, P2(cv::Rect(0, 0, 3, 3)), imgL.size(), CV_32FC1,mapx, mapy);cv::remap(imgR, recImgR, mapx, mapy, CV_INTER_LINEAR); cv::imwrite("data/recConyR.png", recImgR);

對極線校正結果如下所示,查看對極線校正結果是否準確,可以通過觀察若干對應點是否在同一行上粗略估計得出:

三、立體匹配

1. SGBM算法獲取視差圖

立體校正后的左右兩幅圖像得到后,匹配點是在同一行上的,可以使用OpenCV中的BM算法或者SGBM算法計算視差圖。由于SGBM算法的表現要遠遠優于BM算法,因此采用SGBM算法獲取視差圖。SGBM中的參數設置如下:

int numberOfDisparities = ((imgSize.width / 8)+ 15) & -16; cv::Ptr sgbm = cv::create(0, 16, 3); sgbm->setPreFilterCap(32); int SADWindowSize = 9; int sgbmWinSize = SADWindowSize > 0 ? SADWindowSize: 3; sgbm->setBlockSize(sgbmWinSize); int cn = imgL.channels(); sgbm->setP1(8 * cn*sgbmWinSize*sgbmWinSize); sgbm->setP2(32 * cn*sgbmWinSize*sgbmWinSize);sgbm->setMinDisparity(0); sgbm->setNumDisparities(numberOfDisparities);sgbm->setUniquenessRatio(10); sgbm->setSpeckleWindowSize(100); sgbm->setSpeckleRange(32); sgbm->setDisp12MaxDiff(1); int alg = STEREO_SGBM; if (alg == STEREO_HH) sgbm->setMode(cv::MODE_HH); else if (alg == STEREO_SGBM) sgbm->setMode(cv::MODE_SGBM); else if (alg == STEREO_3WAY) sgbm->setMode(cv::MODE_SGBM_3WAY);sgbm->compute(imgL, imgR, disp);

默認計算出的是左視差圖,如果需要計算右視差圖,則將上面加粗的三條語句替換為下面前三條語句。由于視差值計算出來為負值,disp類型為16SC1,因此需要取絕對值,然后保存:

sgbm->setMinDisparity(-numberOfDisparities); sgbm->setNumDisparities(numberOfDisparities); sgbm->compute(imgR, imgL, disp);disp = abs(disp);

SGBM算法得到的左、右視差圖如下,左視差圖的數據類型為CV_16UC1,右視差圖的數據類型為CV_16SC1(SGBM中視差圖中不可靠的視差值設置為最小視差(mindisp-1)*16。因此在此例中,左視差圖中不可靠視差值設置為-16,截斷值為0;右視差圖中不可靠視差值設置為(-numberOfDisparities-1)*16,取絕對值后為(numberOfDisparities+1)*16,所以兩幅圖會有較大差別):

左視差圖(不可靠視差值為0) 右視差圖(不可靠視差值為 (numberOfDisparities+1)*16)

如果將右視差圖不可靠視差值也設置為0,則如下:

至此,左視差圖和右視差圖遙相呼應。

2. 視差圖空洞填充

視差圖中視差值不可靠的視差大多數是由于遮擋引起,或者光照不均勻引起。既然牛逼如SGBM也覺得不可靠,那與其留著做個空洞,倒不如用附近可靠的視差值填充一下。

空洞填充也有很多方法,在這里我檢測出空洞區域,然后用附近可靠視差值的均值進行填充。填充后的視差圖如下:

填充后左視差圖 填充后右視差圖

3. 視差圖轉換為深度圖

視差的單位是像素(pixel),深度的單位往往是毫米(mm)表示。而根據平行雙目視覺的幾何關系(此處不再畫圖推導,很簡單),可以得到下面的視差與深度的轉換公式:

depth = ( f * baseline) / disp

上式中,depth表示深度圖;f表示歸一化的焦距,也就是內參中的fx;baseline是兩個相機光心之間的距離,稱作基線距離;disp是視差值。等式后面的均已知,深度值即可算出。

在上面我們用SGBM算法獲取了視差圖,接下來轉換為深度圖,函數代碼如下:

/* 函數作用:視差圖轉深度圖 輸入: dispMap ----視差圖,8位單通道,CV_8UC1 K ----內參矩陣,float類型 輸出: depthMap ----深度圖,16位無符號單通道,CV_16UC1 */void disp2Depth(cv::Mat dispMap, cv::Mat &depthMap, cv::Mat K) { int type = dispMap.type(); float fx = K.at(0, 0); float fy = K.at(1, 1); float cx = K.at(0, 2); float cy = K.at(1, 2); float baseline = 65; //基線距離65mm if (type == CV_8U) { const float PI = 3.14159265358; int height = dispMap.rows; int width = dispMap.cols; uchar* dispData = (uchar*)dispMap.data; ushort* depthData = (ushort*)depthMap.data; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { int id = i*width + j; if (!dispData[id]) continue; //防止0除depthData[id] = ushort( (float)fx *baseline / ((float)dispData[id]) ); } } } else { cout << "please confirm dispImg's type!" << endl; cv::waitKey(0); } }

注:png的圖像格式可以保存16位無符號精度,即保存范圍為0-65535,如果是mm為單位,則最大能表示約65米的深度,足夠了。

上面代碼中我設置深度圖的精度為CV_16UC1,也就是ushort類型,將baseline設置為65mm,轉換后保存為png格式即可。如果保存為jpg或者bmp等圖像格式,會將數據截斷為0-255。所以保存深度圖,png格式是理想的選擇。(如果不是為了獲取精確的深度圖,可以將baseline設置為1,這樣獲取的是相對深度圖,深度值也是相對的深度值)

轉換后的深度圖如下:

左深度圖 右深度圖

空洞填充后的深度圖,如下:

左深度圖(空洞填充后) 右深度圖(空洞填充后)

視差圖到深度圖完成。

注:視差圖和深度圖中均有計算不正確的點,此文意在介紹整個流程,不特別注重算法的優化,如有大神望不吝賜教。

附:視差圖和深度圖的空洞填充

步驟如下:

① 以視差圖dispImg為例。計算圖像的積分圖integral,并保存對應積分圖中每個積分值處所有累加的像素點個數n(空洞處的像素點不計入n中,因為空洞處像素值為0,對積分值沒有任何作用,反而會平滑圖像)。

② 采用多層次均值濾波。首先以一個較大的初始窗口去做均值濾波(積分圖實現均值濾波就不多做介紹了,可以參考我之前的一篇博客),將大區域的空洞賦值。然后下次濾波時,將窗口尺寸縮小為原來的一半,利用原來的積分圖再次濾波,給較小的空洞賦值(覆蓋原來的值);依次類推,直至窗口大小變為3x3,此時停止濾波,得到最終結果。

③ 多層次濾波考慮的是對于初始較大的空洞區域,需要參考更多的鄰域值,如果采用較小的濾波窗口,不能夠完全填充,而如果全部采用較大的窗口,則圖像會被嚴重平滑。因此根據空洞的大小,不斷調整濾波窗口。先用大窗口給所有空洞賦值,然后利用逐漸變成小窗口濾波覆蓋原來的值,這樣既能保證空洞能被填充上,也能保證圖像不會被過度平滑。

空洞填充的函數代碼如下,僅供參考:

1 void insertDepth32f(cv::Mat& depth) 2 { 3 const int width = depth.cols; 4 const int height = depth.rows; 5 float* data = (float*)depth.data; 6 cv::Mat integralMap = cv::zeros(height,width, CV_64F); 7 cv::Mat ptsMap = cv::zeros(height, width,CV_32S); 8 double* integral = (double*)integralMap.data; 9 int* ptsIntegral = (int*)ptsMap.data; 10 memset(integral, 0, sizeof(double) * width *height); 11 memset(ptsIntegral, 0, sizeof(int) * width *height); 12 for (int i = 0; i < height; ++i) 13 { 14 int id1 = i * width; 15 for (int j = 0; j < width; ++j) 16 { 17 int id2 = id1 + j; 18 if (data[id2] > 1e-3) 19 { 20 integral[id2] = data[id2]; 21 ptsIntegral[id2] = 1; 22 } 23 } 24 } 25 // 積分區間 26 for (int i = 0; i < height; ++i) 27 { 28 int id1 = i * width; 29 for (int j = 1; j < width; ++j) 30 { 31 int id2 = id1 + j; 32 integral[id2] += integral[id2 - 1]; 33 ptsIntegral[id2] += ptsIntegral[id2 - 1]; 34 } 35 } 36 for (int i = 1; i < height; ++i) 37 { 38 int id1 = i * width; 39 for (int j = 0; j < width; ++j) 40 { 41 int id2 = id1 + j; 42 integral[id2] += integral[id2 - width]; 43 ptsIntegral[id2] += ptsIntegral[id2 - width]; 44 } 45 } 46 int wnd; 47 double dWnd = 2; 48 while (dWnd > 1) 49 { 50 wnd = int(dWnd); 51 dWnd /= 2; 52 for (int i = 0; i < height; ++i) 53 { 54 int id1 = i * width; 55 for (int j = 0; j < width; ++j) 56 { 57 int id2 = id1 + j; 58 int left = j - wnd - 1; 59 int right = j + wnd; 60 int top = i - wnd - 1; 61 int bot = i + wnd; 62 left = max(0, left); 63 right = min(right, width - 1); 64 top = max(0, top); 65 bot = min(bot, height - 1); 66 int dx = right - left; 67 int dy = (bot - top) * width; 68 int idLeftTop = top * width + left; 69 int idRightTop = idLeftTop + dx; 70 int idLeftBot = idLeftTop + dy; 71 int idRightBot = idLeftBot + dx; 72 int ptsCnt = ptsIntegral[idRightBot]+ ptsIntegral[idLeftTop] - (ptsIntegral[idLeftBot] +ptsIntegral[idRightTop]); 73 double sumGray = integral[idRightBot]+ integral[idLeftTop] - (integral[idLeftBot] + integral[idRightTop]); 74 if (ptsCnt <= 0) 75 { 76 continue; 77 } 78 data[id2] = float(sumGray / ptsCnt); 79 } 80 } 81 int s = wnd / 2 * 2 + 1; 82 if (s > 201) 83 { 84 s = 201; 85 } 86 cv::GaussianBlur(depth, depth, cv::Size(s, s), s, s); 87 } 88 }

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 攝像機
    +關注

    關注

    3

    文章

    1688

    瀏覽量

    61078
  • 圖像
    +關注

    關注

    2

    文章

    1092

    瀏覽量

    41035
  • OpenCV
    +關注

    關注

    32

    文章

    642

    瀏覽量

    42451

原文標題:真實場景的雙目立體匹配(Stereo Matching)獲取深度圖詳解

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    智能軟件+硬件解決方案克服實時立體視覺中的挑戰

    立體視覺是一種強大的成像技術,通過使用兩臺或多臺相機以略微不同的角度拍攝,模擬人類通過雙眼感知深度的方式,從而捕捉環境的三維結構。這項技術能夠提供全視野的高密度三維測量,并在非結構化和動態環境中表
    的頭像 發表于 05-16 17:04 ?114次閱讀
    智能軟件+硬件解決方案克服實時<b class='flag-5'>立體</b>視覺中的挑戰

    打破室外全域工作“盲區”!廣和通雙目視覺算法將成就云深處科技機器狗“慧眼”

    雙目視覺模塊RV-BOT為云深處科技四足機器人打通室外工作鏈路。通過深度融合廣和通自主研發的雙目視覺算法,RV-BOT將顯著提升了室外場景中的定位精度,為國產足式機器人的自主導航與智能
    發表于 05-15 14:26 ?1098次閱讀
    打破室外全域工作“盲區”!廣和通<b class='flag-5'>雙目</b>視覺算法將成就云深處科技機器狗“慧眼”

    奧比中光發布新一代雙目3D相機Gemini 435Le

    近日,奧比中光在美國底特律舉辦的Automate 2025展會上發布Gemini 435Le,獲得眾多機器人專業人士的關注。作為最新一代工業級雙目視覺解決方案,Gemini 435Le雙目3D相機在前作基礎上針對智能機器人的工業自動化應用
    的頭像 發表于 05-14 17:15 ?304次閱讀

    如何獲取 OpenAI API Key?API 獲取與代碼調用示例 (詳解教程)

    OpenAI API Key 獲取與使用詳解:從入門到精通 OpenAI 正以其 GPT 和 DALL-E 等先進模型引領全球人工智能創新。其 API 為開發者和企業提供了強大的 AI 能力集成途徑
    的頭像 發表于 05-04 11:42 ?656次閱讀
    如何<b class='flag-5'>獲取</b> OpenAI API Key?API <b class='flag-5'>獲取</b>與代碼調用示例 (<b class='flag-5'>詳解</b>教程)

    【「# ROS 2智能機器人開發實踐」閱讀體驗】視覺實現的基礎算法的應用

    的Cartographer以其高效的子地圖管理和回環檢測能力著稱。書中通過實例演示了如何配置Cartographer的Lua參數文件,以適應不同場景。 在真實機器人測試中,運動噪聲(如輪子打滑)可能導致建漂移,因此需要
    發表于 05-03 19:41

    Claude 3.7:編碼助手首選,claude api key如何申請獲取深度解析*

    核心看點 混合推理引擎 :Claude 3.7 融合快速代碼生成與深度問題解決能力,實現“快思考”與“深思考”的無縫切換。 便捷API訪問 :三步快速獲取Claude 3.7 API密鑰,安全、簡單
    的頭像 發表于 03-24 09:43 ?781次閱讀
    Claude 3.7:編碼助手首選,claude api key如何申請<b class='flag-5'>獲取</b>與<b class='flag-5'>深度</b>解析*

    使用AFG31000系列信號發生器精準復制真實場景信號

    在電子工程與測試測量領域,精準復制真實場景信號是進行設備性能測試、系統仿真和故障診斷的關鍵。泰克AFG31000系列信號發生器憑借其寬頻帶覆蓋、高精度輸出和豐富的調制功能,成為工程師在信號仿真與測試
    的頭像 發表于 03-20 11:45 ?237次閱讀
    使用AFG31000系列信號發生器精準復制<b class='flag-5'>真實</b><b class='flag-5'>場景</b>信號

    【AIBOX 應用案例】單目深度估計

    ?Firefly所推出的NVIDIA系列的AIBOX可實現深度估計,該技術是一種從單張或者多張圖像預測場景深度信息的技術,廣泛應用于計算機視覺領域,尤其是在三維重建、場景理解和環境感知等任務中起到
    的頭像 發表于 03-19 16:33 ?315次閱讀
    【AIBOX 應用案例】單目<b class='flag-5'>深度</b>估計

    PTR5415藍牙模組性能與場景應用深度解析

    PTR5415是基于Nordic最新nRF54L15芯片,專為物聯網和工業場景設計。 1、核心參數與硬件優勢 芯片與協議:搭載nRF54L15SoC,支持藍牙6.0、LEAudio、Thread
    發表于 03-11 16:03

    航天宏圖PIE-DEM智能采編系統詳解

    當衛星鏡頭掠過青藏高原的冰川裂縫,當遙感影像捕捉到亞馬遜雨林0.01℃的溫度變化,一場由深度學習驅動的技術革命正在重塑遙感影像立體匹配技術獲取高精度DEM/DSM的方式。
    的頭像 發表于 03-11 09:20 ?613次閱讀
    航天宏圖PIE-DEM智能采編系統<b class='flag-5'>詳解</b>

    Bumblebee X 立體相機提升工業自動化中的立體深度感知

    導航,物品檢測,靈活避開障礙物,精準拾取目標物品,將其準確無誤地放置在特定位置,同時有效優化倉庫空間布局,提升作業效率。倉儲應用3D視覺技術3D傳感器是支持現實場景深度
    的頭像 發表于 11-09 01:09 ?733次閱讀
    Bumblebee X <b class='flag-5'>立體</b>相機提升工業自動化中的<b class='flag-5'>立體</b><b class='flag-5'>深度</b>感知

    立體視覺新手必看:英特爾? 實感? D421深度相機模組

    英特爾首款一體化立體深度模組,旨在將先進的深度感應技術帶給更廣泛的受眾 2024年9月24日?—— 英特爾? 實感? 技術再次突破界限,推出全新的英特爾? 實感? 深度相機模組D421
    的頭像 發表于 09-26 13:33 ?488次閱讀
    <b class='flag-5'>立體</b>視覺新手必看:英特爾? 實感? D421<b class='flag-5'>深度</b>相機模組

    可存儲500張人臉的雙目3D人臉識別模塊

    。HLK-FM888是一款紅外+可見光雙目人臉識別算法模組,內嵌雙目3D活體檢測算法和基于大數據訓練的深度神經網絡動態可見光識別算法,搭載高像素的攝像頭,在增強對環境光線的適應性和
    的頭像 發表于 07-28 08:39 ?1584次閱讀
    可存儲500張人臉的<b class='flag-5'>雙目</b>3D人臉識別模塊

    深度學習模型有哪些應用場景

    深度學習模型作為人工智能領域的重要分支,已經在多個應用場景中展現出其巨大的潛力和價值。這些應用不僅改變了我們的日常生活,還推動了科技進步和產業升級。以下將詳細探討深度學習模型的20個主要應用
    的頭像 發表于 07-16 18:25 ?3712次閱讀

    鴻蒙開發Ability Kit程序訪問控制:使用位置控件

    位置控件使用直觀且易懂的通用標識,讓用戶明確地知道這是一個獲取位置信息的按鈕。這滿足了授權場景需要匹配用戶真實意圖的需求。只有當用戶主觀愿意,并且明確了解使用
    的頭像 發表于 07-03 16:32 ?746次閱讀
    鴻蒙開發Ability Kit程序訪問控制:使用位置控件
    主站蜘蛛池模板: 欧美综合在线视频 | 日本黄大片在线观看 | 特黄十八岁大片 | 99久久精品国产免费 | 欧美精品色精品一区二区三区 | 国产成人教育视频在线观看 | 毛片毛片 | 国产视频第一页 | 久久黄色精品视频 | 丁香婷婷影院 | 日本a级片免费 | 手机看片福利国产 | 国产性猛交xx乱 | 中文字幕精品一区二区2021年 | 狠狠色噜噜狠狠狠狠五月婷 | 色噜噜噜 | 小草影院亚洲私人影院 | aa在线免费观看 | 性色爽爱性色爽爱网站 | 激情春色网 | 国产精品乳摇在线播放 | 窝窝视频成人影院午夜在线 | 丁香亚洲综合五月天婷婷 | 色老头久久网 | 国内自拍网红在综合图区 | 5g影院午夜伴侣 | 亚洲国产精品嫩草影院 | 天堂中文在线网 | 欧美日一区 | 最新久久精品 | 日韩一级片视频 | 色激情五月 | 国产一级特黄老妇女大片免费 | 性欧美xxx 不卡视频 | 曰本又色又爽又黄三级视频 | 第四色成人网 | 日本三级s级在线播放 | 国产日韩欧美一区二区 | bt在线天堂| 男人j桶女人j免费视频 | 美女视频网站色 |