algorithm - 通过360度旋转和图像处理得到点云

标签 algorithm math image-processing 3d scanning

我的问题分为两部分……

问题(简​​而言之):

• 生成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 隐藏了我想知道的所有东西……

有没有高手…….谁知道这整件事,让我脱离陷阱……!!!! enter image description here

谢谢……

最佳答案

我没有这方面的经验,但如果我想做这样的事情,我会尝试这个:

  1. 使用单色光源
  2. 如果可能,创建一个落在对象的薄垂直切片上的光源。
  3. 拥有 360 度黑白图像,这些图像将是具有不同强度的垂直线的图像。如果您使用 matlab,您的矩阵将有一个/几个具有相同值的列。
  4. 现在假设一条垂直线(您的旋转轴)。 5 plot or convert (imageno, rownoOfMatrix, ValueInPopulatedColumnInSameRow)... [假设编号图像从0到360]
  5. 在理想条件下获得 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/

相关文章:

math - 如何缩小一个值?

java - 在字节数组上模拟吉他放大器的失真

math - 如何检测同一平面上的圆和任何其他圆之间的交点?

algorithm - 找出具有混合线性和多项式时间的算法的时间复杂度

c++ - Dijkstra 算法 C++ 输出不正确

algorithm - 在序列化 BST 时,为什么顺序必不可少?

java - Android 上的着色图像处理

java - 如何使用 Floyd–Steinberg 抖动将 24 位 PNG 转换为 3 位 PNG?

c++ - ImageMagick 撰写 :args ="" to Magick++ API

c# - 如何确定一个位序列是正数还是负数