фазовая корреляция для сшивания изображения (с использованием окна Хэмминга) - PullRequest
0 голосов
/ 21 февраля 2012

Я использую фазовую корреляцию для сшивания изображений, и она дает хорошие результаты для большей части моих тестовых данных. Я просто прошивал пары изображений слева направо и сверху вниз (только смещение) Но есть странное поведение. Первые странные координаты, я должен преобразовать координаты

//if L-R
pt.x= src->width-maxloc.x;
pt.y= src->height-maxloc.y;
if(pt.y>(temp->height/2))
  pt.y= -(maxloc.y+1);
//if T-B
pt.x= src->width-maxloc.x;
pt.y= src->height-maxloc.y;
if(pt.x>(temp->width/2))
  pt.x= -(maxloc.x+1);

Тогда при использовании окна Хемминга кажется, что когда я использую окно Хемминга для сшивания влево-вправо, оно работает лучше (даже для плохих случаев), но если я использую окно Хемминга для верха-низа, оно работает плохо (даже в хороших случаях) , И я думаю, что мне не нужно разделять отдельные случаи для L-R и T-B, я ожидаю, что фазовая корреляция просто даст мне глобальный максимум, но кажется, что некоторые ошибки в понимании БПФ или фазовой корреляции. вот код, который я использую http://codepaste.ru/9415/

1 Ответ

0 голосов
/ 21 февраля 2012

Ваш код содержит явную ошибку:

//if L-R
pt.x= src->width-maxloc.x;
pt.y= src->height-maxloc.y;
if(pt.y>(temp->height/2))
  pt.y= -(maxloc.y+1);
//if T-B
pt.x= src->width-maxloc.x;  // (repeated)
pt.y= src->height-maxloc.y; // <- overwrites previous value
if(pt.x>(temp->width/2))
  pt.x= -(maxloc.x+1);

Пожалуйста, вы можете показать изображения, которые вы пытаетесь зарегистрировать.

...