我的问题分为两部分……
问题(简而言之):
• 生成point cloud真实世界的对象……
• 通过它的 360 度旋转......在旋转台上
• 获取 360 度图像……每个角度(1° 到 360°)一张图像。
• 我知道如何处理图像并获取图像的像素值。
• 请参阅下面的示例图像……您可以看到图像是黑白的……因为我必须处理非常 Shiny (闪闪发光)的物体……它是钻石。所以我设置了背景,以便将 Shiny 的对象(钻石)转换为黑白对象。因此我可以轻松扫描物体的外边缘(例如钻石)。
• 需要考虑的一件事是我不使用任何激光……我只使用一个旋转台和一台相机拍摄图像……你可以在 here 上看到一个示例项目......但是 MATLAB 隐藏了所有的东西......因为那个人使用 MATLAB 的内置功能。</p>
• 实际上,我正在寻找数学例程或算法或任何帮助我了解如何获取点云的技术…….使用我提到的方式……..
更多细节:
我需要真实世界对象的点云。所以,我可以在计算机屏幕上显示它。
为此,我使用了一个旋转台。我会把我的物体放在上面,然后将 table 旋转 360°,然后拍摄 360 度图像……每个角度(1° 到 360°)拍摄一张图像。
用于拍摄图像的相机经过良好校准。我给出了一张示例图片,如下所示。我也知道如何扫描图像并获取它的像素值。
还要考虑到我的图像是 Silhouette类型……意味着只有黑白……没有彩色图像。
但我的问题是或者我被困在...
从我通过图像处理获得的数据中获取对象的点云。
我在 here 上找到的一个同类项目…….. 但它只是使用内置的 MATLAB 函数……我使用的是 Microsoft Visual C#.Net,所以我必须自己构建整个算法……因为 MATLAB 隐藏了我想知道的所有东西……
有没有高手…….谁知道这整件事,让我脱离陷阱……!!!!
谢谢……
最佳答案
我没有这方面的经验,但如果我想做这样的事情,我会尝试这个:
- 使用单色光源
- 如果可能,创建一个落在对象的薄垂直切片上的光源。
- 拥有 360 度黑白图像,这些图像将是具有不同强度的垂直线的图像。如果您使用 matlab,您的矩阵将有一个/几个具有相同值的列。
- 现在假设一条垂直线(您的旋转轴)。 5 plot or convert (imageno, rownoOfMatrix, ValueInPopulatedColumnInSameRow)... [假设编号图像从0到360]
- 在理想条件下获得 X 和 Y 的蹩脚方法使用 K1 * cos imgNo * ValInCol 和 K1 * sin imgNo * ValInCol,Z 将是一些 K2 * rowNum.. K1 和 K2 可以在知道对象的实际大小的情况下进行校准.
我的意思是这样的: http://fab.cba.mit.edu/content/processes/structured_light/
但不是使用单个垂直光来使用结构光
http://www.geom.uiuc.edu/~samuelp/del_project.html此链接可能有助于三角测量...
关于algorithm - 通过360度旋转和图像处理得到点云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5974349/