Так что я очень новичок в OpenCV (2.1), поэтому имейте это в виду.
Итак, мне удалось откалибровать мою дешевую веб-камеру, которую я использую (с широким углом * 1004).* приложение), используя метод калибровки шахматной доски, чтобы получить внутренние коэффициенты и коэффициенты искажения.
После этого у меня нет проблем с передачей этих значений обратно и созданием карт изображений, которые я затем применяю к видеопотоку для исправления входящих изображений.
Однако я столкнулся с проблемой.Я знаю, что когда он деформирует / корректирует изображение, он создает несколько искаженных участков, а затем форматирует изображение, чтобы обрезать любые черные области.Тогда мой вопрос: могу ли я просмотреть полное искаженное изображение, включая некоторые регионы с черными областями?Ниже приведен пример черных областей с перекосами, которые я пытался передать, если моя терминология была отключена:
Изображение, лучше передающее области, о которых я говорю, может быть найдено здесь !Это изображение было обнаружено в этом сообщении .
В настоящее время: cvRemap () возвращает в основном желтое поле на изображении, связанном выше, но я хочу увидеть всеизображение, поскольку есть соответствующие данные, которые я хочу получить из него.
То, что я пробовал: Применение преобразования масштаба к карте изображения для подгонки к полному изображению (включая растянутые части) в кадр
CvMat *intrinsic = (CvMat*)cvLoad( "Intrinsics.xml" );
CvMat *distortion = (CvMat*)cvLoad( "Distortion.xml" );
cvInitUndistortMap( intrinsic, distortion, mapx, mapy );
cvConvertScale(mapx, mapx, 1.25, -shift_x); // Some sort of scale conversion
cvConvertScale(mapy, mapy, 1.25, -shift_y); // applied to the image map
cvRemap(distorted,undistorted,mapx,mapy);
cvConvertScale, когда мне кажется, что я правильно выровнял сдвиг x / y (угадывание / проверка), каким-то образом искажает карту изображения, делая коррекцию бесполезной.Здесь может быть какая-то математика, которую я неправильно понимаю / понимаю.
У кого-нибудь есть какие-либо другие предложения по решению этой проблемы, или что я могу делать неправильно?Я также пытался написать свой собственный код, чтобы исправить проблемы с искажениями, но давайте просто скажем, что OpenCV уже знает, как это сделать хорошо.