坡度与法向量

在空间中,每一个顶点都有一个法向量,来描述该顶点所在的面的朝向,这个法向量有时候也可以用坡度来表示。



 如图所示,n为法向量,可以由水平的夹角坡向和Z轴的夹角坡度来表示,其中坡向是0-2π的范围,而坡度是0-π/2的范围。一般我们不是这样描述坡度的,我们使用坡度在x轴上的坡度值和y轴上的坡度值来描述,坡度和破角。

 

坡度与法线的转换:

这个转换在凹凸贴图里面用过,当初实现贴图技术的时候直接使用的是法线贴图,看来老的技术还是有一些东西可以学的到的。

1.求坡度值:

  x_gradient = pixel(x-1, y) - pixel(x+1, y)

  y_gradient = pixel(x, y-1) - pixel(x, y+1)

 坡度值是用高度求的,表示一个顶点的坡度的时候只需要(x,y)即可。

2.根据坡度求法向量:

float normal = normal + Tangent*u_gradient+Binormal*v_gradient;

 这个是在TBN法线空间完成的,所以Tangent和Binormal其实是两个轴。相比法向量而言,在高度图里计算坡度值是很容易的,这也是为啥一般地形图计算的时候给出的是坡度图的原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
点云坡度滤波是一种基于点云的地形分析方,可以用于去除地形上的噪声,提取地形的特征。Matlab是一种常用的科学计算软件,可以用于点云坡度滤波的实现。下面是一个基于Matlab的点云坡度滤波的示例代码: ```matlab function [filtered_points] = slope_filter(points, slope_threshold) % slope_filter: slope-based point cloud filtering % points: Nx3 matrix of point cloud coordinates (x,y,z) % slope_threshold: threshold angle in degrees for slope-based filtering % filtered_points: Mx3 matrix of filtered point cloud coordinates % calculate point normals normals = pcnormals(pointCloud(points)); % calculate slope slope = atan2(sqrt(normals(:,1).^2 + normals(:,2).^2), normals(:,3)) * 180/pi; % filter points based on slope filtered_indices = slope < slope_threshold; filtered_points = points(filtered_indices,:); end ``` 使用方: ```matlab % load point cloud data load('point_cloud.mat'); % set slope threshold slope_threshold = 10; % degrees % filter point cloud based on slope filtered_points = slope_filter(points, slope_threshold); % visualize original and filtered point cloud figure; pcshow(pointCloud(points)); title('Original Point Cloud'); figure; pcshow(pointCloud(filtered_points)); title('Filtered Point Cloud'); ``` 其中,`points`是一个Nx3的矩阵,表示点云的坐标;`slope_threshold`是一个阈值,用于过滤斜率小于该值的点;`filtered_points`是一个Mx3的矩阵,表示过滤后的点云坐标。在示例代码中,使用了Matlab自带的`pcnormals`函数计算点云的向量,然后根据向量计算点云的斜率,最后根据斜率过滤点云。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值