Кто-нибудь может объяснить cvRemap с помощью кода, используя cvRemap в OpenCV? - PullRequest
1 голос
/ 30 августа 2010

Пользователи OpenCV знают, что cvRemap используется для выполнения геометрических преобразований. Аргументы mapx и mapy являются структурами данных, которые дают отображение информация в изображении назначения. Могу ли я создать два целочисленных массива, содержащих случайные значения от 1 до 1024 или от 1 до 768 если я имею дело с изображениями (1024 X 768) А затем сделать mapx и mapy назначенными с этими значениями? И затем использовать их в cvRemap ()? Будет ли он работать или единственный способ использовать mapx и mapy - получить его значение, назначенное с помощью функции cvUndistortMap ()? Я хочу знать, потому что я хочу деформировать изображения. На всякий случай, чтобы сказать вам, что я уже проверил Learning OpenCV книгу тоже.

1 Ответ

1 голос
/ 31 августа 2010

Я использую cvRemap, чтобы применить коррекцию искажения. Часть map_x имеет разрешение изображения и сохраняет для каждого пикселя смещение по оси x, которое будет применено, в то время как часть map_y одинакова для смещения по оси y.

при неискажении

# create map_x/map_y
self.map_x = cvCreateImage(cvGetSize(self.image), IPL_DEPTH_32F, 1)
self.map_y = cvCreateImage(cvGetSize(self.image), IPL_DEPTH_32F, 1)
# I know the camera intrisic already so create a distortion map out
# of it for each image pixel
# this defined where each pixel has to go so the image is no longer
# distorded
cvInitUndistortMap(self.intrinsic, self.distortion, self.map_x, self.map_y)
# later in the code:
# "image_raw" is the distorted image, i want to store the undistorted into
# "self.image"
cvRemap(image_raw, self.image, self.map_x, self.map_y)

Следовательно: map_x / map_y являются значениями с плавающей запятой и в разрешении изображения, как два изображения в 1024x768. То, что происходит в cvRemap, в основном напоминает

orig_pixel = input_image[x,y]
new_x = map_x[x,y]
new_y = map_y[x,y]
output_image[new_x,new_y] = orig_pixel

Какие геометрические преобразования вы хотите сделать с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...