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

Bild mit selbstgeschriebener Übertragungsfunktion bearbeite

 

Draculus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 14:54     Titel: Bild mit selbstgeschriebener Übertragungsfunktion bearbeite
  Antworten mit Zitat      
Hallo zusammen,

ich muss mich seit längerem mal wieder mit Matlab beschäftigen und dabei auch gleich mit der Bildverarbeitung.
Und zwar will ich ein geladenes S/W-Bild mit einer selbstgeschrieben Übertragungsfunktion bearbeiten. Im Prinzip soll es in etwas so aussehen, dass ich ein Bild f(x,y) habe, dies mit einer Übertragungsfunktion h(x,y) falte und ein Abbild g(x,y) erhalte [ g(x,y)=f(x,y)*h(x,y) ]. Faltung entspricht Multiplikation im Frequenzbereich, dementsprechend FFT anwenfen, multiplizieren und gut.
Mein Problem ist nur, dass ich nicht weiß, wie ich ein Bild als eine Funktion von x und y bekomme. Wenn ich es über
Code:
imread('Testbild.png');
einlese, bekomme ich ja nur eine Matrix. Bzw. anders herum wenn ich die Übertragungsfunktion als Matix bekäme, könnte ich sicherlich mit der Funktion
Code:
etwas anfangen...
Kann mir jemand weiterhelfen?

Viele Grüße


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.08.2014, 15:28     Titel:
  Antworten mit Zitat      
Moin,

imfilter ist doch hinlänglich beschrieben. Wo ist das Problem?

Grüße - Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Draculus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 15:47     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort.

Das Problem ist, dass ich nicht weiß, wie ich imfilter anwenden kann, wenn ich zum einen mein Bild als bsp. 256x256 Matrix und meinen Filter aber als Funktion h(x,y)=(Term1 , Term2) vorliegen habe. Kann ich den trotzdem einfach in die Funktion werfen?

Gruß
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.08.2014, 15:54     Titel:
  Antworten mit Zitat      
Imfilter braucht natürlich eine Funktion, wie z.B.:

Code:
i = imread('cameraman.tif');
fil = ones(3,3)/9; % oder: fil = [1 2 1; 2 4 2; 1 2 1];
i2 = imfilter(i,fil,'replicate')
figure; imshow(i2)
Private Nachricht senden Benutzer-Profile anzeigen
 
Draculus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 16:01     Titel:
  Antworten mit Zitat      
Genau, was ja im Prinzip auch nichts anderes als eine Matrix_Form ist.
Die Frage bzw mein Problem ist daher, wie bekomme ich meine Filterfunktion in eine Matrix-Form? Oder eben alternativ mein Bild als Funktion f(x,y) um so weiter zu rechnen?
(Sry, falls das aus der Eingangsnachricht nicht klar wurde)
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.08.2014, 16:05     Titel:
  Antworten mit Zitat      
Meinst du das?

Code:
x = [1 4 6 4 1];   % Zeilenvektor
y = [1; 4; 6; 4; 1];   % Spaltenvektor  

h = y'*x;
h ist jetzt eine Matrix
Private Nachricht senden Benutzer-Profile anzeigen
 
Draculus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 16:22     Titel:
  Antworten mit Zitat      
Nein leider nicht. Ich hab h tatsächlich als Funktion in der form:
Code:
h(x)=(exp(-(pi*(a + x)^2)/b^2) + exp(-(pi*(a - x)^2)/b^2))/(M - 1)

und das gleiche auch für h(y), so dass h(x,y)=[h(x),h(y)]. Das ist entsprechend eine doppelte Gauß-Funktion in beide Dimensionen...
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.08.2014, 16:47     Titel:
  Antworten mit Zitat      
Um an x und y zu kommen gibt es den Befehl:

Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
Draculus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 19:53     Titel:
  Antworten mit Zitat      
Ja, auch dessen bin ich mir bewusst, hilft leider aber auch nicht sonderlich...
Naja, vielleicht muss ich mal über nen ganz anderen Ansatz nachdenken...
 
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.