Forum: Digitale Signalverarbeitung / DSP / Machine Learning Image Rotation


von Mario Löffler (Gast)


Lesenswert?

Hallo,

meine Aufgabe ist es mittels Matlb ein Bild in einen bestimmten Winkel 
rotieren zu lassen. Dass habe ich mal geschafft. Doch zusätzlich muss 
ich das Bild wieder zurückdrehen, die schwierigkeit dabei ist jedoch 
dass ich auf die Information nicht zurückgreifen darf, sondern 
herausfinden muss in welchen Winkel sich das Bild befindet. Das geht an 
geblich mit der Radon Funktion. Deshalb hab ich mich da ein bisschen 
herumgespielt.
Hat zu diesen Thema vielleicht wer eine Ahnung.
Hier ist mal der Matlab Source Code.

%Image Rotation am 27.02.2007
clf
clc
%I = imread('cameraman.tif');
M= imread ('C:\Programme\Matlab6.5\toolbox\images\imdemos\kreuz3.jpg');
%J = imrotate(I,-45,'bilinear','crop');
N = imrotate(M,-45,'bilinear','crop');
%subplot (2,2,1)
%imshow (I)
%subplot (2,2,2)
%imshow (J)
subplot (2,2,1)
imshow (M)
subplot (2,2,2)
imshow (N)
%figure (2)
%imhist(N)

theta=0:180;
[R,xp]=radon(N,theta);
subplot (2,2,3)
b=imagesc(theta,xp,R);

title('R_{\theta}(X\prime)');
xlabel('\theta(degrees)');
ylabel('X\prime');
set(gca,'XTick',0:20:180);
colormap(hot);
colormap(gray);
%colorbar
%subplot (2,2,4)
%imagesc(theta,xp,R)
%colormap('gray')

figure(2)
clf
%subplot (2,2,4)
r=reshape(R,1,181*193)
figure (2)
h=imhist(r,180)
plot (h)
figure(3)
mesh(R)
max(max(R))
e= find(R>15500)
length(e)
f=r(e)
figure(4)
plot (f)
%modulo

Im Prinzip habe ich hier dann mal mein Maxima rausgefiltert und brauche 
nur noch die Winkelinformation aus diesen Wert herauslesen.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Was genau ist die Frage?

von Mario Löffler (Gast)


Lesenswert?

Naja die Frage ist die, wie ich jetzt weiter komme. Ich brauche als 
Ergebnis den Winkel. Doch ich weiß nicht wie ich auf diesen komme.

von Mario Löffler (Gast)


Lesenswert?

Weiß da jemand weiter?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Such die Position des Maximums im Ergebnisvektor, schau was an der 
selben Position in theta steht, schon hast du den Winkel.

von Mario Löffler (Gast)


Lesenswert?

Ja das Maximum habe ich ja schon, nur wie bekomme ich den Winkel Theta. 
Mit welcher Funktion?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Such die POSITION des Maximums im Ergebnisvektor, und schau was an der 
selben Stelle in theta steht. Hab ich doch oben schon geschrieben...

theta(find(R == max(R)))

von Mario Löffler (Gast)


Lesenswert?

Ich versteh nicht ganz wie das gehen soll.
Der Maximalwert ist   1.5571 !

von Mario Löffler (Gast)


Lesenswert?

Irgendwie funktioniert auch nicht der code den du mir geschickt hast.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Die nötigen Hinweise hast du bekommen, jetzt bitte mal etwas 
Eigeninitiative. Ich werde nicht deine Hausaufgaben machen.

von Mario Löffler (Gast)


Lesenswert?

Ich schaffe es nicht ich bekomme entweder Null oder ein Empty matrix: 
1-by-0

von Gast (Gast)


Lesenswert?

Matlab hat einige ganz brauchbare Debug-Funktionen, Stichwort: 
"keyboard"-Befehl und Breakpoints.

Es wird Zeit, dass du dich damit beschäftigst.

von Mario Löffler (Gast)


Lesenswert?

Das Problem habe ich schon gelöst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.