Рассчитать соответствующую точку из одной 2D плоскости в другую - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть плоскость A (определенная 2D-точками A1, A2, A3, A4) и плоскость B (определенная 2D-точками B1, B2, B3, B4). Это процесс калибровки.

Проблема, которую я пытаюсь решить, состоит в том, как вычислить точку X из плоскости A в плоскости B?

Я читал о гомографии и матрицах преобразования , но я не нашел ничего, связанного с вычислением одной точки.

Я использую C# и EMGU для выполнения части кода, но любой пример будет очень признателен.

Спасибо .

1 Ответ

0 голосов
/ 15 апреля 2020

Если я правильно понимаю ваш вопрос, вы хотите иметь несколько точек ввода, которые вы выбираете, и вы хотите деформировать это изображение, чтобы разместить его в нужных точках. Если это так, вы можете использовать приведенный ниже код в качестве шаблона.

//Get the input image
Mat img = CvInvoke.Imread("img.png", ImreadModes.AnyColor);

//Declare an image that will hold the output
Mat output = new Mat(img.Width, img.Height);

//Get two points on the input image
Point point = new Point(0, 0);
Point point2 = new Point(100, 0);
Point point3 = new Point(0, 100);
Point point4 = new Point(100, 100);

//Store the points in a list
PointF[] srcPoints = new PointF[] { point, point2, point3, point4 };

//Declare where you want the image to end up
Point point5 = new Point(50, 0);
Point point6 = new Point(150, 0);
Point point7 = new Point(50, 100);
Point point8 = new Point(150, 100);

//Store those points in the list
PointF[] dstPoints = new PointF[] { point5, point6, point7, point8 };

//Calculate the homography matrix
Mat matrix = CvInvoke.FindHomography(srcPoints, dstPoints, RobustEstimationAlgorithm.AllPoints);

//Warp the image
CvInvoke.WarpPerspective(img, output, matrix, new Size(output.Width, output.Height), Inter.Area, Warp.Default);

Здесь вы просто читаете изображение, которое хотите использовать, объявляете начальную и конечную точки, а затем просто передаете эти переменные в две функции. сделать все расчеты за вас. Конечно, вам придется изменить некоторые значения, чтобы они соответствовали вашим конкретным c обстоятельствам, но именно так я решал подобные проблемы в прошлом.

Я надеюсь, что это то, что вы искали, и дайте мне знать, если у вас есть какие-либо вопросы.

...