c#前端实现对pcl点云颜色根据强度特征动态变化突出指定对象

本文主要是介绍c#前端实现对pcl点云颜色根据强度特征动态变化突出指定对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

本文主要介绍如何使用c# winform对点云颜色根据点云强度信息对显示的点云颜色进行动态调整。
目的是根据强度信息采用不同的颜色特征突出不同的物体。

一、点云强度是什么?

点云强度又可以叫做反射率,
通常常见的点云格式包括:以pcl为例

  (pcl::PointXYZ)             \(pcl::PointXYZI)            \(pcl::PointXYZL)            \(pcl::PointXYZRGBA)         \(pcl::PointXYZRGB)          \(pcl::PointXYZRGBL)         \(pcl::PointXYZHSV)          \       (pcl::PointNormal)          \(pcl::PointXYZRGBNormal)    \(pcl::PointXYZINormal)      \(pcl::PointXYZLNormal)  

那么再以上的几种格式中,出现一种我们发现 pcl::PointXYZI、pcl::PointXYZINormal中出现了一个I,这里代表的就是点云的强度值,其对应的就是下图XYZI格式中的intensity 信息,下图也是标准的PCD点云保存的头部文件格式类型。
在这里插入图片描述
那么,根据点云的强度信息,我们可以对点云中获得些什么样的信息呢?
如下图所示,我们可以通过调节强度值来突出一些点云物体的轮廓和边界(比如红色矩形框内的信息)。有利与对指定物体或指定对象的观测或提取。
在这里插入图片描述在这里插入图片描述
那么我们怎么根据点云的强度信息对点云进行对比度增强呢,或者说根据强度信息提取自定的物体。

二、使用步骤

1.c#+winform系统界面搭建

首先,要做到手动的对点云强度信息进行修改,就需要先搭建一个可以显示点云的工具。具体的搭建过程可参考博客c#界面中显示PCL点云数据
或者也可下载VS工程源码c#窗体界面中显示点云图像源码

此处我们搭建一个如下的界面(包括ImageBox 按钮、滑动块)
在这里插入图片描述
然后我们再C++代码中通过获取滑动块的数值对点云的强度值范围进行调整。
此处我们将点云中强度超过滑动块数值的点的intensity设置为0.

for (int i = 0; i < NewTypeCloud->size(); i++) {if (NewTypeCloud->points[i].intensity > model) {inputCloud->points[i].intensity = 0;}else {inputCloud->points[i].intensity = NewTypeCloud->points[i].intensity;}
}

然后再根据点云的强度信息对点云进行可视化

pcl::visualization::PointCloudColorHandlerGenericField<PointT> fildColor(Input_cloud, "intensity"); // 按照x字段进行渲染
input_viewer->addPointCloud<PointT>(Input_cloud, fildColor, "Input_RGB"); // 显示点云,其中fildColor为颜色显示
}
input_viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, ShowSize,"Input_RGB");

注意,要实现对点云强度信息的动态调整,需要设置滑动块的属性,设置鼠标在该控件上的释放属性
在这里插入图片描述
效果如下
在这里插入图片描述
在这里插入图片描述

这篇关于c#前端实现对pcl点云颜色根据强度特征动态变化突出指定对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/227760

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解