Для проекта мне нужно сохранить круги, обнаруженные на некоторых фотографиях. Проблема в том, что некоторые из этих фотографий сделаны под углом, то есть круги представляют собой эллипсы. Можно ли как-нибудь превратить эллипсы в круги?
Я подумал о том, чтобы исправить эллипс, а затем преобразовать прямоугольник в квадрат. Мне приходит в голову неопределенная проблема, то есть существует слишком много возможных вариантов моего подхода, и результаты для каждого подхода разные.
проектируемый круг в перспективе не является эллипсом !!! скорее эллиптическая форма ... после непроецирования вы снова получите круг, но для этого вам нужно знать матрицу перспективы (так что FOVx, FOVy и фокусное расстояние используемой камеры) и расстояние до точек ... однако вы может оценить плоскость, на которой находится круг, и этого достаточно, чтобы соответствовать кругу, который соответствует вашей форме после проецирования .... см. Преобразование 3D-объектов, связанных с точками схода и линией горизонта для некоторых дополнительных идей





Чтобы найти перспективное преобразование, вам необходимо иметь 4 пары соответствующих координат: точки на искаженном изображении и их идеальные положения после коррекции перспективы.
В этом случае вы можете рассчитать матрицу перспективного преобразования с помощью функции getPerspectiveTransform и применить ее для исправления всего изображения. Пример
чтобы найти 4 точки в этом случае, можно использовать fitEllipse или minAreaRect, но центр преобразованного круга, вероятно, не является центром эллипса, поэтому искаженное изображение может не выглядеть в точности как исходный реальный круг ...
Покажите нам картинки, иначе любой ответ может оказаться бессмысленным. А «запоминание кругов» не имеет большого значения. Это просто центр / радиус?