Próbuję obrazów ściegu w Matlab, ale dostaję brzydkie linie nakładania się. Jak mogę prawidłowo mieszać obrazy? Obecnie używam poniższego kodu, ale za bardzo się on miesza (szczególnie okna budynków są mieszane z artefaktami duchów, podobnie jak czarny budynek).Jak prawidłowo łączyć ze sobą podczas łączenia obrazów w programie 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
Artefakty na obrazie wynikają z niewielkiej korelacji panoramy. Nie wynikają one z twojego mieszanego kodu. który tworzy liniowe, ważone połączenie między nakładającymi się obrazami. Tę niewspółosiowość można zobaczyć nawet na górnym obrazie bez miksowania, na źle wyrównanym wierzchołku czarnego budynku i nieznacznie przesuniętych krzyżykach na innym dużym budynku. Być może potrzebujesz korekty zestawu obrazów, aby udoskonalić te małe błędy na całym świecie. – jcollomosse
Myślę, że chcę, żeby region mieszania miał około 10 pikseli od linii, może to mi pomoże. Teraz mieszany jest cały zachodzący obszar – user3082220
. Zmniejszyłoby to rozmycie, z wyjątkiem granic, a nadal będziesz widzieć artefakty z powodu złego wyrównania. Lepiej byłoby poprawić dopasowanie. – Trilarion