отсутствует регион на карте несоответствия

В настоящее время я работаю над стереообработкой, используя opencv2.3 и стереокамеру Pointgrey Bumblebee2 в качестве устройства ввода. Получение изображений осуществляется через libdc1394.

Мой код для выпрямления и стереообработки следующий:

void StereoProcessing::calculateDisparityMap(const Mat &left, const Mat &right, Mat &disparity_map)

  Mat map11, map12, map21, map22, left_rectified, right_rectified, disp16;

  // Computes the undistortion and rectification transformation maps
  initUndistortRectifyMap(this->camera_matrix1,
        this->distance_coefficients1,
        this->R1,
        this->P1,
        this->output_image_size,
        CV_16SC2,
        map11,
        map12);
  initUndistortRectifyMap(this->camera_matrix2,
        this->distance_coefficients2,
        this->R2,
        this->P2,
        this->output_image_size,
        CV_16SC2,
        map21,
        map22);

  // creates rectified images
  remap(left, left_rectified, map11, map12, INTER_LINEAR);
  remap(right, right_rectified, map21, map22, INTER_LINEAR);

  // calculates 16-bit disparitymap
  this->stereo_bm(left_temp, right_temp, disp16);

  disp16.convertTo(disparity_map, CV_8U, 255 / (this->stereo_bm.state->numberOfDisparities * 16.0));
}

Это отлично работает, за исключением черной левой границы на карте несоответствия, которая выглядит следующим образом:

Карта несоответствия с черной рамкой слева

Входные изображения - эти два - неисправленные, как вы можете видеть;): ://i.stack.imgur.com/FT0GW.png" alt="правильно неисправленное изображение">

Итак, мой вопрос: это нормальное поведение? Или вы видите какую-либо ошибку, которую я сделал до сих пор? Как другая информация, исправление работает нормально


person m47h    schedule 17.09.2012    source источник
comment
Вы можете получить доступ к своему пикселю, используя цикл, в котором у вас инвертированы строки и столбцы?   -  person remi    schedule 18.09.2012
comment
У меня нет доступа к пикселям, за исключением упомянутых функций opencv, и они извлекают размер изображения из входных изображений, поэтому я думаю, что нет :(   -  person m47h    schedule 19.09.2012
comment
что это-›output_image_size ?   -  person remi    schedule 21.09.2012


Ответы (2)


Ширина отсутствующей области эквивалентна количеству несоответствий, используемых в стерео_бм. Это нормальный побочный продукт stereo_bm algorithm.

person Michael the DevLord    schedule 08.11.2012

Я думаю, это происходит потому, что алгоритм вычисляет несоответствие, сопоставляя блоки вокруг пикселей из левого изображения с блоками вокруг пикселей в той же строке в правом изображении (при условии, что изображения исправлены). Поскольку существует область, в которой нет перекрытия между изображениями левой и правой камеры, алгоритм не может найти соответствие для блоков вокруг пикселей в этой области. Ширина «отсутствующей» области равна параметру «количество несоответствий», потому что алгоритм отказывается от попыток сопоставить данный блок после попыток «количества несоответствий» (в той же горизонтальной строке, что и пиксель на левом изображении). Извините, если я был недостаточно ясен. Если вы хотите получить более подробную информацию о том, как это работает, есть некоторый код в http://siddhantahuja.wordpress.com/2010/04/11/correlation-based-similarity-measures-summary/.

person edu_    schedule 17.03.2014