Image processing 图像变换

Image processing 图像变换,image-processing,image-manipulation,Image Processing,Image Manipulation,所以我一直在使用gnu gsl和CImg来实现一些基本的射影空间技术,用于仿射和度量校正 我已经完成了仿射校正的计算,但是,我很难弄清楚如何将仿射校正矩阵应用于原始(输入)图像 我目前的想法是迭代每个像素坐标的输入图像。然后将原始像素坐标(转换为齐次坐标)乘以仿射校正矩阵,得到输出像素坐标 然后使用输出像素坐标访问输出图像,并使用原始图像的像素颜色对输出图像的像素位置执行混合(添加)操作 听起来对吗?将原始像素坐标乘以仿射校正矩阵后,我得到了很多非常奇怪的值。不,你的值不应该奇怪。你为什么不做一

所以我一直在使用gnu gsl和CImg来实现一些基本的射影空间技术,用于仿射和度量校正

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

我目前的想法是迭代每个像素坐标的输入图像。然后将原始像素坐标(转换为齐次坐标)乘以仿射校正矩阵,得到输出像素坐标

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


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

不,你的值不应该奇怪。你为什么不做一个简单的例子,一个小规模的小翻译;e、 g

x' = 1.01*x + 0.0*y + 5;
y' = 0.0*x + 0.98*y + 10;
现在(10,10)处的像素应该映射到(15.1,19.8),对吗

如果你想制作一个漂亮的输出图像,你应该找到正向投影,然后反向投影到输入图像并在那里进行插值,而不是试图混合到输出图像中。否则,输出中将出现间隙


在这里你需要小心你的术语;我觉得你在做投影,在计算机图形学界有时被称为扭曲。纠正是另外一回事,但这取决于你在做什么。

我发现我的问题的一个主要部分与坐标标准化有关。叹息有点明显。话虽如此,我注意到我从系统中得到的大多数图像坐标都是负值。它们实际上看起来像像素坐标,只是负数。有点奇怪…我想我可以把gnu gsl和Matlab做比较。至于应用转换,我找到了一些进行矩阵向量乘法(元素级)的参考代码。这似乎起到了作用。在我看来,你应该用已知的测试数据、已知的参数和已知的结果来做一个小的地面真相示例。然后,在修复系统时,可以避免坐标标准化、原点位置等问题。