2011-03-10 111 views
2

所以我一直在使用gnu-gsl和CImg来实现仿射和度量校正的一些基本投影空间技术。图像转换

我已经完成计算仿射矫正,但是我很难弄清楚如何将仿射矫正矩阵应用到原始(输入)图像。

我目前的思维过程是针对每个像素坐标在输入图像上进行迭代。然后乘以仿射校正矩阵的原始像素坐标(转换为齐次坐标)以获得输出像素坐标。

然后使用输出像素坐标访问输出图像,并使用原始图像的像素颜色对输出图像的像素位置执行混合(加法)操作。

这听起来没错吗?在将原始像素坐标乘以仿射校正矩阵后,我得到了许多非常奇怪的值。

回答

1

不,你的价值观不应该很奇怪。你为什么不做一个简单的例子,一个小的翻译小范例;例如

x' = 1.01*x + 0.0*y + 5; 
y' = 0.0*x + 0.98*y + 10; 

现在(10,10)处的像素应该映射到(15.1,19.8),对不对?

如果你想制作一个很好的输出图像,你应该找到正向投影,然后反向投影到输入图像并插入,而不是尝试混合到输出图像。否则,最终会在输出中出现空白。

您需要注意您的术语;这听起来像你在做计划,有时也被称为计算机图形学界的翘曲。整顿是另一回事,但这取决于你在做什么。

+0

我想出了我的问题的一个主要部分与坐标规范化有关。 *叹*有点明显。话虽如此,我注意到我从系统中获得的大部分图像坐标都是负值。他们看起来像像素坐标,只是负面的。有点奇怪......我想我可以比较一下gnu-gsl和Matlab的对比。 至于应用转换,我找到了一些引导矩阵 - 向量乘法(元素明智)的参考代码。这似乎是在做伎俩。 – 2011-03-11 16:14:46

+0

这听起来像你应该做一个小实例,用已知的测试数据,已知的参数和已知的结果。然后,当您修复您的系统时,可以放弃协调正常化,原点位置等问题。 – koan 2011-03-11 16:55:32