image-processing - 检索从变形图像中获取的像素的原始坐标

标签 image-processing opencv distortion 3d-reconstruction perspectivecamera

我从 sourceImage 中提取了四个角:

src_vertices[0] = corners[upperLeft];
src_vertices[1] = corners[upperRight];   
src_vertices[2] = corners[downLeft];
src_vertices[3] = corners[downRight];

这四个角像这样变形为 destinationImage:

dst_vertices[0] = Point(0,0);
dst_vertices[1] = Point(width, 0); 
dst_vertices[2] = Point(0, height);
dst_vertices[3] = Point(width, height);

Mat warpPerspectiveMatrix = getPerspectiveTransform(src_vertices, dst_vertices);
cv::Size size_d =  Size(width, height);
cv::Mat DestinationImage(width,height,CV_8UC3);
warpPerspective(sourceImage, destinationImage, warpPerspectiveMatrix, size_d, INTER_LINEAR, BORDER_CONSTANT);

现在我的问题是:

我从 destinationImage 中获取了一个点 p(x,y) 如何在原始 sourceImage 中检索该点的坐标

换句话说,我想使用 warpPerspectiveMatrix 来完成与 getPerspectiveTransform 相反的工作

最佳答案

您需要逆透视变换。如果您的原始变换是 S->S',您需要变换矩阵 S'->S

Mat InversewarpPerspectiveMatrix = getPerspectiveTransform(dst_vertices, src_vertices);

然后你做一个稀疏矩阵

Mat PerspectiveCoordinates containing the vector x,y.

终于要打电话了

PerspectiveTransform(PerspectiveCoordinates,OriginalCoordinates,InversewarpPerspectiveMatrix)

关于image-processing - 检索从变形图像中获取的像素的原始坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343420/

相关文章:

python - 我试图找出背景是彩色的还是单色的

java - OpenCV 的 Java 绑定(bind) Mat.get() 给出了奇怪的结果

image - DICOM 和 OpenCV

opencv - 如何将未扭曲图像中的点投影到扭曲图像?

c++ - 使用极坐标创建图像(图像变换)

javascript - 带有 FeTurbulences 的 SVG 形状失真

java - 将两个 BufferedImages 并排复制到一个图像中

python - 两个图像之间重叠标签的计数 - Python/NumPy

python - cv2 和 BGR2YCrCb 不适用于 Python 绑定(bind)

python - 如何从 OpenCV "cv2.keypoint"对象中提取 x,y 坐标?