草庐IT

如何利用CloudCompare软件进行点云数据标注

拉姆哥的小屋 2023-05-07 原文

目录

一、CloudComparer软件介绍

二、如何进行点云数据的人工“打标签”

一、CloudComparer软件介绍

CloudCompare是一个三维点云(网格)编辑和处理软件。最初,它被设计用来对稠密的三维点云进行直接比较。它依赖于一种特定的八叉树结构,在进行点云对比这类任务时具有出色的性能【1】。此外,由于大多数点云都是由地面激光扫描仪采集的,CloudCompare的目的是在一台标准笔记本电脑上处理大规模的点云——通常超过1000万个点云。在2005年后,cloudcompare就实现了点云和三角形网格之间的比较。随后,许多其他点云处理算法(配准、重采样、颜色/法线向量/尺度、统计计算、传感器管理、交互式或自动分割等)以及显示增强工具(自定义颜色渐变、颜色和法向量处理,校准图像处理、OpenGL着色器、插件等),中文版的CloudCompare界面如下:

 详细的CloudCompare软件基本介绍可以参考:CloudCompare的介绍_Being_young的博客-CSDN博客

软件下载地址:CloudCompare - Downloads

二、如何进行点云数据的人工“打标签”

我们首先双击进入中文版软件中:

 进入软件后的界面:

接下来我们需要选择我们的数据,如下是我们要进行点云标注的原始数据:(均是pcd文件,txt文件也可以由该软件打开) 

 接着我们将一个pcd文件拖入CloudCompare软件,或者通过文件->打开,来打开文件,用鼠标左键进行拖动可以调整图像的视角方向,滚轮可以调整图像大小,右键按住拖动可以调整图像放大缩小的中心位置。

注意!!!接下的操作来一定要在软件全屏的模式下进行,不然有一些选项可能会看不到。接下来我们选择(点击)一个文件下的框选文件,如下图:这时会出现一个三维立体框把我们的所有点云数据框起来,注意,只有在选中这个文件的情况下可以进行点云的标注。

接着我们选择“框选”按钮,即标有剪刀形状的选项,这时软件会要求我们框选一个目标区域: 

 点击鼠标左键选取第一个点,接着围绕我们需要框选的目标区域一次鼠标左键点击(不限制次数,可以完成任意二维图像的选取)最后一次右击鼠标即可完成整个框选的过程(这里框选的是二维图像,软件会根据框选区域自动匹配其对应的三位区域)。

 最后我们点击如图所示红色的按钮(注意不是绿色),表示选择我们框选的内部作为一个新的点云文件:

 选择之后我们可以看到现在只剩下我们刚刚框选的区域的内部点:

 如果我们刚刚选择绿色的按钮,则表示选择框选区域外部的点作为一个新的点云文件:

 接下来,选择确认按钮来保存我们需要的分割后的点云文件。

可以看到点击之后即会在我们框选的地方出现一个标注框,这个标注框标注的地方即为我们需要打标签的地方,这里我们可以看到有两个文件,第一个是未经过标注的原始的pcd文件,另一个是标注过后的需要的pcd文件:

接着我们要对刚刚划分的区域与未划分的区域进行数据标注,这里我们对于框选出的区域标注1,未框选的部分标注0,选中其中的一个文件(图像中要出现选中它的框才表示选中了)点击图中的“+”号:这里的命名可以随意,只要保证两个文件的名字一样即可:

 这里我们命名为aaa,值设置为0(这里选中的是大的未经过框选的区域)

                     

接着同样的方法选中小的框选过后的区域命名为aaa,它的值设置为1.

                     

为了能够实现利用标签区分开我们框选后的区域以及未框选的区域,我们现在需要合并两个pcd文件,按住ctrl键同时选中两个文件(这时的两个文件都应该变成蓝色):

这里我们选择NO。

 合并之后可以看到右侧只有一个文件了:

这个文件就是我们最后的标注完成的点云,当然标注的区域即为未来将要进行点云分割任务的目标区域,如果有需要,我们的标注区域还可以有更多,用同样的方法进行文件合并即可。最后我们把文件保存即可看到具有标签的数据(最后一列的数据表示标签)。

 

 如果需要软件或者点云数据的小伙伴可以私信我哦!

有关如何利用CloudCompare软件进行点云数据标注的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  4. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  5. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  6. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  7. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  8. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  9. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  10. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

随机推荐