物体体积计算/估计
我想计算或至少估计放置在相机/kinect 前面的物体的体积。知道我应该从哪里开始吗?你推荐 OpenCV 吗?您是否推荐任何其他技术,例如声纳/激光?
I'd like to calculate or at least estimate the volume of an object that is placed in front of a camera/kinect. Any idea of where should I start from? Do you recommend OpenCV? Do you recommend any other technology such as sonar/laser?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一直在 OpenCV 2.3 中编写一个关于手部识别的项目,其中的一个重要部分是确切地知道我们想要提取哪些特征以及从哪个对象中提取?当你说你想要体积时,你当然需要在 3D 空间中工作,或者做出一些相当苛刻的假设。就 kinect 而言,您当然会在 3D 空间中工作,但单角度透视将再次迫使您做出一些重大假设。
我在绘画中做了一个小例子。如下所示

物体的白色区域,是没有深度信息的感知角度。
蓝色是带有深度信息的感知角度。
红色根本就没有任何信息。
在第一个示例中,您甚至不知道它是球体还是圆,因此体积计算几乎是不可能的,除非您知道正在使用球体。
在第二个示例中,使用了 kinect,仅向我们提供了一半球体的深度信息,我可以合理地假设该感知的半球体实际上是一个球体,并且将根据当前信息计算出的体积加倍。
最后一个例子是多角度的。我使用类似的方法在 3d 空间中跟踪水瓶火箭。我会给予一定程度的深度感知。但我认为类似的方法可以用于多个 kinect,从而提供一组非常详细的数据。
我在这里试图了解的是......了解您将遇到的对象类型,找出您愿意在硬件和设置上牺牲什么以获得更精确的数据,并确保根据以前的数据做出合理的假设。
希望答案有用(并且我花在绘画上的时间是值得的:D)
Been writing a project on hand recognition in OpenCV 2.3, and an essential part of this, was to know exactly what features we wanted to extract, and from what object?. When you say you want the volume, you will of course need to work in 3d space, or make some pretty harsh assumptions. In terms of the kinect, you will of course be working in 3d space but single angle perspective will yet again force some big assumptions.
I made a little example in paint. Shown below

White areas of an object, is the perceived angle with no depth information.
Blue is perceived agle with depth information.
Red is no information at all.
In the first example you won't even know whether it is a sphere or a circle, so volume calculation will be close to imposible, unless you know that you are working with spheres.
In the second example, a kinect is used, giving us a depth information on only half of th sphere, i would be resonable to assume that this perceived half-sphere is infact a sphere, and double the volume calculated from the current information.
Last exaple is multi angular. I've used a similar method to track a water bottle rocket in 3d space. I will give a depth perception to some degree. But I think a similar approch could be used with multiple kinects, giving a very detailed set of data.
What I'm tryig to get at here is... know the types of object you will encounter, find out what you are willing to sacrifice in hardware and setup to get more precise data, and be sure to make reasonable assumptions based on former.
Hope answer was usefull (and that my time spent in paint was worth it :D )
OpenCV 绝对值得一看,但如果您真的专注于 3D 处理,我建议您查看点云库 (PCL)。它具有比 OpenCV 更多的 3D 处理专用功能。但是,这两个项目都是由 Willow Garage 运营的,因此随着时间的推移,两者之间应该会有更多的整合。 PCL 可以很容易地与 Kinect 集成,因此您可以快速上手。 这里是一个很好的入门教程列表。
OpenCV is definitely worth looking at, but if you're really focused on 3D processing I would recommend checking out the Point Cloud Library (PCL). It has far more features specific to 3D processing than OpenCV does. But, both projects are run by Willow Garage, so there should be more integration between the two as time goes by. The PCL will integrate quite easily with the Kinect, so you can get started quickly. Here is a good list of tutorials to get you started.