Ошибка в пирамиде означает смещение фильтрации изображения определенных размеров? - PullRequest
3 голосов
/ 22 марта 2011

Я пытаюсь выполнить сегментацию среднего смещения с использованием пирамид, как описано в книге Learning OpenCV на некоторых изображениях.Исходное и конечное изображения являются 8-разрядными трехканальными цветными изображениями одинаковой ширины и высоты, как указано выше.Однако правильный вывод получается только на изображениях 1600x1200 или 1024x768.Другие изображения размером 625x391 и 644x438 вызывают ошибку времени выполнения "Размеры входных аргументов не совпадают в функции cvPyrUp ()" Мой код такой:

IplImage *filtered = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
cvPyrMeanShiftFiltering( img, filtered, 20, 40, 1);

Программа использует параметры, указанные в примере,Я пытался уменьшить значения, думая, что это проблема размеров изображения, но не повезло.При изменении размеров изображения до 644x392 и 640x320 среднее смещение выполняется правильно.Я читал, что «сегментация пирамиды требует изображений, которые N-кратно делятся на 2, где N - количество слоев пирамиды, которые нужно вычислить», но как это применимо здесь?

Любые предложения, пожалуйста.

1 Ответ

1 голос
/ 27 марта 2011

Ну, у вас есть что-то не так, за исключением того, что когда вы применяете cvPyrMeanShiftFiltering, вы должны сделать это так:

  //A suggestion to avoid the runtime error
  IplImage *filtered = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
  cvCopy(img,filtered,NULL);

  //Values only you should know
  int level = kLevel;
  int spatial_radius = kSpatial_Radius;
  int color_radius = = kColor_Radius;

  //Here comes the thing
  filtered->width &= -(1<<level);
  filtered->height &= -(1<<level);

  //Now you are free to do your thing
  cvPyrMeanSihftFiltering(filtered, filtered,spatial_radius,color_radius,level);

Дело в том, что этот вид пирамидального фильтра изменяет некоторые вещи в соответствии с уровнем, который вы используете.Попробуйте это и скажите мне позже, если сработало.Надеюсь, я смогу помочь.

...