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

Probleme mit medfilt2

 

Schafscherer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2009, 18:42     Titel: Probleme mit medfilt2
  Antworten mit Zitat      
Guten Abend,

ich habe die Aufgabe lokale Operatoren im Matlab darzustellen. Genauer gesagt soll ich die Glättung darstellen, ich nehme an es geht in erster Linie um Rauschunterdrückung.

Dazu habe ich mal ein Bild eingelesen, ein Rauschen darübergelegt um dann die verschiedenen Filter anzuwenden.

Wenn es wahr ist habe ich einen Gauß und einen Mittelwerfilter bereits umgesetzt, der Medianfilter bereitet mir jedoch Probleme.

Hier mal mein Code:
Code:
close all;

Original=imread('FHTW.jpg');    %Öffnen des Bildes
Rauschen = imnoise(Original, 'salt & pepper',0.02);%gaussian');   %Einbringen von Rauschen in das Bild

figure                          %Erstellen eines Ausgabefensters
subplot(2,2,1);                 %Unterteilen des Ausgabefensters in 2x2 Matrix, erste Position
image(Original);title('Originalbild');  %Ausgabe des Bildes und Betitelung

subplot(2,2,2);                 %zweite Position im unterteilten Fenster
image(Rauschen);title('verrauschtes Bild'); %Ausgabe des Bildes und Betitelung

Gauss3x3_05 = fspecial('gaussian');     %Filter nach Gauß mit 3x3 Matrix und Varianz von 0,5
Gauss7x7_1 = fspecial('gaussian',7,1);  %Filter nach Gauß mit 7x7 Matrix und Varianz von 1

Gefiltert3x3_05 = imfilter(Rauschen, Gauss3x3_05);  %Anwendung des Gaußfilters (3x3 Matrix)
subplot(2,2,3);                 %dritte Position im unterteilten Fenster
image(Gefiltert3x3_05);title('gefiltertes Bild nach Gauß 3x3'); %Ausgabe des gefilterten Bild

Gefiltert7x7_1 = imfilter(Rauschen, Gauss7x7_1);    %Anwendung des Gaußfilters (7x7 Matrix)
subplot(2,2,4);                 %vierte Position im unterteilten Fenster
image(Gefiltert7x7_1);title('gefiltertes Bild nach Gauß 7x7');  %Ausgabe des gefilterten Bild

pause;
%close all;


figure                          %Erstellen eines Ausgabefensters
subplot(2,2,1);                 %Unterteilen des Ausgabefensters in 2x2 Matrix, erste Position
image(Original);title('Originalbild');  %Ausgabe des Bildes und Betitelung

subplot(2,2,2);                 %zweite Position im unterteilten Fenster
image(Rauschen);title('verrauschtes Bild'); %Ausgabe des Bildes und Betitelung

Mittel3x3 = fspecial('average');
Mittel7x7 = fspecial('average',7);

GefiltertMittel3x3 = imfilter(Rauschen, Mittel3x3);  %Anwendung des Mittelwertfilters (3x3 Matrix)
subplot(2,2,3);                 %dritte Position im unterteilten Fenster
image(GefiltertMittel3x3);title('gefiltertes Bild nach Mittelwert 3x3'); %Ausgabe des gefilterten Bild

GefiltertMittel7x7 = imfilter(Rauschen, Mittel7x7);    %Anwendung des Mittelwertfilters (7x7 Matrix)
subplot(2,2,4);                 %vierte Position im unterteilten Fenster
image(GefiltertMittel7x7);title('gefiltertes Bild nach Mittelwert 7x7');  %Ausgabe des gefilterten Bild

pause;


figure                          %Erstellen eines Ausgabefensters
subplot(2,2,1);                 %Unterteilen des Ausgabefensters in 2x2 Matrix, erste Position
image(Original);title('Originalbild');  %Ausgabe des Bildes und Betitelung

subplot(2,2,2);                 %zweite Position im unterteilten Fenster
image(Rauschen);title('verrauschtes Bild'); %Ausgabe des Bildes und Betitelung

J = double(Rauschen);

GefiltertMedian = medfilt2(J,'symmetric');  %Anwendung des Mittelwertfilters (3x3 Matrix)
subplot(2,2,3);                 %dritte Position im unterteilten Fenster
image(GefiltertMedian);title('gefiltertes Bild nach Median 3x3'); %Ausgabe des gefilterten Bild

GefiltertMedian7x7 = medfilt2(Rauschen);    %Anwendung des Mittelwertfilters (7x7 Matrix)
subplot(2,2,4);                 %vierte Position im unterteilten Fenster
image(GefiltertMedianl7x7);title('gefiltertes Bild nach Median 7x7');  %Ausgabe des gefilterten Bild

close all;
 


Anschließend kommen Folgende fehler:

??? Error using ==> iptcheckinput
Function ORDFILT2 expected its first input, A, to be two-dimensional.

Error in ==> ordfilt2>ParseInputs at 135
iptcheckinput(A, {'numeric','logical'}, {'2d','real'}, mfilename, 'A', 1);

Error in ==> ordfilt2 at 51
[A,order,domain,s,padopt,msg] = ParseInputs(varargin{:});

Error in ==> medfilt2 at 53
b = ordfilt2(a, order, domain, padopt);

Error in ==> gaussian at 68
GefiltertMedian = medfilt2(J,'symmetric'); %Anwendung des Mittelwertfilters (3x3
Matrix)

wäre sehr dankbar wenn mir jemand helfen könnte!

mfg Schafscherer


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.04.2009, 14:08     Titel:
  Antworten mit Zitat      
Hallo,

medfilt2 erwartet eine 2D-Matrix als Eingabe. Wenn das Eingabebild z.B. ein RGB-Farbbild (3D) ist, dann gibt MATLAB die beschriebene Fehlermeldung aus. In diesem Fall vor der Filterung das Bild in ein Grauwertbild umwandeln (mit z.B. rgb2gray).
 
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.