精品欧美一区二区三区在线观看 _久久久久国色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| a视频在线观看| 一区二区国产精品| 亚洲三级 欧美三级| 日韩欧美综合在线视频| 91免费福利视频| 久久久久久久伊人| 国产99久久久国产精品成人免费| 91传媒视频在线播放| 超碰成人在线免费观看| 俄罗斯嫩小性bbwbbw| 丝袜美腿亚洲色图| 欧美猛交免费看| 黄色录像a级片| 麻豆久久久久| 午夜日韩在线观看| 一区二区三区四区在线视频| 天天干天天色天天| 老司机精品视频在线| 久久久久久久久网站| 亚洲精品成人av久久| 成人h动漫精品一区二区器材| 色偷偷久久一区二区三区| 做爰高潮hd色即是空| 亚洲aⅴ乱码精品成人区| 国模娜娜一区二区三区| 日韩av大片在线| 毛片aaaaa| 欧美成人自拍| 亚洲欧美一区二区三区四区 | 性活交片大全免费看| 粉嫩一区二区三区| 偷拍一区二区三区四区| 国产人妻互换一区二区| 国产天堂素人系列在线视频| jvid福利写真一区二区三区| 51国偷自产一区二区三区的来源 | 91福利精品视频| 国产亚洲黄色片| 浪潮av一区| 国产欧美日韩另类一区| 精品欧美日韩在线| 亚洲免费成人网| 久久99久国产精品黄毛片色诱| 亚洲精品免费观看| 日韩精品免费一线在线观看| 麻豆传媒在线看| 韩国理伦片久久电影网| 91福利国产成人精品照片| 欧美 丝袜 自拍 制服 另类| 亚洲综合伊人久久大杳蕉| 中文文精品字幕一区二区| 免费国产一区| 四虎永久在线观看| www.av精品| 国产伦精品一区二区三区照片91 | 欧美一区二区在线看| 91极品视频在线观看| 日韩av超清在线观看| 日本乱人伦一区| 国产精彩免费视频| 日韩三区免费| 在线亚洲一区二区| 午夜免费精品视频| 久久亚洲精品中文字幕| 欧美日韩一区二区在线观看视频| 玩弄japan白嫩少妇hd| 欧美日韩视频网站| 欧美午夜影院一区| 日韩av卡一卡二| 成人污污视频| 日韩女优电影在线观看| 日本wwwwwww| 国产无遮挡裸体免费久久| 成人一二三区视频| dy888夜精品国产专区| 国产99视频在线| 国产91富婆露脸刺激对白| 99re在线视频上| 手机av在线免费观看| 99精品欧美一区二区三区小说 | 九色精品美女在线| 国产一级av毛片| 麻豆成人精品| 国产欧美日韩专区发布| 亚洲r级在线观看| 国产99久久久| 日本va欧美va精品| 91九色在线观看| 熟妇人妻一区二区三区四区| 国产亚洲一二三区| 中文字幕一区二区三区四区五区六区 | 午夜在线激情影院| 性感美女久久精品| 午夜免费一区二区| 日韩中文字幕视频网| 日韩精品高清视频| 九九热久久免费视频| 激情欧美一区二区三区| 日韩免费在线看| 国产www免费观看| 99精品视频一区二区| 亚洲欧美国产精品桃花| 欧美性爽视频| 欧美亚洲动漫精品| 香蕉在线观看视频| 日本电影一区二区| 午夜精品美女自拍福到在线| 中文字幕 日韩有码| 国产精品一卡二卡在线观看| 欧美日韩亚洲在线| 超碰在线观看免费| 91激情五月电影| 手机看片国产精品| 国产精品美女久久久久久不卡 | 亚洲一区二区自偷自拍| 亚洲情侣在线| 国产精品久久久久久av福利软件 | 欧美日韩在线不卡一区| www久久日com| 欧美主播一区二区三区美女| 2025中文字幕| 久久在线视频免费观看| 成人av电影在线观看| 精品国产一区二区三区久久狼黑人| 麻豆一区二区三区精品视频| 久久超级碰视频| 欧美激情导航| 国产高清中文字幕在线| 欧美一区二区在线播放| 国产精品无码无卡无需播放器| 激情综合中文娱乐网| 成人高清视频观看www| 狠狠v欧美ⅴ日韩v亚洲v大胸| 亚洲丶国产丶欧美一区二区三区| 一级做a免费视频| 精品毛片免费观看| 奇米一区二区三区四区久久| 蜜臀久久99精品久久久| 亚洲日本欧美天堂| 中文字幕在线观看日| 欧美理论电影大全| 国产成人精品电影久久久| 日本精品一区二区在线观看| 亚洲国产美国国产综合一区二区| 一区二区久久精品| 欧美韩日高清| 国产一区二区香蕉| 色综合久久影院| 欧美色手机在线观看| 欧美多人猛交狂配| 葵司免费一区二区三区四区五区| 精品视频一区在线| 美女的胸无遮挡在线观看| 亚洲福利在线观看| 日韩av在线电影| jvid福利写真一区二区三区| 国产二区视频在线| 国产精品22p| 97视频在线看| 日本中文字幕电影在线观看| 欧美视频精品一区| 久久久久久国产精品无码| 久久最新视频| 亚洲欧洲另类精品久久综合| 亚洲国产精选| 欧美精品在线免费观看| 午夜精品久久久久久久第一页按摩 | 一本一本久久a久久综合精品| 国产欧美婷婷中文| 日本久久精品一区二区| 激情不卡一区二区三区视频在线| 日韩视频亚洲视频| 国产乱淫a∨片免费视频| 亚洲另类一区二区| 国产69视频在线观看| 亚洲激情网址| 茄子视频成人在线观看| av成人免费看| 欧美成年人视频| 午夜av免费观看| 日本黄色一区二区| 天堂а√在线中文在线鲁大师| 国内精品不卡在线| av在线播放亚洲| 欧美日韩有码| 97se国产在线视频| 一个人www视频在线免费观看| 亚洲三级av在线| av一区二区三| 色综合激情久久| 日韩女优一区二区| 91日韩精品一区| 中文字幕在线视频精品| 国产综合视频| 深夜福利成人| 77成人影视| 国产精品国产三级国产专播精品人| 国产区在线观看| 亚洲精品成人久久| 一本大道伊人av久久综合| 亚洲国产成人91porn| 夫妇露脸对白88av| 99久久久精品| 亚洲精品永久视频| 香蕉久久夜色精品国产| 亚洲一区二区三区午夜| 久久人人爽人人爽人人片av不| 国产精品男人的天堂| www在线观看黄色| 深夜福利一区二区| 婷婷视频在线观看| 91精品国产综合久久久久| 成人免费看片98欧美| 亚洲欧洲99久久| 国产特黄级aaaaa片免| 国产在线视频一区二区| 日韩一级在线免费观看| 黄色av日韩| 中文字幕黄色大片| 国产传媒欧美日韩成人精品大片| 99中文字幕| 日本欧美在线| 亚洲综合在线观看视频| 欧美日韩国产免费一区二区三区 | 亚洲欧美一区二区久久| 在线观看日韩精品视频| 国产成人精品综合在线观看| www.久久久精品| 亚洲综合99| 97在线国产视频| 婷婷综合网站| 亚洲欧美日韩国产成人综合一二三区| 高潮久久久久久久久久久久久久 | 久久久久久91亚洲精品中文字幕| 一区二区在线观看免费视频播放| 成熟人妻av无码专区| 91网站最新网址| 国产婷婷在线观看| 成人性色生活片| 中文字幕一二三| 国产麻豆视频精品| 中文字幕日韩综合| 奇米精品一区二区三区四区| 激情综合网俺也去| 奶水喷射视频一区| 欧美精品一区免费| 亚洲精品影院在线观看| 日本人体一区二区| 影音先锋亚洲电影| a级免费在线观看| 欧美激情综合| www.男人天堂网| 亚洲无线视频| 拔插拔插海外华人免费| 欧美午夜国产| 欧美做暖暖视频| 欧美激情性爽国产精品17p| 男人天堂成人网| 欧美ab在线视频| 欧美在线观看黄| 亚洲欧美亚洲| 日本香蕉视频在线观看| 伊人狠狠色j香婷婷综合| 超碰成人免费在线| 9色国产精品| 国产精品97在线| 免费人成网站在线观看欧美高清| 激情综合网俺也去| 老司机午夜精品| 日批视频在线看| caoporen国产精品视频| 添女人荫蒂视频| 国产欧美日韩精品在线| 亚洲一级二级片| 一区二区三区日韩欧美| 久久久久久久福利| 精品国产乱码久久久久久虫虫漫画| 国产精品美女久久久久av爽| 色一情一乱一乱一91av| 中国老头性行为xxxx| 这里只有精品电影| 国产欧美一区二区视频| 亚洲精品v亚洲精品v日韩精品| 99精彩视频在线观看免费| 嫩草国产精品入口| 热re99久久精品国产99热| 日韩精品91| 欧美另类videosbestsex日本| 亚洲理论在线| 亚洲五月天综合| 国产一区欧美日韩| 亚洲一级Av无码毛片久久精品| 26uuu精品一区二区| 黄色片网站在线播放| 夜夜夜精品看看| 91午夜精品亚洲一区二区三区| 欧美精品v国产精品v日韩精品| 懂色av成人一区二区三区| 亚洲午夜色婷婷在线| 色爱综合区网| 国产精品久久91| 天堂精品久久久久| 欧美一区二区三区四区在线观看地址 | 国内精品久久久久久久影视蜜臀 | 日韩一区二区三区av| 午夜视频在线播放| 久久精品99无色码中文字幕| 国产高清中文字幕在线| 国产精品专区一| 鲁大师精品99久久久| 强伦女教师2:伦理在线观看| 鲁大师影院一区二区三区| 91亚洲一区二区| 国产欧美综合在线| 日本天堂在线视频| 欧美一区二区三区四区五区| 国产在线视频网址| 国内精品免费午夜毛片| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 九九热播视频在线精品6| 日韩中文字幕av在线| 久久99国产精品视频| 天天干天天操天天干天天操| 亚洲欧洲一区| 日韩一区二区三区不卡视频| 久久9热精品视频| 国产精品高清无码在线观看| 一区二区在线免费观看| 在线亚洲欧美日韩| 亚洲国产成人av在线| 在线视频自拍| 欧美亚洲视频在线观看| 日韩乱码人妻无码中文字幕| 五月天激情小说综合| 国产精品羞羞答答在线| 尤物精品国产第一福利三区| av资源在线播放| 99国产超薄丝袜足j在线观看| 99成人在线视频| www.欧美日本| 国产亚洲一区二区三区四区 | 手机在线免费毛片| 久久欧美中文字幕| 久草网视频在线观看| 欧美性生活影院| 国产在线视频网址| 国产成人精品免费久久久久| 日本天堂一区| 亚洲国产一二三精品无码 | 一区二区三区四区中文字幕| 一级特黄录像免费看| 在线日韩av观看| 嫩草伊人久久精品少妇av杨幂| 久久综合婷婷综合| 国产亚洲毛片在线| 中文字幕一区二区人妻在线不卡| 五月综合激情婷婷六月色窝| 日本精品久久久久| 91国产精品91| 婷婷综合福利| www日韩视频| 中文一区二区在线观看| 亚洲天堂中文网| 久久夜色精品国产| 日韩三级久久| 久久这里只有精品23| 久久影院午夜片一区| 波多野结衣影片| 色妞欧美日韩在线| 亚洲欧洲专区| 在线观看日韩片| 国产一区 二区 三区一级| 久久免费视频精品| 亚洲激情自拍图| 一呦二呦三呦精品国产| 亚洲欧美日韩不卡一区二区三区| 久久狠狠亚洲综合| 18岁成人毛片| 亚洲国模精品私拍| 日本精品在线中文字幕| 亚洲最新免费视频| 岛国精品在线观看| 天天操天天摸天天干| 在线视频中文亚洲| 一区二区三区国产好| 777久久久精品一区二区三区| 久久精品免视看| 99久久精品国产色欲| 午夜精品免费视频| av一区二区高清| 亚洲午夜精品在线观看| 天天操天天干天天综合网| 久草在线青青草| 亚洲自拍偷拍色图| 久久精品观看| 国产67194| 亚洲人成电影网站色www| 四虎精品在线观看| 国产精品xxxxx|