2014-05-13 21 views
8

Ich versuche Stichbilder in Matlab, aber hässliche Überlappungslinien zu bekommen. Wie kann ich Bilder richtig mischen? Momentan benutze ich den Code unten, aber er mischt sich zu sehr (vor allem Gebäudefenster werden mit Geisterartefakten gemischt, ebenso das schwarze Gebäude).Wie kann man beim Stitchen von Bildern in Matlab richtig mischen?

unblended image blended image

%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 
+2

Die Artefakte im Bild sind darauf zurückzuführen, dass das Panorama leicht versetzt ist. Sie sind nicht auf Ihren Mischcode zurückzuführen. Dies erzeugt eine lineare gewichtete Mischung zwischen den überlappenden Bildern. Sie können diese Fehlausrichtung sogar in Ihrem oberen Bild sehen, ohne die Überblendung, auf der falsch ausgerichteten Oberseite des schwarzen Gebäudes und den leicht verschobenen Kreuzen auf dem anderen großen Gebäude. Möglicherweise müssen Sie einige Anpassungen an Ihren Bildern vornehmen, um diese kleinen Fehler global zu verfeinern. – jcollomosse

+0

Ich denke, ich möchte nur Region um 10px von der Linie mischen, vielleicht würde es mir helfen. Jetzt wird die Überlappungsregion überblendet – user3082220

+3

Das würde die Unschärfe außer an den Grenzen reduzieren und Sie sehen immer noch die Artefakte aufgrund der schlechten Ausrichtung. Besser wäre es, die Ausrichtung zu verbessern. – Trilarion

Antwort

1

versuchen, die beste Kameratechnik zunächst unter Verwendung von (Stativs und Drehkopf usw.). Bessere Daten = bessere Ergebnisse.

Meine nächste beste Wette ist eine allmählich reduzierte Mischung. Etwas wie:

blendfactor = dist_to_border^2; 

Oder etwas exponentielles. Wenn dies eine einmalige Sache ist, würde ich für eine Fotografie-Software wie Gimp gehen. Wenn es ernst wird, können Sie versuchen, die Pixelposition im anderen Rahmen durch Mustersuche zu schätzen.

1

Wenn Sie noch an dem Problem arbeiten, glaube ich, was Sie tun müssen, ist ein Farbkorrekturschritt zwischen überlappenden Bildern. Beispiel: Der blaue Himmel vom linken Bild und das zweite Bild vom linken Bild sollten den gleichen blauen Wert haben. Offensichtlich nicht wegen der Kamera-Vignettierung in den Ecken. Indem Sie sicherstellen, dass beide blauen Werte in einem engen Bereich liegen, haben Sie eine bessere Mischung.