WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

2D FFT von Bildern/ Darstellung im xy Koordinatensystem

 

Flosch
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 01.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2012, 17:01     Titel: 2D FFT von Bildern/ Darstellung im xy Koordinatensystem
  Antworten mit Zitat      
Hallo zusammen,

ich bin so zu sagen was Matlab anbetrifft Anfänger und habe deshalb eine Frage was die 2D FFT betrifft. Ich hoffe dass mir jemand weiter helfen kann!

Aufgabenstellung:

Ein Bild soll mittels zweidimensionaler Fouriertransformation in den Frequenzbereich transformiert werden. auf der X- Achse soll die Frequenz dargestellt werden, die Y- Achse soll die einzelnen Amplituden der jeweiligen Frequenzen darstellen.

Ich habe hier zwar einen Code, allerdings sind mir hier auch ein paar Dinge unklar, beispielsweise welche Abtastfrequenz verwendet werden soll.
Außerdem habe ich mir einige Male ein Spektrum anzeigen lassen. Einmal sehr stark JPEG komprimiert, so dass sehr wenig hohe Frequenzen im Bild vorhanden sind und einmal ein unkomprimiertes Bild ( gleiches Bild; viele hohe Frequenzanteile)
Beim Vergleichen der beiden Spektren waren keine Unterschiede zu erkennen, was ich sehr komisch finde. Aber ich denke dass es mit dem untersten Abschnitt des Quellcodes zu tuen haben könnte. Möglicherweise stimmt die Rasterung nicht. Hoffe, dass so etwas von irgendjemandem schon mal gemacht wurde.

Vielen Dank im Voraus !!!!!!!!

Den Code, den ich weitgehend aus dem Internet habe, habe ich hier angehängt:



Code:
img = imread('Cefalubeach.JPG');                                %importing image
figure(1); imshow(img);

cimg = img(1:2448,1:3264,1:3);                                 %cropping image
figure(2); imshow(cimg);


graubild = rgb2gray(cimg);
figure(3); imshow(graubild);


Grau = double (graubild);
figure(4);mesh(Grau);

Fs_x = 100;                              % sample rate in pixels per centimeter
Fs_y = 100;

                         %dx = 1/Fs_x; % centimeters per pixel
                         %dy = 1/Fs_y;

                         %[ M, N, ~ ] = size(imgred); % pixels
                         %x = dx*(0:N-1); % centimeters
                          %y = dy*(0:M-1);

dFx = Fs_x/N;                                                    % cycles per centimeter
dFy = Fs_y/M;

Fx = (-Fs_x/2:dFx:Fs_x/2-dFx);                         % cycles per centimeter
Fy = (-Fs_y/2:dFy:Fs_y/2-dFy);

 fftgraubild= fft2(graubild);                                %performing 2D-FFT
%imgfftred(1,1) = 0;                                          %removing DC component
 Fertig= fftshift(fftgraubild);                               %shifting zero component to centre
figure(5)
surf(Fx,Fy,abs(Fertig));                                      %plotting image w.r.t hori. & vert. frequencies
view(0,0);                                                            %to view the peaks
shading interp;                                                  %colouring the peaks


[Edited, Jan, Bitte Code-Umgebung benutzen - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 17.10.2012, 14:36     Titel:
  Antworten mit Zitat      
Moin Flosch,

der Unterschied zwischen einem kompr. und unkomprimierten Bild ist tatsächlich nicht so gravierend. Es kommt zunächst sehr stark auf den Bildinhalt an. Hohe Bildfrequenzen führen einerseits zu keiner so starken Komprimierung wie Bildinhalte mit plakativen Flächen. Bei hoher Komprimierung treten wiederum Blockartefakte auf.

Wenn du dir 2 Vergleichsbilder ansiehst, musst du die Lupenfunktion nutzen. Dann erkennst du zunächst wenigstens minimale Unterschiede. Du kannst aber die Unterschiede verstärken, wenn du folgende Zeile einfügst:

Code:
Fertig=log(abs(Fertig)+1);


Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Flosch
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 01.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2012, 18:09     Titel:
  Antworten mit Zitat      
Hey danke erst mal, der Befehl hat mich schon mal etwas weiter gebracht !! Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.