2011-01-12 87 views
0

我想在这里做一个项目,这是我希望实现以下几点:与图像像素工作

我有一个旋转矩阵和平移矩阵估计,现在我已经在某个位置的图像和我想乘旋转矩阵的所有图像像素,并将结果添加到转换矩阵.....

我的问题是如何使用像素?我的意思是如何从图像中提取像素以执行上面提到的操作?

它的确定给我的建议,在任何OpenCV的或C++

* 我需要知道如何做到这一点的操作 new_p(X,Y)= old_p(X,Y)* rotation_matrix + translation_matrix。 我正在定义像IplImage(),3通道图像的图像。 现在我需要做几何转换,但我不知道如何使用old_p(x,y)这意味着旧像素*

谢谢。

+0

这取决于你的'图像'的实现。它是一种颜色值的原始数组,手卷图像类,还是使用某种图像加载库(如FreeImage)? – James 2011-01-12 20:46:07

+0

我没有完全明白你的观点,但我会告诉你我在做什么。我正在处理视频,并且想要返回到达之前位置的第二个图像,即第一帧的位置。 – Mario 2011-01-12 20:48:46

+0

关键是答案将完全取决于你如何处理这些图像。就目前而言,这是无法回答的。 C++中没有图像类。你可能正在谈论一个字节数组或一些我们知道的图书馆“Image”类。 – 2011-01-12 20:54:52

回答

0

基本思想是,您需要最终结果图像中每个像素的颜色值。所以你需要找到一个函数将(旋转和平移的)像素映射到最终结果图像的每个(x,y)位置上。

给定一个将原始图像坐标转换为目标图像坐标的矩阵,您可能会最终反转该转换并将其应用于每个目标图像像素,再加上或减去几次优化。

4

在Opencv中,您需要的功能位于手册的“几何图像转换”部分。在你的情况下,因为你已经有旋转矩阵和翻译,所以warpAffine是选择函数(link to function documentation)。您传递的转换矩阵的前两列是旋转矩阵,第三列是平移矢量(如果您不熟悉齐次坐标)。