结构光 - 当投影仪分辨率低于图案时应如何处理?

7

我正在尝试建立一个结构化光环境来进行3D扫描。

据我所知,如果我选择使用灰码来重构3D模型,我必须实现在2的幂次方(2^x,x = 0~10)中编码的特定图案。

enter image description here

也就是说,这些图案的分辨率至少为1024 x 1024。

但是,如果我的DLP投影仪只支持高达800 x 480的分辨率呢?当灰码图案的分辨率过高时(我尝试过),它会投射出莫尔纹图案。我该怎么办?

我的朋友建议我创建1024 x 1024的图案,并将它们“裁剪”成800 x 480,

但我认为灰码应该遵循特定的序列和图案,我朋友的建议会创建一些不对称的图像。

有没有人和我有同样的经历?

----------2015.8.4更新问题----------

我在想,如果我的投影仪无法完美地投射高分辨率的图案,我是否可以让它只投射低分辨率的图案,例如从2^0到2^6?

或者灰码严格要求使用2^0到2^10的图案?否则灰码将无法使用?


裁剪到800x480,不要重新缩放。我认为缺失的区域不会成为问题(除非您的软件需要1024条纹,但我怀疑这种情况)。 - user1196549
还要检查一下你的镜头是否足够好以支持这个空间频率(MTF曲线)。那么你的扫描仪/相机分辨率呢? - user1196549
1个回答

3

您不能直接缩小到您的分辨率

因为这会扭曲图案并使其无用

相反,您可以:

  1. crop it to your resolution

    but you need to handle that in the scanning part too because you would not have the full pattern available

  2. use nearest usable power of 2 resolution

    like 512x256 and create pattern for it. The rest of the space is unused (wasting pixels) 512x256

  3. use bullet #2 + scale up to fit your resolution better

    so create pattern 512x256 and linearly scale to fit to 800x480 as much as you can so:

    800/512 = 1.5625
    480/256 = 1.8750
    

    use the smaller scale (512x256 * 1.5625 -> 800x400) so scale the pattern by 1.5625 and use that as a pattern image

    800x400

    this is scaled by nearest neighbor to avoid subpixel grayscale colors which are harder to detect. This will waste less pixels but it can lower the precision of 3D scan !!!

这是我在C++和VCL中生成模式的方法:

// [generate pattern xs*ys power of 2 resolution]
// clear buffer
bmp->Canvas->Brush->Color=clBlack;
bmp->Canvas->FillRect(TRect(0,0,xs,ys));
int x,y,a,da;
for (da=0;1<<da<xs;da++);                   // number of bits per x resolution
for (a=0,y=0;y<ys;y++,a=(y*da)/ys)
 for (x=0;x<xs;x++)
  if (int((x>>a)&1)==0) pyx[ys-1-y][x]=0x00FFFFFF;
bmp->SaveToFile("3D_scann_pattern0.bmp");
  • bmp 表示VCL位图
  • xs,ys 表示位图的分辨率
  • p[ys][xs] 直接访问32位像素位图

这个与您的模式略有不同!!!

[注]

  • 如果需要精确,请使用第2个要点
  • 如果需要覆盖更大的区域,请使用第3个要点
  • 由于这只是1D编码,因此您也可以在y轴和x轴中以不同的比例缩放

我想你是指第一行和第一个小圆点中的“投影仪分辨率”,对吗?还是你指的是我的电脑(笔记本)分辨率? - APU
@APU 当然,投影仪的分辨率...可视化设备与扫描无关。你需要注意的只有投影仪和相机的分辨率... - Spektre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接