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

Wie Bildpixel auswählen und Farbe/Wert ändern?

 

MisterKnister
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 25.10.11
Wohnort: ---
Version: 7.12.0 (R2011a)
     Beitrag Verfasst am: 03.11.2011, 10:46     Titel:
  Antworten mit Zitat      
Hubertus hat Folgendes geschrieben:
Es geht so vieles. Aber was hat diese Frage jetzt mit den vorangegangen Fragen zu tun? Suchst du einen Filter für die FFT oder willst du Pixelfarben ändern?

edit:

Ich habe die Antwort vor deinem Edit geschrieben. Bei einem Filter in der FFT werden die Frequenzbereiche eingegeben die gesperrt werden sollen, Dazu mußt du nicht noch vorher die Pixelwerte ändern. Frequenzfilter für Matlab hat Google.


Hallo,
aber genau das möchte ich "leider" Wink
Also "selbst" verschiedene Frequenzen sperren, und nicht einen bestimmten Filter anwenden.
Da bestimmte Stellen gesperrt werden sollen, und nicht nur zB wie in den Beispielbildern die Mitte, wobei das der Anfang erstmal sein soll.
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: 03.11.2011, 10:56     Titel:
  Antworten mit Zitat      
Es gibt die Möglichkeit über die Frequenzangabe.

http://www.mathworks.fr/matlabcentr...../content/butterworthbpf.m

oder du ermittelst den zu sperrenden Bereich auf dem FFT-Bild (weil dort vielleicht die Störungen sichtbar sind) und setzt die Frequenzen auf 0 oder einen anderen Wert. Die Befehlszeile dazu hast bereits in deiner Anfangsfrage
Private Nachricht senden Benutzer-Profile anzeigen
 
MisterKnister
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 25.10.11
Wohnort: ---
Version: 7.12.0 (R2011a)
     Beitrag Verfasst am: 03.11.2011, 11:39     Titel:
  Antworten mit Zitat      
Hubertus hat Folgendes geschrieben:
Es gibt die Möglichkeit über die Frequenzangabe.

http://www.mathworks.fr/matlabcentr...../content/butterworthbpf.m

oder du ermittelst den zu sperrenden Bereich auf dem FFT-Bild (weil dort vielleicht die Störungen sichtbar sind) und setzt die Frequenzen auf 0 oder einen anderen Wert. Die Befehlszeile dazu hast bereits in deiner Anfangsfrage


Mit dem butterworthfilter bekomme ich immer die Meldung:
??? Undefined function or method 'fftshow' for input arguments of type
'double'.
Auch wenn ich kein double übernehme.

Letzteres würde ich gerne, aber ist nicht möglich, da ich die Frequenzen nicht auf 0 setzen kann, da die FFT scheinbar nicht "skaliert" ist, sondern nur in der Anzeige durch den Befehl "[]" so skaliert wird, dass ich die richtige Vorlage hätte um dort die zu sperrenden Bereiche "einzufärben".

edit:
im plot sieht (nun) alles gut aus, bis auf das Endbild Sad
Dieses ist einfach nur Schwarz

Code:
I=imread('n.jpg');                  %Grauwert Bild einlesen
subplot(2,3,1)
imshow(I);
I2=rgb2gray(I);                        %Umwandlung RGB ins GW-Bild:  

                                        %Auslesen aller Bilder eines Ordners

F=fft2(I2);                             %Discrete Fourier Transform
F2=F;                                   %Kopie
F4=fftshift(F);                         %Zero-Frequency Komponente zentrieren
 
F4=log(abs(F4)+1);                      %Zur Darstellungsverbesserung
                 
imwrite(F4,'n2.jpg','Quality',100); %Speichern des Powerspektrums
subplot(2,2,2)
imshow(F4,[]);                             % falls Anzeige gewünscht: figure; imshow(F4,[])

F4(664:716,430:482)=0;                  %Grauwerte des Bildes an den mittigen
                                       %Pixelstellen um m/2,n/2 dem Wert 0 zuordnen
imwrite(F4,'n3.jpg','Quality',100); %Speichern des veränderten Powerspektrums
subplot(2,2,3)
imshow(F4,[]);

F5=ifftshift(F4);                       %Rückgängigmachen des fftshift Befehls                

G=ifft2(F5);                                  %Rückumwandlung aus dem Powerspektrum
imwrite(G,'nfinal.jpg','Quality',100);    %Speichern des Endergebnisses

subplot(2,2,4)
figure; imshow(G)  
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: 03.11.2011, 12:38     Titel:
  Antworten mit Zitat      
Die Fehlermeldung besagt, dass dir die Funktion "fftshow" fehlt. Die kannst du hier laden:

http://jhhorng.sg1005.myweb.hinet.net/DIP/fftshow.m

Dein Einwand mit der Skalierung "[]" kann ich nicht nachvollziehen. Die Befehle beziehen sich doch auf die Matrix und nicht auf bildliche Darstellung.
Ich kann die Störungen notfalls auch ohne fftshift entfernen. Da bekomme ich eine ganz andere Darstellung. Selbst wenn ich kleinste Störungen auf diese Art beseitige, habe ich ein folgerichtiges Ergebnis
Private Nachricht senden Benutzer-Profile anzeigen
 
MisterKnister
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 25.10.11
Wohnort: ---
Version: 7.12.0 (R2011a)
     Beitrag Verfasst am: 03.11.2011, 12:46     Titel:
  Antworten mit Zitat      
Hubertus hat Folgendes geschrieben:
Die Fehlermeldung besagt, dass dir die Funktion "fftshow" fehlt. Die kannst du hier laden:

http://jhhorng.sg1005.myweb.hinet.net/DIP/fftshow.m

Dein Einwand mit der Skalierung "[]" kann ich nicht nachvollziehen. Die Befehle beziehen sich doch auf die Matrix und nicht auf bildliche Darstellung.
Ich kann die Störungen notfalls auch ohne fftshift entfernen. Da bekomme ich eine ganz andere Darstellung. Selbst wenn ich kleinste Störungen auf diese Art beseitige, habe ich ein folgerichtiges Ergebnis


Hi,
danke für den Link!
Ich glaube ich weiß jetzt woran es liegt.
wenn das jetzt so klappt wie ich denke,
meld ich mich gleich nochmal.

Danke dir für deine Hilfe und Geduld!
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: 03.11.2011, 13:03     Titel:
  Antworten mit Zitat      
Dein Fehler liegt in der Zeile: F4(664:716,430:482)=0;
Davor ist F4 der Wert von: log(abs....
Private Nachricht senden Benutzer-Profile anzeigen
 
MisterKnister
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 25.10.11
Wohnort: ---
Version: 7.12.0 (R2011a)
     Beitrag Verfasst am: 03.11.2011, 13:14     Titel:
  Antworten mit Zitat      
Hubertus hat Folgendes geschrieben:
Dein Fehler liegt in der Zeile: F4(664:716,430:482)=0;
Davor ist F4 der Wert von: log(abs....


so ist es =)
kam mir nach 3std try and error gestern abend, eben auch endlich mal in den sinn Very Happy

benutze nun log(abs.. nur noch seperat zur anzeige was ich mache, um es mir "schöner" anzeigen zu lassen
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: 03.11.2011, 13:23     Titel:
  Antworten mit Zitat      
Prima, dass jetzt all klappt. Solltest du noch mehr mit der FFT arbeiten, dann schau dir mal folgende Seite an:

http://www.gm.fh-koeln.de/~konen/WPF-BV/aufgaben_IJ2.htm

Dort findest du ein ein Bild mit einem Flugzeug und periodische Störungen.
Ergibt ein interessantes Resultat.

Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
MisterKnister
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 25.10.11
Wohnort: ---
Version: 7.12.0 (R2011a)
     Beitrag Verfasst am: 03.11.2011, 13:31     Titel:
  Antworten mit Zitat      
Hubertus hat Folgendes geschrieben:
Prima, dass jetzt all klappt. Solltest du noch mehr mit der FFT arbeiten, dann schau dir mal folgende Seite an:

http://www.gm.fh-koeln.de/~konen/WPF-BV/aufgaben_IJ2.htm

Dort findest du ein ein Bild mit einem Flugzeug und periodische Störungen.
Ergibt ein interessantes Resultat.

Viele Grüße

Hubertus


Link ist schon unter meinen Lesezeichen Wink
Hatte nur noch keine Zeit ihn abzuarbeiten, aber danke!

Ich müsste dich leider noch etwas fragen:
Ich habe den rgb2gray Befehl wieder rausgeworfen,
allerdings wird mir das Endbild in Geld angezeigt?
Ich nehme an ich habe da wieder nen dummen Fehler drin?

Code:
I=imread('n.jpg');                  %Grauwert Bild einlesen
subplot(2,3,1)
imshow(I);
[m n]=size(I);

F=fft2(I);                             %Discrete Fourier Transform
F2=F;                                   %Kopie
F4=fftshift(F);                         %Zero-Frequency Komponente zentrieren
 
Fvis=log(abs(F4)+1);                  %Zur Darstellungsverbesserung      
                 
imwrite(F4,'n2.jpg','Quality',100); %Speichern des Powerspektrums
subplot(2,3,2)
imshow(F4,[]);                             % falls Anzeige gewünscht: figure; imshow(F4,[])

F4(664:716,430:482)=0;                  %Grauwerte des Bildes an den mittigen
                                            %Pixelstellen um m/2,n/2 dem Wert 0 zuordnen

Fvis(664:716,430:482)=0;
subplot(2,3,3)
imshow(Fvis,[]);
                                           
imwrite(F4,'n3.jpg','Quality',100); %Speichern des veränderten Powerspektrums
subplot(2,3,4)
imshow(F4,[]);

F5=ifftshift(F4);                       %Rückgängigmachen des fftshift Befehls                

G=ifft2(F5);                                  %Rückumwandlung aus dem Powerspektrum
imwrite(G,'nfinal.jpg','Quality',100);    %Speichern des Endergebnisses

subplot(2,3,5)
figure; imshow(G,[])
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: 03.11.2011, 13:41     Titel:
  Antworten mit Zitat      
Dann ist dein Grauwertbild ein Farbild, dass nur eine Graudarstellung wiedergibt. Bei einem m*n*3 Bild (Colorbild) liegen alle Farbkurven deckungsgleich übereinander. Durch Berechnungen können diese die Deckungsgleicheit verlieren und ein Übergewicht einer anderen Farbe annehmen.
Private Nachricht senden Benutzer-Profile anzeigen
 
MisterKnister
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 25.10.11
Wohnort: ---
Version: 7.12.0 (R2011a)
     Beitrag Verfasst am: 03.11.2011, 13:50     Titel:
  Antworten mit Zitat      
Hubertus hat Folgendes geschrieben:
Dann ist dein Grauwertbild ein Farbild, dass nur eine Graudarstellung wiedergibt. Bei einem m*n*3 Bild (Colorbild) liegen alle Farbkurven deckungsgleich übereinander. Durch Berechnungen können diese die Deckungsgleicheit verlieren und ein Übergewicht einer anderen Farbe annehmen.


Ok, danke,
dann füge ich den rgb2gray einfach wieder ein!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.