色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

基于視覺的交通標識牌檢測與識別

tUM2_ADA ? 來源:djl ? 作者:ADAS ? 2019-08-08 08:46 ? 次閱讀

一、要求

首先要明確一下本文到底是要干什么。本文要完成基于視覺的交通標識牌檢測與識別,說白了,就兩個事:1)在一張圖中找到交通標識牌在哪里(檢測);2)認清楚這個標識牌是啥,表達的什么意思(識別)。那么最后得到的結果預覽如下:

二、使用數據

交通標識牌種類數不勝數,我國的交通標志一共有一百余種,按類別可分為黃底黑邊的警告標志、白底紅圈的禁令標志、藍底白字的指示標志,形狀上以三角形、圓形和矩形為主。本文主要是為了介紹一下交通標識牌的識別流程和一些主要方法的實現,為了簡化工作,本文挑選了以下五類交通標識牌。

可以看出來,博主用心良苦,選擇的交通標識牌具有很清楚的特征:1)顏色上,這五類交通標識牌的外邊框都是紅色的;2)形狀上,標識牌都是標準的圓形。這事實上也表明了,交通標識牌具有著鮮明的特征,故無論是人眼還是機器,都較易識別。(其他種類的交通標志牌也是一樣,利用形狀和顏色特征來處理)

三、使用方法
在我看來,目前處理交通標牌識別的主要有兩種方法,1)傳統的圖像處理+機器學習辦法;2)最近很火的深度學習。那么本文采用的是前者,后者后續再進行介紹。

1>檢測:顏色和形狀。

交通標志牌為了起到其警示作用,在顏色和形狀上都有著易區分性,如本文所討論的五類標志牌,顏色特征為外框均為鮮艷的紅色;形狀特征為均為圓形。于是,檢測的思路如下,最終得到了圓形部分的交通標牌:

基于視覺的交通標識牌檢測與識別

接下來,主要分為顏色分割和形狀檢測兩部分進行討論:

基于顏色分割的圖像二值化處理:

最直觀、簡單的是利用RGB顏色空間來描述圖像的色彩情況,但是,RGB色彩空間極易受到光線情況的影響,魯棒性并不是很好,所以在相關論文中,你會發現,很少有人直接使用RGB色彩空間進行色彩分割。而實際上,本人拿有限的樣本和測試集進行測試,RGB色彩分割效果在圖像成像質量較理想的時候效果極佳,但是的確容易受到干擾。本文此處選擇了HSI色彩空間模型進行色彩分割。先來點理論知識:

色調H(Hue):與光波的波長有關,它表示人的感官對不同顏色的感受,如紅色、綠色、藍色等,它也可表示一定范圍的顏色,如暖色、冷色等。

飽和度S(Saturation):表示顏色的純度,純光譜色是完全飽和的,加入白光會稀釋飽和度。飽和度越大,顏色看起來就會越鮮艷,反之亦然。

亮度I(Intensity):對應成像亮度和圖像灰度,是顏色的明亮程度。

從理論上看,HSI色彩空間將飽和度和亮度信息獨立了出來,這樣一定程度上就降低了光線帶來的影響。聽上去很有道理,但是,實際上,這也僅僅是一定程度上降低了亮度和色彩的耦合關系,并不是完全地進行了解耦,所以,效果會有提升,但是很難帶來質的改變(這是筆者自己的體驗,也許是筆者能力不足,實現得不是很理想)

那么從RGB色彩空間轉換到HSI空間的轉換公式如下:

基于視覺的交通標識牌檢測與識別

函數RGB2HSI是將RGB色彩空間轉換到HSI色彩空間,其轉換的過程參照式(2.2),最后將飽和度S和強度I均放大100倍,便于操作。 最后得到的H、 S、 I的取值范圍分別為[0,360]、 [0,100]、 [0,100]。

Cpp代碼

voidRGB2HSV(doublered,doublegreen,doubleblue,double&hue,double&saturation,

double&intensity)

{

doubler,g,b;

doubleh,s,i;

doublesum;

doubleminRGB,maxRGB;

doubletheta;

r=red/255.0;

g=green/255.0;

b=blue/255.0;

minRGB=((r

minRGB=(minRGB

maxRGB=((r>g)?(r):(g));

maxRGB=(maxRGB>b)?(maxRGB):(b);

sum=r+g+b;

i=sum/3.0;

if(i<0.001?||?maxRGB-minRGB<0.001?)??

{

h=0.0;

s=0.0;

}

else

{

s=1.0-3.0*minRGB/sum;

theta=sqrt((r-g)*(r-g)+(r-b)*(g-b));

theta=acos((r-g+r-b)*0.5/theta);

if(b<=g)??

h=theta;

else

h=2*PI-theta;

if(s<=0.01)??

h=0;

}

hue=(int)(h*180/PI);

saturation=(int)(s*100);

intensity=(int)(i*100);

}

在得到HSI空間的基礎上,分割出紅色像素,事實上這個閾值最好時自己調出來,無論是基于哪個色彩空間,網上的代碼或者論文中的數值都是個參考,自己調出來的才靠譜嘛,代碼如下:

Cpp代碼

//得到圖像參數

intwidth=src.cols;//圖像寬度

intheight=src.rows;//圖像高度

//色彩分割

doubleB=0.0,G=0.0,R=0.0,H=0.0,S=0.0,I=0.0;

MatMat_rgb=Mat::zeros(src.size(),CV_8UC1);

intx,y,px,py;//循環

for(y=0;y

{

for(x=0;x

{

//獲取BGR值

B=src.at(y,x)[0];

G=src.at(y,x)[1];

R=src.at(y,x)[2];

RGB2HSV(R,G,B,H,S,I);

//紅色:337-360

if((H>=337&&H<=360||H>=0&&H<=10)&&??

S>=12&&S<=100&&V>20&&V<99)??

{

Mat_rgb.at(y,x)=255;//分割出紅色

}

}

}

分割效果可見如下組圖,由近至遠:

注意:有一個很嚴肅的問題我這里沒有提,那就是圖像預處理!做圖像處理的很重要的一個步驟就是圖像預處理,預處理做好了,后面的問題復雜度也就降低了許多。實際上,用顏色分割來二值化圖像也可以看作一種預處理。那么顏色分割之前有不有必要做圖像預處理呢?是有的。舉個例子,我那我的MATE8在學校里拍了一張照,然后使用手機相機自帶的功能,調整其色彩飽和度,亮度等,得到以下兩種圖片:

相機拍的原圖

手機調整飽和度、亮度后

這兩種圖片,顯然右邊的將更有利于顏色分割!(不信可以試試哦)。本文主要以介紹交通標牌的主要流程為主,預處理的方法包括直方圖均衡化、白平衡、亮度調節等等這些就不仔細糾結了,但是,不代表這部分不重要,圖像預處理往往一定程度上決定了最后的效果。

基于形狀(圓形)檢測的ROI提取
在進行顏色分割之后,得到的只是一個粗略的交通標志牌ROI區域, 還會留下一些噪聲以及一些和目標區域面積相當或者比目標面積略大的區域,這時候就還需要進行一些圖像預處理,為準確檢測交通標志牌打下堅實基礎。由于交通標志最明顯的特征是其顏色和形狀,在用顏色分割之后,我們可以通過形狀特征來去除其余的干擾。對于本文的研究對象而言,交通標志牌的形狀為圓形,可以采用經典的Hough變換進行圓檢測,該方法準確性高,但是計算量大,耗時且占用較大內存;也可以采用圓度的方法來提取圓形,該方法原理簡單,計算量小,準確率高。綜合考慮,本文使用基于圓度的圓檢測算法。大概流程如下,后文還會詳細介紹:

基于視覺的交通標識牌檢測與識別

圖有點不太清楚,下文中對于關鍵的部分會再次給出效果圖。

中值濾波,這個沒啥好說的,圖上效果不是很明顯,但是實際上可以一定程度上濾掉單個噪點,對得到準確的結果會有一定的幫助;

形態學處理,最后我們的目的是要得到一個封閉的區域,所以,顏色分割后的結果很可能不會是比較理想封閉的圓形,那么選用的3×3腐蝕模板,7×7膨脹模板,這樣檢測到的圓形將基本不會產生缺口,保證是一個封閉的形狀。

圖像填充,有了上述步驟得到的封閉圓形,我們接下來就可以填充封閉圖形了(這里你可能會問,為啥要這樣做。實際上直接進行Hough圓檢測可以得到ROI結果,但是本文是換了一個思路,使用圓度來判斷圓形,所以算法需要一個實心區域),代碼如下:

Cpp代碼

voidfillHole(constMatsrcBw,Mat&dstBw)

{

Sizem_Size=srcBw.size();

MatTemp=Mat::zeros(m_Size.height+2,m_Size.width+2,srcBw.type());//延展圖像

srcBw.copyTo(Temp(Range(1,m_Size.height+1),Range(1,m_Size.width+1)));

cv::floodFill(Temp,Point(0,0),Scalar(255));//填充區域

MatcutImg;//裁剪延展的圖像

Temp(Range(1,m_Size.height+1),Range(1,m_Size.width+1)).copyTo(cutImg);

dstBw=srcBw|(~cutImg);

}

輪廓檢測,初步篩選ROI,要想使用基于圓度的圓檢測算法,則需要從圖像中提取初步的ROI來進行篩選。這里使用輪廓檢測法來檢測圖片中的ROI區域。可以看到,一些細小的噪聲也被檢測進來。

所以,本文先通過對檢測區域的寬高比、面積大小進行限制,篩選出有效的檢測區域,經過實驗,可以確定寬高比限制在0.5-2之間,面積最小值設定為400,可以進一步得到下圖的檢測效果,可以看到,此時小面積的噪聲已經被排除。

代碼如下:

Cpp代碼

//找輪廓

vector>contours;

vectorhierarchy;

findContours(Mat_rgb,contours,hierarchy,CV_RETR_EXTERNAL,

CV_CHAIN_APPROX_SIMPLE,Point(0,0));

///多邊形逼近輪廓+獲取矩形和圓形邊界框

vector>contours_poly(contours.size());

vectorboundRect(contours.size());

vectorcenter(contours.size());

vectorradius(contours.size());

//得到輪廓矩形框

for(inti=0;i

{

approxPolyDP(Mat(contours[i]),contours_poly[i],3,true);

boundRect[i]=boundingRect(Mat(contours_poly[i]));

minEnclosingCircle(contours_poly[i],center[i],radius[i]);

}

///畫多邊形輪廓+包圍的矩形框

Matdrawing=Mat::zeros(Mat_rgb.size(),CV_8UC3);

for(inti=0;i

{

Rectrect=boundRect[i];

//首先進行一定的限制,篩選出區域

//高寬比限制

floatratio=(float)rect.width/(float)rect.height;

//輪廓面積

floatArea=(float)rect.width*(float)rect.height;

floatdConArea=(float)contourArea(contours[i]);

floatdConLen=(float)arcLength(contours[i],1);

if(dConArea<400)//ROI?區域面積限制??

continue;

if(ratio>2||ratio<0.5)//ROI?區域寬高比限制??

continue;

//檢測到了!

Scalarcolor=Scalar(rng.uniform(0,255),rng.uniform(0,255),rng.uniform(0,255));

//繪制輪廓和檢測到的輪廓外接矩形

drawContours(drawing,contours_poly,i,color,1,8,vector(),0,Point());

rectangle(drawing,boundRect[i].tl(),boundRect[i].br(),color,2,8,0);

rectangle(src,boundRect[i].tl(),boundRect[i].br(),color,2,8,0);

}

圓度算法檢測,實際上這是利用了非常簡單的數學約束,來對檢測到的區域進行圓形驗證。圓度定義如下:

其中,S為圓的面積,L為圓的周長,C為圓度。圓度值越接近1,則表示該圖形與圓形的契合程度越高。經過大量的實驗,可以得出圓度大于0.5時,即 4 . 0 ? C 時,可以篩選出巨大部分的圓形。

ROI區域無效像素面積約束,這是進一步確定篩選后的ROI區域是目標圓形區域。該約束條件是基于ROI區域中圓形的缺失面積而得到的。前文中得到的ROI區域是包含圓形交通標志牌的矩形區域,如下圖所示,可以將整個ROI區域分成1、2、3、4四塊,其中紅色部分為交通標志牌,灰色部分為ROI區域中的無效像素。可以直觀地看到,1、2、3、4四塊的無效像素滿足一定的數學關系,

基于視覺的交通標識牌檢測與識別

有如下約束

基于視覺的交通標識牌檢測與識別

圓度代碼即為一個約束條件,對面個輪廓檢測得到的ROI進行驗證,無效像素面積約束則代碼如下:

Cpp代碼

boolisCircle(constMatsrcBw,Mat&mytemp)//(待改進)

{//輸入的是一個灰度圖像

Mattemp=Mat::zeros(srcBw.size(),CV_8UC1);;

booliscircle=false;

//獲得srcBw信息

intw=srcBw.cols;

inth=srcBw.rows;

intcount1=0;//各部分的缺失像素計數器

intcount2=0;

intcount3=0;

intcount4=0;

//將srcBw平均分成四份,進行訪問缺失的像素個數、所占比重

//先訪問左上

for(inti=0;i

{

for(intj=0;j

{

if(srcBw.at(i,j)==0)

{

temp.at(i,j)=255;

mytemp.at(i,j)=255;

count1++;

}

}

}

//右上

for(inti=0;i

{

for(intj=w/2-1;j

{

if(srcBw.at(i,j)==0)

{

temp.at(i,j)=255;

mytemp.at(i,j)=255;

count2++;

}

}

}

//左下

for(inti=h/2-1;i

{

for(intj=0;j

{

if(srcBw.at(i,j)==0)

{

temp.at(i,j)=255;

mytemp.at(i,j)=255;

count3++;

}

}

}

//右下

for(inti=h/2-1;i

{

for(intj=w/2-1;j

{

if(srcBw.at(i,j)==0)

{

temp.at(i,j)=255;

mytemp.at(i,j)=255;

count4++;

}

}

}

floatc1=(float)count1/(float)(w*h);//左上

floatc2=(float)count2/(float)(w*h);//右上

floatc3=(float)count3/(float)(w*h);//左下

floatc4=(float)count4/(float)(w*h);//右下

cout<

<

//限定每個比率的差值范圍

if((c1>0.037&&c1<0.12)&&(c2>0.037&&c2<0.12)&&(c2>0.037&&c2<0.12)&&(c2>0.037

&&c2<0.12))??

{

//限制差值,差值比較容錯,相鄰塊之間差值相近,如左上=右上&&左下=右下或左上=左下&&右上=右下

if((abs(c1-c2)<0.04&&abs(c3-c4)<0.04)||(abs(c1-c3)<0.04&&abs(c2-c4)<0.04))??

{

iscircle=true;

}

}

returniscircle;

}

利用輪廓檢測、圓度約束和無效面積約束,可以測試得到如下效果圖,


最后,目標區域提取的效果如下:


2>識別:SVM分類。

有了上文提取ROI的基礎,分類過程實際上和我之前寫過的箭頭分類如出一轍。

圖像預處理,首先將無效像素全部去除,只留下圓形ROI有效區域

然后進行二值化處理,二值化后的圖像特征更為清晰

可以選擇所有像素作為特征,當然更科學的是Hu不變矩、Zernike不變矩、二者混合矩等特征。關于Hu、Zernike特征的代碼網上比比皆是,這里僅推薦一個作為參考。本文為了簡單實現框架,拿全部像素特征進行訓練。準備好樣本和測試集,并給這五類交通標牌設置標簽“stop”,“20t”,“car forbidden”,“5”,“stop2”

SVM代碼框架如下。

SVM訓練

Cpp代碼

//*********************SVM訓練部分***********************

//準備開始訓練

CvSVMclassifier;

CvSVMParamsSVM_params;

SVM_params.kernel_type=CvSVM::LINEAR;//使用RBF分類非線性問題

SVM_params.svm_type=CvSVM::C_SVC;

SVM_params.degree=0;

SVM_params.gamma=0.01;

SVM_params.term_crit=cvTermCriteria(CV_TERMCRIT_ITER,1000,FLT_EPSILON);

SVM_params.C=100;

SVM_params.coef0=0;

SVM_params.nu=0;

SVM_params.p=0.005;

classifier.train(train,labels,Mat(),Mat(),SVM_params);//SVM訓練,線性核上述參數C起作用

SVM保存

Cpp代碼

classifier.save("model180.txt");

SVM讀取

Cpp代碼

//這里載入分類器,方便直接訓練

CvSVMclassifier;

classifier.load("model180.txt");

SVM預測

Cpp代碼

for(inti=0;i

{

intresult=(int)classifier.predict(testdata[i]);

std::cout<<"測試樣本"<"的測試結果為:"??

<"?"?<

}

最后得到了文中開始展示的效果。
本文完整代碼和數據,已托管在Github上https://github.com/lps683/TrafficsSignDetection。這些東西也許在高手看來不值一提,但是,若能給一部分人帶來一些哪怕一點點收獲,那么花這么多功夫寫這篇文章也不算白費。

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

    關注

    2

    文章

    301

    瀏覽量

    41299
  • 智能汽車
    +關注

    關注

    30

    文章

    2870

    瀏覽量

    107385
  • 交通標志識別

    關注

    0

    文章

    4

    瀏覽量

    3309
收藏 人收藏

    評論

    相關推薦

    安全標識牌|夜光標識|管道標識|反光膠帶|警示膠帶

    安賽-安全標識專家。我們幫助客戶加強工作中的安全性,提高安全意識,主要產品包括:安全標識牌|夜光標識|管道標識|反光膠帶|警示膠帶|防滑膠帶|防滑地貼|劃線膠帶|消防逃生
    發表于 12-15 09:02

    LED標識標牌全解

    來公布某些信息的。  從交通標識來講:城市中汽車的數量每天都有幾百輛增加,道路資源越來越少,對于交通標識合理布局,增加交通監控,單行道以及時
    發表于 10-17 15:18

    基于圖像輪廓識別技術在交通路標識別應用

    針對現有計算機視覺交通路標識別的復雜性和不穩定性的問題,通過運用圖像輪廓識別技術,提出了由全局特征到局部特征再到結構特征的多層次輪廓識別,在交通
    發表于 11-03 16:16 ?8次下載
    基于圖像輪廓<b class='flag-5'>識別</b>技術在<b class='flag-5'>交通路標識別</b>應用

    基于SIFT視覺詞匯的目標識別算法

    算法的目標識別算法。結合在無遮擋與被局部遮擋的交通工具全方位姿態模型庫上進行的目標識別試驗,得出結果:算法對無遮擋目標的平均識別率能到達83%以上,具有良好的
    發表于 11-14 11:04 ?5次下載
    基于SIFT<b class='flag-5'>視覺</b>詞匯的目<b class='flag-5'>標識別</b>算法

    交通標志牌檢測算法

    移動機器人可借助交通標志牌進行定位,文中提出了一種基于顏色分割和局部LPT變換的交通標志牌檢測算法。首先利用交通標志牌的顏色特征預分割出潛在的交通
    發表于 11-15 15:58 ?2次下載

    凸版印刷使用全彩電子紙顯示器出世界上第一款數字POP標識牌

    數字POP標識牌,旨在提高使用效率進而減少實體店內POP廣告產生的材料浪費,這一直都是零售商運營過程中的一個重要問題。
    的頭像 發表于 03-13 11:41 ?4861次閱讀

    交通標識識別流程解析

    交通標識識別算法一方面采用了基于卷積神經網絡的訓練和識別方法,極大地提高了交通標識
    的頭像 發表于 08-08 10:04 ?7061次閱讀

    基于YOLO改進的輕量級交通標識檢測模型

    在車載邊緣計算單元中,由于其硬件設備的資源受限,開發適用于車載邊緣計算的輕量級、高效的交通標識檢測模型變得越來越迫切。文中提出了一種基于 Tiny YOLO改進的輕量級交通
    發表于 04-19 15:01 ?12次下載
    基于YOLO改進的輕量級<b class='flag-5'>交通</b><b class='flag-5'>標識</b><b class='flag-5'>檢測</b>模型

    機器視覺常用的3種目標識別方法

    隨著機器視覺技術的快速發展,傳統很多需要人工來手動操作的工作,漸漸地被機器所替代。 傳統方法做目標識別大多都是靠人工實現,從形狀、顏色、長度、寬度、長寬比來確定被識別的目標是否符合標準,最終
    的頭像 發表于 02-07 12:00 ?1061次閱讀
    機器<b class='flag-5'>視覺</b>常用的3種目<b class='flag-5'>標識別</b>方法

    淺談機器視覺檢測技術和機器視覺定位技術

    機器視覺檢測是指在圖像或視頻中識別和定位具有特定特征的目標的過程,通常涉及目標識別、目標跟蹤、目標分割等任務。它是機器視覺領域中最核心和最基
    發表于 05-08 09:34 ?539次閱讀

    路燈RFID智能標識牌簡介

    路燈RFID智能標識牌型號HY-WS05,采用超高頻UHF遠距離芯片、燈光交互技術、專利天線設計和聚乙烯灌注密封。
    的頭像 發表于 05-08 10:26 ?1040次閱讀
    路燈RFID智能<b class='flag-5'>標識牌</b>簡介

    RFID標識牌手持識別終端簡介

    RFID標識牌手持識別終端型號 HY-SD1701是為RFID智能交互標識牌專業定制開發的專業識讀設備,專利的盾牌UHF識讀模塊,采用Android 5.1.1 操作系統,5.0寸IPS屏,8000mAh鋰聚合物電池,4G通訊模
    的頭像 發表于 05-08 11:16 ?1041次閱讀

    機器視覺的圖像目標識別方法操作要點

    通過加強圖像分割,能夠提高機器視覺的圖像目標識別的自動化水平,使得圖像目標識別效果更加顯著。圖像分割的方法有很多種,不同方法分別適用于不同領域,這里重點介紹以下3種分割方法。
    發表于 01-15 12:17 ?450次閱讀

    機器視覺的圖像目標識別方法綜述

    文章來源:MEMS引言從20世紀80年代開始,機器視覺技術的發展速度不斷加快,已經走進了人們的日常生活與工作之中。機器視覺的圖像目標識別系統的自動化程度較高,應用范圍廣,尤其在危險場所的運用,采用
    的頭像 發表于 02-23 08:26 ?746次閱讀
    機器<b class='flag-5'>視覺</b>的圖像目<b class='flag-5'>標識別</b>方法綜述

    目標檢測識別技術的關系是什么

    任務是在圖像或視頻中快速準確地定位出感興趣的目標,并給出目標的位置信息。目標檢測技術通常包括候選區域提取、特征提取、分類器設計等步驟。 目標識別技術 目標識別技術是計算機視覺領域的另一
    的頭像 發表于 07-17 09:38 ?717次閱讀
    主站蜘蛛池模板: 亚洲AV成人片色在线观看网站| 亚洲天码中字| 在线视频中文字幕| 精品国产午夜福利在线观看蜜月| 天天夜夜草草久久亚洲香蕉| 吃奶啃奶玩乳漫画| 泡妞高手在都市免费观看| acg全彩无遮挡口工漫画网址| 男同志vdieos免费| FREEHDXXXX学生妹| 日本人娇小hd| 囯产精品一品二区三区| 甜宠溺H宝贝嗯撞PLAY啊| 国产乱妇乱子在线播视频播放网站| 微拍秒拍99福利精品小视频| 国产树林野战在线播放| 亚洲人成在线播放无码| 久久66热在线视频精品| 樱花草在线影视WWW日本动漫| 久久人人爽人人片AV人成| 91免费精品国自产拍在线可以看| 老熟风间由美AV在线一区二区| 0855午夜福利伦理电影| 欧美一区二区三区免费播放| 俄罗斯乌克兰战争原因| 亚洲国产中文字幕在线视频| 久久妇女高潮几次MBA| 999视频精品全部免费观看| 欧美xxxxxbb| 夫妻主vk| 亚洲在线国产日韩欧美| 免费观看国产视频| 国产第一页浮力影院| 亚洲色图19p| 女配穿书病娇被强啪h| 国产成人免费观看在线视频| 亚洲 欧美 国产 综合不卡| 两个人的视频免费| 日韩精品无码免费专区| 国产成人无码AV麻豆| 亚洲精品一二三区-久久|