Мозаика имиджа VLFeat в Matlab

Ниже приведен фрагмент кода, который формирует мозаику из двух изображений после вычисления матрицы гомографии H с использованием RANSAC pror, для которого SIFT использовался для вычисления дескрипторов:

% --------------------------------------------------------------------
%                                                               Mosaic
% --------------------------------------------------------------------
box2 = [1  size(im2,2) size(im2,2)  1 ;
        1  1           size(im2,1)  size(im2,1) ;
        1  1           1            1 ] ;
box2_ = inv(H) * box2 ;
box2_(1,:) = box2_(1,:) ./ box2_(3,:) ;
box2_(2,:) = box2_(2,:) ./ box2_(3,:) ;
ur = min([1 box2_(1,:)]):max([size(im1,2) box2_(1,:)]) ;
vr = min([1 box2_(2,:)]):max([siize(im1,1) box2_(2,:)]) ;
[u,v] = meshgrid(ur,vr) ;
im1_ = vl_imwbackward(im2double(im1),u,v) ;
z_ = H(3,1) * u + H(3,2) * v + H(3,3) ;
u_ = (H(1,1) * u + H(1,2) * v + H(1,3)) ./ z_ ;
v_ = (H(2,1) * u + H(2,2) * v + H(2,3)) ./ z_ ;
im2_ = vl_imwbackward(im2double(im2),u_,v_) ;
mass = ~isnan(im1_) + ~isnan(im2_) ;
im1_(isnan(im1_)) = 0 ;
im2_(isnan(im2_)) = 0 ;
mosaic = (im1_ + im2_) ./ mass ;
figure(2) ; clf ;
imagesc(mosaic) ; axis image off ;
title('Mosaic') ;
if nargout == 0, clear mosaic ; end
end

Теперь я понимаю, что нам нужно каким-то образом деформировать изображения, прежде чем их сшивать, используя компьютерную гомографию? Что же тогда является логикой в ​​определении "box2", то есть зачем рассматривать размер первого и второго измерения im2? Кроме того, какова функция массы и строк кода, которые следуют?

1 ответ

Содержание box2 просто ограничивающая рамка (угловые координаты) второго изображения; box2_ затем этот ограничивающий прямоугольник превращается в систему координат im1 - в котором вы вычисляете диапазон координат (ur а также vr) где проектировать im2 после трансформации.

Назначение переменной mass просто чтобы указать, сколько изображений покрывают каждый пиксель: если только одно изображение непусто в данном пикселе, его mass(...)=1 и результат равен значению из этого изображения. Если оба изображения не пустые, mass(...)= 2 приводит к вычислению их среднего значения.

Другие вопросы по тегам