精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文解讀自動(dòng)駕駛中的激光雷達(dá)點(diǎn)云分割算法

人工智能 新聞
Ray Ground Filter算法的核心是以射線(Ray)的形式來組織點(diǎn)云。

目前常見的激光點(diǎn)云分割算法有基于平面擬合的方法和基于激光點(diǎn)云數(shù)據(jù)特點(diǎn)的方法兩類。具體如下:

圖片

點(diǎn)云地面分割算法

01 基于平面擬合的方法-Ground Plane Fitting

算法思想:一種簡單的處理方法就是沿著x方向(車頭的方向)將空間分割成若干個(gè)子平面,然后對每個(gè)子平面使用地面平面擬合算法(GPF)從而得到能夠處理陡坡的地面分割方法。該方法是在單幀點(diǎn)云中擬合全局平面,在點(diǎn)云數(shù)量較多時(shí)效果較好,點(diǎn)云稀疏時(shí)極易帶來漏檢和誤檢,比如16線激光雷達(dá)。

算法偽代碼:

圖片

偽代碼

算法流程是對于給定的點(diǎn)云 P ,分割的最終結(jié)果為兩個(gè)點(diǎn)云集合,地面點(diǎn)云? 和非地面點(diǎn)云。此算法有四個(gè)重要參數(shù),如下:

  • Niter : 進(jìn)行奇異值分解(SVD)的次數(shù),也即進(jìn)行優(yōu)化擬合的次數(shù)
  • NLPR : 用于選取LPR的最低高度點(diǎn)的數(shù)量
  • Thseed : 用于選取種子點(diǎn)的閾值,當(dāng)點(diǎn)云內(nèi)的點(diǎn)的高度小于LPR的高度加上此閾值時(shí),我們將該點(diǎn)加入種子點(diǎn)集
  • Thdist : 平面距離閾值,我們會(huì)計(jì)算點(diǎn)云中每一個(gè)點(diǎn)到我們擬合的平面的正交投影的距離,而這個(gè)平面距離閾值,就是用來判定點(diǎn)是否屬于地面

種子點(diǎn)集的選擇

我們首先選取一個(gè)種子點(diǎn)集(seed point set),這些種子點(diǎn)來源于點(diǎn)云中高度(即z值)較小的點(diǎn),種子點(diǎn)集被用于建立描述地面的初始平面模型,那么如何選取這個(gè)種子點(diǎn)集呢?我們引入最低點(diǎn)代表(Lowest Point Representative, LPR)的概念。LPR就是NLPR個(gè)最低高度點(diǎn)的平均值,LPR保證了平面擬合階段不受測量噪聲的影響。

圖片

種子點(diǎn)的選擇

輸入是一幀點(diǎn)云,這個(gè)點(diǎn)云內(nèi)的點(diǎn)已經(jīng)沿著z方向(即高度)做了排序,取 num_lpr_ 個(gè)最小點(diǎn),求得高度平均值 lpr_height(即LPR),選取高度小于 lpr_height + th_seeds_的點(diǎn)作為種子點(diǎn)。

具體代碼實(shí)現(xiàn)如下

/*
@brief Extract initial seeds of the given pointcloud sorted segment.
This function filter ground seeds points accoring to heigt.
This function will set the `g_ground_pc` to `g_seed_pc`.
@param p_sorted: sorted pointcloud

@param ::num_lpr_: num of LPR points
@param ::th_seeds_: threshold distance of seeds
@param ::
*/
void PlaneGroundFilter::extract_initial_seeds_(const pcl::PointCloud<VPoint> &p_sorted)
{
// LPR is the mean of low point representative
double sum = 0;
int cnt = 0;
// Calculate the mean height value.
for (int i = 0; i < p_sorted.points.size() && cnt < num_lpr_; i++)
{
sum += p_sorted.points[i].z;
cnt++;
}
double lpr_height = cnt != 0 ? sum / cnt : 0; // in case divide by 0
g_seeds_pc->clear();
// iterate pointcloud, filter those height is less than lpr.height+th_seeds_
for (int i = 0; i < p_sorted.points.size(); i++)
{
if (p_sorted.points[i].z < lpr_height + th_seeds_)
{
g_seeds_pc->points.push_back(p_sorted.points[i]);
}
}
// return seeds points
}

平面模型

接下來我們建立一個(gè)平面模型,點(diǎn)云中的點(diǎn)到這個(gè)平面的正交投影距離小于閾值Thdist,則認(rèn)為該點(diǎn)屬于地面,否則屬于非地面。采用一個(gè)簡單的線性模型用于平面模型估計(jì),如下:

ax+by+cz+d=0

即:

圖片

其中

圖片

,通過初始點(diǎn)集的協(xié)方差矩陣C來求解n,從而確定一個(gè)平面,種子點(diǎn)集作為初始點(diǎn)集,其協(xié)方差矩陣為

圖片

這個(gè)協(xié)方差矩陣 C 描述了種子點(diǎn)集的散布情況,其三個(gè)奇異向量可以通過奇異值分解(SVD)求得,這三個(gè)奇異向量描述了點(diǎn)集在三個(gè)主要方向的散布情況。由于是平面模型,垂直于平面的法向量 n 表示具有最小方差的方向,可以通過計(jì)算具有最小奇異值的奇異向量來求得。

那么在求得了 n 以后, d 可以通過代入種子點(diǎn)集的平均值  ,s(它代表屬于地面的點(diǎn)) 直接求得。整個(gè)平面模型計(jì)算代碼如下:

/*
@brief The function to estimate plane model. The
model parameter `normal_` and `d_`, and `th_dist_d_`
is set here.
The main step is performed SVD(UAV) on covariance matrix.
Taking the sigular vector in U matrix according to the smallest
sigular value in A, as the `normal_`. `d_` is then calculated
according to mean ground points.


@param g_ground_pc:global ground pointcloud ptr.

*/
void PlaneGroundFilter::estimate_plane_(void)
{
// Create covarian matrix in single pass.
// TODO: compare the efficiency.
Eigen::Matrix3f cov;
Eigen::Vector4f pc_mean;
pcl::computeMeanAndCovarianceMatrix(*g_ground_pc, cov, pc_mean);
// Singular Value Decomposition: SVD
JacobiSVD<MatrixXf> svd(cov, Eigen::DecompositionOptions::ComputeFullU);
// use the least singular vector as normal
normal_ = (svd.matrixU().col(2));
// mean ground seeds value
Eigen::Vector3f seeds_mean = pc_mean.head<3>();


// according to normal.T*[x,y,z] = -d
d_ = -(normal_.transpose() * seeds_mean)(0, 0);
// set distance threhold to `th_dist - d`
th_dist_d_ = th_dist_ - d_;


// return the equation parameters
}

優(yōu)化平面主循環(huán)

extract_initial_seeds_(laserCloudIn);
g_ground_pc = g_seeds_pc;
// Ground plane fitter mainloop
for (int i = 0; i < num_iter_; i++)
{
estimate_plane_();
g_ground_pc->clear();
g_not_ground_pc->clear();


//pointcloud to matrix
MatrixXf points(laserCloudIn_org.points.size(), 3);
int j = 0;
for (auto p : laserCloudIn_org.points)
{
points.row(j++) << p.x, p.y, p.z;
}
// ground plane model
VectorXf result = points * normal_;
// threshold filter
for (int r = 0; r < result.rows(); r++)
{
if (result[r] < th_dist_d_)
{
g_all_pc->points[r].label = 1u; // means ground
g_ground_pc->points.push_back(laserCloudIn_org[r]);
}
else
{
g_all_pc->points[r].label = 0u; // means not ground and non clusterred
g_not_ground_pc->points.push_back(laserCloudIn_org[r]);
}
}
}

得到這個(gè)初始的平面模型以后,我們會(huì)計(jì)算點(diǎn)云中每一個(gè)點(diǎn)到該平面的正交投影的距離,即 points * normal_,并且將這個(gè)距離與設(shè)定的閾值?(即th_dist_d_) 比較,當(dāng)高度差小于此閾值,我們認(rèn)為該點(diǎn)屬于地面,當(dāng)高度差大于此閾值,則為非地面點(diǎn)。經(jīng)過分類以后的所有地面點(diǎn)被當(dāng)作下一次迭代的種子點(diǎn)集,迭代優(yōu)化。

02 基于雷達(dá)數(shù)據(jù)本身特點(diǎn)的方法-Ray Ground Filter

代碼

??https://github.com/suyunzzz/ray_filter_ground??

算法思想

Ray Ground Filter算法的核心是以射線(Ray)的形式來組織點(diǎn)云。將點(diǎn)云的 (x, y, z)三維空間降到(x,y)平面來看,計(jì)算每一個(gè)點(diǎn)到車輛x正方向的平面夾角 θ, 對360度進(jìn)行微分,分成若干等份,每一份的角度為0.2度。

圖片

激光線束等間隔劃分示意圖(通常以激光雷達(dá)角度分辨率劃分)

圖片

同一角度范圍內(nèi)激光線束在水平面的投影以及在Z軸方向的高度折線示意圖

為了方便對同一角度的線束進(jìn)行處理,要將原來直角坐標(biāo)系的點(diǎn)云轉(zhuǎn)換成柱坐標(biāo)描述的點(diǎn)云數(shù)據(jù)結(jié)構(gòu)。對同一夾角的線束上的點(diǎn)按照半徑的大小進(jìn)行排序,通過前后兩點(diǎn)的坡度是否大于我們事先設(shè)定的坡度閾值,從而判斷點(diǎn)是否為地面點(diǎn)。

圖片

線激光線束縱截面與俯視示意圖(n=4)

通過如下公式轉(zhuǎn)換成柱坐標(biāo)的形式:

圖片

轉(zhuǎn)換成柱坐標(biāo)的公式

radius表示點(diǎn)到lidar的水平距離(半徑),theta是點(diǎn)相對于車頭正方向(即x方向)的夾角。對點(diǎn)云進(jìn)行水平角度微分之后,可得到1800條射線,將這些射線中的點(diǎn)按照距離的遠(yuǎn)近進(jìn)行排序。通過兩個(gè)坡度閾值以及當(dāng)前點(diǎn)的半徑求得高度閾值,通過判斷當(dāng)前點(diǎn)的高度(即點(diǎn)的z值)是否在地面加減高度閾值范圍內(nèi)來判斷當(dāng)前點(diǎn)是為地面。

偽代碼

圖片

偽代碼

  • local_max_slope_ :設(shè)定的同條射線上鄰近兩點(diǎn)的坡度閾值。
  • general_max_slope_ :整個(gè)地面的坡度閾值

遍歷1800條射線,對于每一條射線進(jìn)行如下操作:

1.計(jì)算當(dāng)前點(diǎn)和上一個(gè)點(diǎn)的水平距離pointdistance

2.根據(jù)local_max_slope_和pointdistance計(jì)算當(dāng)前的坡度差閾值height_threshold

3.根據(jù)general_max_slope_和當(dāng)前點(diǎn)的水平距離計(jì)算整個(gè)地面的高度差閾值general_height_threshold

4.若當(dāng)前點(diǎn)的z坐標(biāo)小于前一個(gè)點(diǎn)的z坐標(biāo)加height_threshold并大于前一個(gè)點(diǎn)的z坐標(biāo)減去height_threshold:

5.若當(dāng)前點(diǎn)z坐標(biāo)小于雷達(dá)安裝高度減去general_height_threshold并且大于相加,認(rèn)為是地面點(diǎn)

6.否則:是非地面點(diǎn)。

7.若pointdistance滿足閾值并且前點(diǎn)的z坐標(biāo)小于雷達(dá)安裝高度減去height_threshold并大于雷達(dá)安裝高度加上height_threshold,認(rèn)為是地面點(diǎn)。


/*!
*
* @param[in] in_cloud Input Point Cloud to be organized in radial segments
* @param[out] out_organized_points Custom Point Cloud filled with XYZRTZColor data
* @param[out] out_radial_divided_indices Indices of the points in the original cloud for each radial segment
* @param[out] out_radial_ordered_clouds Vector of Points Clouds, each element will contain the points ordered
*/
void PclTestCore::XYZI_to_RTZColor(const pcl::PointCloud<pcl::PointXYZI>::Ptr in_cloud,
PointCloudXYZIRTColor &out_organized_points,
std::vector<pcl::PointIndices> &out_radial_divided_indices,
std::vector<PointCloudXYZIRTColor> &out_radial_ordered_clouds)
{
out_organized_points.resize(in_cloud->points.size());
out_radial_divided_indices.clear();
out_radial_divided_indices.resize(radial_dividers_num_);
out_radial_ordered_clouds.resize(radial_dividers_num_);

for (size_t i = 0; i < in_cloud->points.size(); i++)
{
PointXYZIRTColor new_point;
//計(jì)算radius和theta
//方便轉(zhuǎn)到柱坐標(biāo)下。
auto radius = (float)sqrt(
in_cloud->points[i].x * in_cloud->points[i].x + in_cloud->points[i].y * in_cloud->points[i].y);
auto theta = (float)atan2(in_cloud->points[i].y, in_cloud->points[i].x) * 180 / M_PI;
if (theta < 0)
{
theta += 360;
}
//角度的微分
auto radial_div = (size_t)floor(theta / RADIAL_DIVIDER_ANGLE);
//半徑的微分
auto concentric_div = (size_t)floor(fabs(radius / concentric_divider_distance_));

new_point.point = in_cloud->points[i];
new_point.radius = radius;
new_point.theta = theta;
new_point.radial_div = radial_div;
new_point.concentric_div = concentric_div;
new_point.original_index = i;

out_organized_points[i] = new_point;

//radial divisions更加角度的微分組織射線
out_radial_divided_indices[radial_div].indices.push_back(i);

out_radial_ordered_clouds[radial_div].push_back(new_point);

} //end for

//將同一根射線上的點(diǎn)按照半徑(距離)排序
#pragma omp for
for (size_t i = 0; i < radial_dividers_num_; i++)
{
std::sort(out_radial_ordered_clouds[i].begin(), out_radial_ordered_clouds[i].end(),
[](const PointXYZIRTColor &a, const PointXYZIRTColor &b) { return a.radius < b.radius; });
}
}

/*!
* Classifies Points in the PointCoud as Ground and Not Ground
* @param in_radial_ordered_clouds Vector of an Ordered PointsCloud ordered by radial distance from the origin
* @param out_ground_indices Returns the indices of the points classified as ground in the original PointCloud
* @param out_no_ground_indices Returns the indices of the points classified as not ground in the original PointCloud
*/
void PclTestCore::classify_pc(std::vector<PointCloudXYZIRTColor> &in_radial_ordered_clouds,
pcl::PointIndices &out_ground_indices,
pcl::PointIndices &out_no_ground_indices)
{
out_ground_indices.indices.clear();
out_no_ground_indices.indices.clear();
#pragma omp for
for (size_t i = 0; i < in_radial_ordered_clouds.size(); i++) //sweep through each radial division 遍歷每一根射線
{
float prev_radius = 0.f;
float prev_height = -SENSOR_HEIGHT;
bool prev_ground = false;
bool current_ground = false;
for (size_t j = 0; j < in_radial_ordered_clouds[i].size(); j++) //loop through each point in the radial div
{
float points_distance = in_radial_ordered_clouds[i][j].radius - prev_radius;//計(jì)算當(dāng)前點(diǎn)和上一個(gè)點(diǎn)的水平距離pointdistance
float height_threshold = tan(DEG2RAD(local_max_slope_)) * points_distance;//根據(jù)local_max_slope_和pointdistance計(jì)算當(dāng)前的坡度差閾值height_threshold
float current_height = in_radial_ordered_clouds[i][j].point.z;
float general_height_threshold = tan(DEG2RAD(general_max_slope_)) * in_radial_ordered_clouds[i][j].radius;//根據(jù)general_max_slope_和當(dāng)前點(diǎn)的水平距離計(jì)算整個(gè)地面的高度差閾值general_height_threshold

//for points which are very close causing the height threshold to be tiny, set a minimum value
if (points_distance > concentric_divider_distance_ && height_threshold < min_height_threshold_)
{
height_threshold = min_height_threshold_;
}

//check current point height against the LOCAL threshold (previous point)
if (current_height <= (prev_height + height_threshold) && current_height >= (prev_height - height_threshold))
{
//Check again using general geometry (radius from origin) if previous points wasn't ground
if (!prev_ground)
{
if (current_height <= (-SENSOR_HEIGHT + general_height_threshold) && current_height >= (-SENSOR_HEIGHT - general_height_threshold))
{
current_ground = true;
}
else
{
current_ground = false;
}
}
else
{
current_ground = true;
}
}
else
{
//check if previous point is too far from previous one, if so classify again
if (points_distance > reclass_distance_threshold_ &&
(current_height <= (-SENSOR_HEIGHT + height_threshold) && current_height >= (-SENSOR_HEIGHT - height_threshold)))
{
current_ground = true;
}
else
{
current_ground = false;
}
}

if (current_ground)
{
out_ground_indices.indices.push_back(in_radial_ordered_clouds[i][j].original_index);
prev_ground = true;
}
else
{
out_no_ground_indices.indices.push_back(in_radial_ordered_clouds[i][j].original_index);
prev_ground = false;
}

prev_radius = in_radial_ordered_clouds[i][j].radius;
prev_height = in_radial_ordered_clouds[i][j].point.z;
}
}
}

03 基于雷達(dá)數(shù)據(jù)本身特點(diǎn)的方法-urban road filter

原文

Real-Time LIDAR-Based Urban Road and Sidewalk Detection for Autonomous Vehicles

代碼

??https://github.com/jkk-research/urban_road_filter??

z_zero_method

圖片

z_zero_method

首先將數(shù)據(jù)組織成[channels][thetas]

對于每一條線,對角度進(jìn)行排序

  1. 以當(dāng)前點(diǎn)p為中心,向左選k個(gè)點(diǎn),向右選k個(gè)點(diǎn)
  2. 分別計(jì)算左邊及右邊k個(gè)點(diǎn)與當(dāng)前點(diǎn)在x和y方向差值的均值
  3. 同時(shí)計(jì)算左邊及右邊k個(gè)點(diǎn)的最大z值max1及max2
  4. 根據(jù)余弦定理求解余弦角

如果余弦角度滿足閾值且max1減去p.z滿足閾值或max2減去p.z滿足閾值且max2-max1滿足閾值,認(rèn)為此點(diǎn)為障礙物,否則就認(rèn)為是地面點(diǎn)。

x_zero_method

X-zero和Z-zero方法可以找到避開測量的X和Z分量的人行道,X-zero和Z-zero方法都考慮了體素的通道數(shù),因此激光雷達(dá)必須與路面平面不平行,這是上述兩種算法以及整個(gè)城市道路濾波方法的已知局限性。X-zero方法去除了X方向的值,使用柱坐標(biāo)代替。

圖片

圖片

x_zero_method

首先將數(shù)據(jù)組織成[channels][thetas]

對于每一條線,對角度進(jìn)行排序

  1. 以當(dāng)前點(diǎn)p為中心,向右選第k/2個(gè)點(diǎn)p1和第k個(gè)點(diǎn)p2
  2. 分別計(jì)算p及p1、p1及p2、p及p2間z方向的距離
  3. 根據(jù)余弦定理求解余弦角

如果余弦角度滿足閾值且p1.z-p.z滿足閾值或p1.z-p2.z滿足閾值且p.z-p2.z滿足閾值,認(rèn)為此點(diǎn)為障礙物

star_search_method

該方法將點(diǎn)云劃分為矩形段,這些形狀的組合像一顆星;這就是名字的來源,從每個(gè)路段提取可能的人行道起點(diǎn),其中創(chuàng)建的算法對基于Z坐標(biāo)的高度變化不敏感,這意味著在實(shí)踐中,即使當(dāng)激光雷達(dá)相對于路面平面傾斜時(shí),該算法也會(huì)表現(xiàn)良好,在柱坐標(biāo)系中處理點(diǎn)云。

具體實(shí)現(xiàn):

圖片

star_search_method

責(zé)任編輯:張燕妮 來源: 智駕最前沿
相關(guān)推薦

2023-06-16 09:55:29

2023-07-28 10:13:05

雷達(dá)技術(shù)

2021-07-02 09:00:00

自動(dòng)駕駛特斯拉技術(shù)

2023-05-22 10:00:09

雷達(dá)激光

2023-05-09 10:28:27

2021-07-20 13:43:50

自動(dòng)駕駛雷達(dá)技術(shù)

2023-03-21 10:11:29

自動(dòng)駕駛

2017-07-21 10:42:27

自動(dòng)駕駛應(yīng)用機(jī)器學(xué)習(xí)

2021-12-03 09:20:27

自動(dòng)駕駛數(shù)據(jù)汽車

2022-07-12 09:42:10

自動(dòng)駕駛技術(shù)

2023-11-22 09:53:02

自動(dòng)駕駛算法

2022-08-08 13:12:04

自動(dòng)駕駛決策

2021-11-05 12:15:18

自動(dòng)駕駛數(shù)據(jù)測試

2021-11-01 13:42:39

芯片自動(dòng)駕駛技術(shù)

2022-01-18 10:51:09

自動(dòng)駕駛數(shù)據(jù)人工智能

2023-04-07 13:05:39

自動(dòng)駕駛雷達(dá)

2023-05-16 10:32:33

雷達(dá)技術(shù)

2023-04-24 09:52:12

2023-07-19 08:46:00

導(dǎo)航地圖

2023-09-06 09:59:12

雷達(dá)技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国内视频精品| 美女精品久久| 国产精品乱子久久久久| 91中文字幕一区| 日本特黄一级片| 狠狠综合久久av一区二区蜜桃| 欧美精三区欧美精三区| 全黄性性激高免费视频| 国产在线视频网址| 国产精品综合在线视频| 日本sm极度另类视频| 日韩精品一区二区三区在线视频| 极品束缚调教一区二区网站| 欧美三级乱人伦电影| 福利视频一区二区三区四区| 99免在线观看免费视频高清| 成人免费精品视频| 国产日韩欧美在线播放| 日本韩国欧美中文字幕| 午夜精品久久久久久久四虎美女版| 亚洲成人精品久久| 亚洲欧美日本一区二区三区| 桃色av一区二区| 亚洲欧美日韩中文字幕一区二区三区| 免费国产一区二区| 内射后入在线观看一区| 极品少妇xxxx精品少妇偷拍| 欧美亚洲视频在线看网址| 欧美丰满艳妇bbwbbw| 成人亚洲一区二区| 日韩精品高清在线| 亚洲欧洲日韩综合| www.欧美| 欧美三级一区二区| 色综合av综合无码综合网站| 成人日批视频| 日本一二三不卡| 精品久久蜜桃| 懂色av一区二区三区四区| 久久狠狠亚洲综合| 日韩免费黄色av| 国产做受高潮漫动| 亚洲国产专区| 欧美国产第二页| www.毛片com| 欧美freesextv| 在线观看日韩欧美| a天堂中文字幕| 久久综合欧美| 亚洲欧美日韩爽爽影院| 国产精品三级在线观看无码| 第四色在线一区二区| 日韩欧美国产1| 夜夜爽久久精品91| 亚洲成人偷拍| 日韩一级视频免费观看在线| 亚洲第一天堂久久| 亚洲欧洲专区| 欧美一区二区三区思思人| 在线观看免费污视频| 成人毛片免费| 欧美日韩亚洲国产综合| 日韩av在线中文| 激情亚洲小说| 69久久夜色精品国产69蝌蚪网| 狠狠操狠狠干视频| 久久爱www.| 欧美不卡123| 国产xxxxxxxxx| 亚洲+小说+欧美+激情+另类| 亚洲男人天堂2023| 国产综合精品久久久久成人av| 精品久久久久久久| 色七七影院综合| 色在线观看视频| 亚洲国内欧美| 国产成人中文字幕| 在线播放成人av| 国产毛片精品视频| 国产精品一区二区免费看| 欧美视频久久久| 国产午夜久久久久| 三年中文高清在线观看第6集| 成人短视频在线观看| 亚洲国产精品影院| 欧美激情成人网| 高清一区二区| 日韩精品一区二区视频| 欧美另类69xxxx| 亚洲一本视频| 国产ts人妖一区二区三区| 日韩欧美一级大片| 国产成人精品一区二| 久久久久久高清| 中文字幕在线视频区| 一级精品视频在线观看宜春院| 少妇高潮毛片色欲ava片| 欧美人体一区二区三区| 7777精品伊人久久久大香线蕉最新版| 日本wwww色| 亚洲精品国模| 欧美精品性视频| 九九精品免费视频| 国产精品资源在线观看| 麻豆亚洲一区| 青春草视频在线观看| 日本高清视频一区二区| 男人添女人荫蒂国产| 亚洲资源网你懂的| 久久99久久久久久久噜噜| 国产精品777777| 国产高清视频一区| 日韩国产高清一区| 岛国毛片av在线| 在线观看欧美黄色| 中国极品少妇xxxx| 911精品美国片911久久久| 国产成人中文字幕| 欧美一区二区黄片| 亚洲精品日韩综合观看成人91| 国产又大又硬又粗| 国产精品17p| 久久五月天综合| 天堂免费在线视频| 97精品国产97久久久久久久久久久久| 性欧美18一19内谢| 99久久er| 亚洲图中文字幕| 国产a∨精品一区二区三区仙踪林| 激情综合网av| 亚洲欧洲日夜超级视频| 涩涩涩视频在线观看| 亚洲福利小视频| 69av视频在线| 国产一区二区三区黄视频| 亚洲高清精品中出| 视频在线日韩| 亚洲欧美日韩天堂一区二区| 日韩精品乱码久久久久久| 国产原创一区二区| 影音先锋在线亚洲| 精品三级在线| 正在播放亚洲1区| 欧产日产国产69| 99国产精品久久久久久久久久 | 国产成人精品毛片| 麻豆传媒在线免费看| 最新热久久免费视频| 孩娇小videos精品| 天堂美国久久| 成人在线观看视频网站| 在线看免费av| 欧美日本免费一区二区三区| 伊人影院综合网| 日韩精品一级中文字幕精品视频免费观看 | 久久精品www| 国产乱码字幕精品高清av | 午夜av在线播放| 日韩欧美久久久| 久久精品国产亚洲AV无码男同| 国产99精品在线观看| 国产精品国产三级国产专区51| 一区二区三区在线免费看 | 国产91精品一区二区| 日本精品福利视频| 国内精品麻豆美女在线播放视频 | aaa国产一区| 久草热视频在线观看| 亚洲免费观看高清完整版在线观| 日韩美女视频免费看| 69xxxx欧美| 日韩三级免费观看| 91国产丝袜播放在线| 久久久久青草大香线综合精品| 国产成人av影视| 亚洲91中文字幕无线码三区| http;//www.99re视频| 国产不卡人人| 国产亚洲视频中文字幕视频| 夜夜狠狠擅视频| 亚洲一区二区五区| 亚洲黄色在线网站| 久久成人免费电影| 欧洲精品一区二区三区久久| 国产区精品区| 亚洲最大福利视频网| 在线观看特色大片免费视频| 国产一区二区日韩精品欧美精品| 国产美女免费视频| 精品久久久国产| 我要看一级黄色录像| 成人黄色在线网站| 麻豆一区二区三区视频| 国产精品va| 日韩jizzz| 中文字幕久久精品一区二区| 热久久免费国产视频| 高h视频在线观看| 日韩精品中文字幕在线观看| 亚洲熟女乱色一区二区三区久久久| 怡红院av一区二区三区| 人妻av无码一区二区三区| 精品一区二区三区不卡| 欧美三级在线观看视频| 天天天综合网| 欧美日韩一区二区三区免费| 精品国产鲁一鲁****| 日韩美女在线观看| 成年网站在线视频网站| 久久精品成人欧美大片古装| 日本不卡视频一区二区| 日韩片之四级片| 中文字幕+乱码+中文字幕明步| 亚洲一本大道在线| 精品亚洲乱码一区二区| 久久久国产精品午夜一区ai换脸| 在线观看欧美一区二区| 日本不卡一区二区三区| 午夜免费福利小电影| 一区二区三区四区日韩| 西游记1978| 天美av一区二区三区久久| eeuss一区二区三区| 日韩色性视频| 国产精品91在线| 成人影音在线| 九九精品在线视频| 黄网页免费在线观看| 国产一区二区三区在线播放免费观看| 免费激情视频网站| 日韩精品中文字幕一区二区三区| 亚洲天堂中文在线| 欧美在线一区二区| 亚洲国产精品无码久久久| 欧美日韩亚洲激情| 亚洲日本韩国在线| 亚洲成人1区2区| 日本亚洲欧美在线| 亚洲一区二区在线免费看| 久久久久久免费观看| 亚洲私人黄色宅男| 神马久久精品综合| 亚洲精品午夜久久久| 日本中文字幕免费在线观看| 亚洲欧洲av一区二区三区久久| 在线观看免费黄色网址| 国产精品乱人伦中文| 女人18毛片毛片毛片毛片区二| 中文字幕一区二区三区精华液| 91禁男男在线观看| 日韩美女视频一区| 好吊日在线视频| 亚洲精品精品亚洲| 久久国产精品二区| 精品人伦一区二区三区蜜桃网站 | 在线播放中文一区| 国产免费不卡av| 日韩精品中文字幕一区| 四虎永久在线精品免费网址| 亚洲国产精品久久久久秋霞不卡| 亚洲av片一区二区三区| 亚洲欧美激情四射在线日| 国产成人天天5g影院在线观看| 在线电影av不卡网址| 日日夜夜精品一区| 欧美激情性做爰免费视频| av福利在线导航| 国产精品扒开腿做| 高清在线一区二区| 国产一区二区三区av在线| 亚洲动漫精品| 在线观看日本一区| 韩日成人av| 任你操这里只有精品| 久久99精品国产麻豆婷婷洗澡| 古装做爰无遮挡三级聊斋艳谭| 国产91精品免费| 中文字幕国产专区| 中文字幕一区二区三区蜜月| 国产五月天婷婷| 91久久精品一区二区二区| 国产又粗又大又爽视频| 欧美一区二区视频在线观看| 视频污在线观看| 中文国产成人精品久久一| 91极品在线| 国产suv精品一区二区三区88区| 成人精品视频在线观看| 精品一区二区三区自拍图片区| 成人在线国产| 青青青青草视频| 精品制服美女丁香| 性欧美成人播放77777| 亚洲天天做日日做天天谢日日欢 | 日韩欧美一区中文| 极品美乳网红视频免费在线观看| 久久色免费在线视频| 日韩伦理在线一区| 91精品国产91久久久久青草| 免费毛片在线不卡| 妞干网在线播放| 激情综合五月天| 亚洲激情视频小说| 亚洲亚洲精品在线观看| 一级片aaaa| 亚洲免费视频一区二区| 久久免费电影| 一区二区三区在线播放| 午夜天堂在线视频| 国产日韩一级二级三级| 精品无码人妻一区二区三区品| 欧美日韩在线综合| 天堂а√在线8种子蜜桃视频| 大胆欧美人体视频| jizz亚洲女人高潮大叫| 久久免费一区| 黄色亚洲在线| 欧美性猛交乱大交| 中文字幕一区二区三区四区| 亚洲视频 欧美视频| 亚洲国产成人在线视频| 免费人成在线观看播放视频| 国产精品成人免费视频| 日本午夜精品| 欧美乱大交xxxxx潮喷l头像| 国产在线一区二区| www.97视频| 欧美日韩中文国产| 国产精品麻豆一区二区三区| …久久精品99久久香蕉国产| 99久久香蕉| www.日本少妇| 国产91精品一区二区麻豆网站| 日韩欧美123区| 欧美日韩精品欧美日韩精品一 | 中文 欧美 日韩| 国产亚洲精品美女久久久久| 国产欧美一区二区三区精品酒店| 国产专区一区二区| 亚洲人成人一区二区三区| 日本在线不卡一区二区| 亚洲自拍偷拍欧美| 亚洲乱码国产乱码精品精软件| 精品中文字幕视频| 一区二区三区亚洲变态调教大结局 | 久久久久久久久久久久久久| 制服丝袜综合网| 中文字幕的久久| 亚洲熟妇无码久久精品| 久久九九亚洲综合| 日韩一区二区三区精品 | 亚洲欧美日韩一区在线观看| 日韩成人av一区二区| 精品久久久在线观看| 深夜福利免费在线观看| 日韩美女福利视频| 日韩激情一区| 男女视频在线观看网站| 亚洲一级二级在线| 手机看片1024日韩| 26uuu另类亚洲欧美日本一| 美女毛片一区二区三区四区| 最近免费中文字幕中文高清百度| 国产精品色一区二区三区| 97精品人妻一区二区三区香蕉 | 全网免费在线播放视频入口| 日韩欧美黄色影院| 老色鬼在线视频| 欧美在线视频二区| 精品一区二区三区免费视频| 麻豆疯狂做受xxxx高潮视频| 亚洲精品久久久一区二区三区| 亚洲一二三四| 亚洲 欧洲 日韩| 成人免费av资源| 免费av中文字幕| 九九精品视频在线| 久久成人高清| 久久艹这里只有精品| 高跟丝袜欧美一区| 秋霞a级毛片在线看| 国产精品久久久对白| 久久三级视频| 动漫性做爰视频| 精品视频—区二区三区免费| 成人高清一区| 日本香蕉视频在线观看| 国产欧美日韩中文久久| 99热这里是精品| 日韩免费精品视频| 欧美/亚洲一区| 91成人在线免费视频| 日韩一级黄色大片| 精品成人av| 2018日日夜夜| 亚洲色图清纯唯美| 久久久久久久久亚洲精品| 91欧美视频网站| 日韩精品福利网| 日韩精品一区三区|