2 Stimmen

Finde den Winkel zwischen zwei sehr ähnlichen Bildern in Matlab

Hi ich finde den Winkel zwischen 2 ähnlichen (aber nicht identischen) Bildern?

das erste Bild

das zweite ich benutzt habe

hVideoSrc = vision.VideoFileReader(filename, 'ImageColorSpace', 'Intensity');

imgA = step(hVideoSrc); % Erstes Bild in imgA einlesen
imgB = step(hVideoSrc); % Zweites Bild in imgB einlesen

    figure; imshowpair(imgA, imgB, 'montage');
    title(['Bild A', repmat(' ',[1 70]), 'Bild B']);
figure; imshowpair(imgA,imgB,'ColorChannels','red-cyan');
title('Farbkomposit (Bild A = rot, Bild B = cyan)');

von http://www.mathworks.com/help/vision/examples/video-stabilization-using-point-feature-matching.html aber es hat nicht geholfen hat jemand eine Idee

4voto

Alex Taylor Punkte 1402

Nur zur Information: Ein Algorithmus, der Patrick's Vorschlag sehr ähnlich ist, existiert im Image Processing Toolbox ab R2014a. Er heißt imregcorr und verwendet Phasenkorrelation im log-polarischen Bereich. Das könnte auch sehr gut für dieses Problem funktionieren, obwohl ich es noch nicht ausprobiert habe.

http://www.mathworks.com/help/images/ref/imregcorr.html

http://adessowiki.fee.unicamp.br/media/Attachments/courseIA369O1S2011/Ex13/phasecorrelation5.pdf

3voto

rayryeng Punkte 100122

Ich würde empfehlen, eine Art Feature-Erkennung durchzuführen und diese dann zu verwenden, um eine Homographiematrix zu finden. Es könnte übertrieben sein, aber zumindest wirst du nicht nur die Rotation eines Bildes im Verhältnis zu einem anderen finden können, sondern auch etwaige Scherungen oder Translationen.

Überprüfe das Feature Detection-Modul, das Teil der Computer Vision-Toolbox ist, um dir bei der Erkennung von Schlüsselpunkten zu helfen: http://www.mathworks.com/help/vision/feature-detection-extraction-and-matching.html

Sobald du Paare entsprechender Punkte gefunden hast, schau dir den Wiederaufbau der für das Umformen eines Bildes in ein anderes erforderlichen Homographiematrix an. Diese Folien sind großartig: http://www.comp.nus.edu.sg/~cs4243/lecture/camera.pdf. Schau dir die Folien 29-35 an.

Sobald du die Homographiematrix gefunden hast, kannst du ganz einfach den Rotationswinkel bestimmen, indem du die Koeffizienten untersuchst und eine inverse trigonometrische Operation anwendest.

ÄNDERUNG (7. April 2014): Ich konnte das tatsächliche MATLAB-Beispiel nicht finden, aber der Link von Dima (vielen Dank!) zeigt dir ein ausgearbeitetes MATLAB-Beispiel von MathWorks, das es macht (http://www.mathworks.com/help/vision/examples/find-image-rotation-and-scale-using-automated-feature-matching.html).

2voto

Dima Punkte 37984

Wenn Sie die Drehungsebene zwischen den beiden Bildern finden möchten, finden Sie hier ein Beispiel, das genau das tut.

2voto

Patrick Punkte 2142

Führen Sie eine Korrelation in logarithmisch-polar Koordinaten durch. Dadurch erhalten Sie sowohl Skalen- als auch Rotationsmessungen (die Polachse gibt Ihnen die Rotationskomponente).

Hier ist eine Referenz. Diese beschreibt die gleiche Methode im optischen Bereich, ist aber dennoch sehr nützlich zur Visualisierung und zum Verständnis der Methode.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X