Перевод кривой в openCv из ROI в кадр

В настоящее время я работаю над проектом, где я использую opencv для поиска кривой на изображении. Поэтому я установил область интереса, где я ищу кривую. Теперь моя проблема в том, что когда я вычисляю параметры моего полинома (скажем, 2-й степени), я использую относительные координаты из ROI, но я хочу перевести параметры функции (которые хранятся в cv::Mat) к исходному изображению. Решение, которое я ищу, должно работать для полинома любой степени.

Чтобы быть более точным, у меня есть параметры функции полинома относительно моего ROI, но мне нужны параметры относительно исходного изображения.


person Sir ExecLP    schedule 11.05.2017    source источник


Ответы (1)


Предположим, что многочлен является функцией f(x). Затем g(x) = f(x) + a перемещает его на a единиц по вертикали (положительное значение a перемещает функцию вверх).

Функция h(x) = f(x - b)* перемещает функцию по горизонтали (положительное значение b перемещает функцию вправо).

Поэтому, чтобы переместить единицы полинома b по горизонтали и единицы a по вертикали, вы должны определить преобразование как T(x, a, b) = f(x-b) + a

В вашем случае a = roi.y; и b = roi.x; при условии, что координаты изображения начинаются с 0,0.

Вот ссылка на интерактивную демонстрацию, которую я сделал. Вы можете протестировать это для различных функций и перемещать ползунки. https://www.desmos.com/calculator/fezybrsyhw

person Max Walczak    schedule 11.05.2017
comment
Спасибо за ваш ответ. Но теперь я хочу избавиться от a и b в моей преобразованной функции. Я могу просто добавить a к постоянному члену f'. Но как насчет б. Итак, позвольте мне уточнить: если f имеет параметры p1, p2 ... pn . И f' p'1, ​​p'2 и так далее. Как мне рассчитать p'n, чтобы у меня не было этого xb. Например, f\left(x\right)\ =\ 0,5x^2+x-2 должно быть преобразовано с b = 1. Преобразованная функция может быть записана как h\left(x\right)\ =\ 0,5x^ 2-2,5\\ . - person Sir ExecLP; 12.05.2017
comment
Вам придется уменьшить функцию до простейшей возможной версии. Для этого есть алгоритмы, но я не понимаю, почему вы это сделали, поскольку это окажет значительное влияние на производительность. - person Max Walczak; 15.05.2017