【发布时间】:2009-07-20 14:08:19
【问题描述】:
我正在使用 XNA 构建一个项目,在该项目中,我可以使用 LCD 投影仪和单色相机在墙上绘制“涂鸦”,该相机经过过滤后只能看到手持激光点指针。我想使用任意数量的激光笔——此时并不真正关心区分它们。
墙是 10' x 10',相机只有 640x480,所以我尝试使用样条曲线进行亚像素测量,如下所述:tpub.com
相机以 120fps(8 位)运行,所以我向大家提出的问题是找到亚像素激光点中心的最快方法。目前,在进行样条插值之前,我正在使用蛮力 2D 搜索来查找图像上最亮的像素(0 - 254)。这种方法不是很快,而且每一帧对计算机的时间都比它们输入的时间要长。
编辑:澄清一下,最后我的相机数据由表示像素亮度的二维字节数组表示。
我想做的是使用 XNA 着色器为我处理图像。那实用吗?据我了解,确实没有办法在像素着色器中保留持久变量,例如运行总计、平均值等。
但是为了争论,假设我使用蛮力找到了最亮的像素,然后使用 texcoords 将样条曲线的它们及其相邻像素存储到 X 个顶点中。那么使用 HLSL 使用 texcoords 计算样条曲线是否实用?
我也愿意接受我的 XNA 框之外的建议,无论是 DX10/DX11,也许是某种 FPGA 等。我只是对以这种方式处理数据的方式并没有太多经验。我想如果他们可以在使用 2 节 AA 电池的 Wii-Mote 上做这样的事情,那么我可能会走错路。
有什么想法吗?
【问题讨论】:
-
什么是慢,做扫描还是做样条插值?
-
样条插值是迄今为止最慢的组件,具体取决于我评估样条的增量。在这种情况下,我想要 0.1px 的精度。
-
我应该补充一点,如果我有 20 个激光器,则样条计算在 CPU 方面将变得非常昂贵。
-
酷。这对于任何数量的激光器都是完全可行的。实时显示粗略版本。一次从粗略到更高分辨率的屏幕矩形线,或者在绘制完成后。
-
如果您有投影仪,则可以投影您正在拍摄的同一区域,只要颜色不同并且您将输出过滤为不可见。
标签: c# visual-studio-2008 xna