Как правильно смешивать при сшивании изображений в Matlab?

Я пытаюсь сшить изображения в Matlab, но получаю уродливые линии перекрытия. Как правильно смешивать изображения? В настоящее время я использую приведенный ниже код, но он слишком сильно смешивается (особенно окна зданий смешиваются с артефактами-призраками, как и черное здание).

несмешанный образсмешанное изображение

%Tx - how much to move picture by x, Ty - by y (homography)
cropX = size(imcyl2, 2); %second image x size
xdimfirst = size(imcyl1, 2); %first image x size
ydimfirst = size(imcyl1, 1); %first image y size
xoverlap = xdimfirst - Tx;
newImg = imcyl1;
for y = 1:size(imcyl2, 1)
   for x = 1:cropX
       if ((Tx+x) > 0 && (Ty+y) >0)
       % if we are in the overlap region, then we need to blend.
               scale1 = (xoverlap - x) / xoverlap;
               scale2 = x / xoverlap;
               r = scale1 * imcyl1(Ty + y, Tx + x, 1) + scale2 * imcyl2(y, x, 1);
               g = scale1 * imcyl1(Ty + y, Tx + x, 2) + scale2 * imcyl2(y, x, 2);
               b = scale1 * imcyl1(Ty + y, Tx + x, 3) + scale2 * imcyl2(y, x, 3);
               newImg(Ty + y, Tx + x, :) = [r g b];
         end
    end
end

person user3082220    schedule 13.05.2014    source источник
comment
Артефакты на изображении связаны с тем, что ваша панорама немного смещена. Они не связаны с вашим кодом смешивания. который создает линейную взвешенную смесь между перекрывающимися изображениями. Вы можете увидеть это смещение даже на верхнем изображении без смешивания, на смещенной верхней части черного здания и слегка смещенных крестах на другом большом здании. Возможно, вам нужно внести некоторые коррективы в свои изображения, чтобы исправить эти небольшие ошибки в глобальном масштабе.   -  person jcollomosse    schedule 13.05.2014
comment
Я думаю, что просто хочу, чтобы область смешивания находилась примерно в 10 пикселях от линии, может быть, это поможет мне. Теперь он смешивает всю область перекрытия   -  person user3082220    schedule 14.05.2014
comment
Это уменьшит размытие, за исключением границ, и вы все равно увидите артефакты из-за плохого выравнивания. Лучше было бы улучшить выравнивание.   -  person Trilarion    schedule 26.05.2014


Ответы (2)


Сначала попробуйте использовать лучшую технику камеры (штатив, вращающуюся головку и т. д.). Лучшие данные = лучшие результаты.

Мой следующий лучший выбор — это постепенно уменьшающееся смешивание. Что-то типа:

blendfactor = dist_to_border^2;

Или что-то экспоненциальное. Если это одноразовая вещь, я бы выбрал программное обеспечение для фотографии, такое как gimp. Если уж совсем серьезно, то можно попробовать определить положение пикселей в другом кадре поиском по шаблону.

person mike    schedule 05.09.2014

Если вы все еще работаете над проблемой, я считаю, что вам нужно сделать шаг коррекции цвета между перекрывающимися изображениями. Например, голубое небо на крайнем левом изображении и на втором изображении слева должно иметь одинаковое значение синего. Очевидно, что это не так из-за виньетирования камеры по углам. Убедившись, что оба синих значения находятся в близком диапазоне друг от друга, вы получите лучшее смешивание.

person mxy    schedule 09.12.2014