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

Bildbearbeitung. Durchlaufen eines Bildes Pixel für Pixel

 

Selim
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2016, 23:42     Titel: Bildbearbeitung. Durchlaufen eines Bildes Pixel für Pixel
  Antworten mit Zitat      
Hallo Leute,

ich bin neu im Matlab Programmierung und benötige eure Hilfe.
Mit diesem Programm möchte ich eine Schwellenbereichberchnung führen.
Dabei habe ich mir eine doppelte For-Schleife überlegt, mit dem jedes einzelne Pixel durchgelaufen wird und wenn der Wert eben über oder unter diesem Wert will ich es filtern und nur die Pixel über diesem Wert als neues Bild bekommen.
Da ich noch keine wirkliche Erfahrung habe, wollte ich erstmal ein Tutorial starten. Aber da fangen schon meine Probleme an Sad

Code:

Bild = imread("newBild.jpeg");
Bild = double(Bild) + 1;

figure (1);
subplot (1,2,1);

image (Bild);
title (OrignalBild);
axis image;
subplot (1,2,2);
image(Bild(:,:,1));
title (BearbeitetesBild);
axis image;    


Im Tutorial hiess es, dass mit diesem Programm die roten Farben vom Bild gezeigt wird. Nur bekomme ich dauernd den Fehler:
The input character is not valid in MATLAB statements or expressions.
In diversen Forum steht, dass ich etwaige Umlaute wie ä ö etc. aus dem Programm rausnehmen soll. Aber in diesem Programm gibts doch sowas gar nicht.

Wie müsste denn die For-Schleife aussehen, damit das Programm jedes Pixel durchläuft?

Vielen Dank für eure Unterstützung
Private Nachricht senden Benutzer-Profile anzeigen


gs
Forum-Century

Forum-Century


Beiträge: 172
Anmeldedatum: 17.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2016, 06:16     Titel:
  Antworten mit Zitat      
Hi,

Damit mit deinen Code überhaupt was passiert, habe ich dir mal die Fehler beseitigt:

Code:
Bild = imread('Bildname.jpg'); % Hier muss dein Bildname hin! Und du musst dich im Arbeitspfad befinden!
% Bild = double(Bild) + 1;

figure(1);
subplot (1,2,1);
image(Bild);
title('OrignalBild');
axis image;

subplot (1,2,2);
image(Bild(:,:,1));
title('BearbeitetesBild');
axis image;


Tipp: Wenn du mit den Befehlen, oder welche Optionen sie haben nicht zurecht kommst, dann drück einfach mal "F1" wenn du auf einen Befehl bist, oder Schreib in den Command Windows "help befehlsname" oder "doc Befehlsname".

Grüß gs
Private Nachricht senden Benutzer-Profile anzeigen
 
Selim
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2016, 09:06     Titel:
  Antworten mit Zitat      
Ok vielen dank. Werde ich heute abend mal ausprobieren. Aber eine frage habe ich noch. Sind die Anführungszeichen spezielle oder ganz normale. Denn es ist ja nur ein Anführungszeichen statt 2.
Private Nachricht senden Benutzer-Profile anzeigen
 
gs
Forum-Century

Forum-Century


Beiträge: 172
Anmeldedatum: 17.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2016, 09:14     Titel:
  Antworten mit Zitat      
Hi,

das ist kein Anführungszeichen ("), sonder ein Hochkomma (').
Das Hochkomma bekommst du mit SHIFT + RAUTETASTE (direkt links neben den ENTER auf deiner Tastatur)

Gruß gs

Zuletzt bearbeitet von gs am 18.08.2016, 09:39, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Selim
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2016, 09:20     Titel:
  Antworten mit Zitat      
Ok vielen dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Selim
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2016, 11:07     Titel:
  Antworten mit Zitat      
Wie kann ich den Matlab sagen, dass dieser jedes Pixel durchlaufen soll? Gibt es da einen speziellen Befehl?
Private Nachricht senden Benutzer-Profile anzeigen
 
gs
Forum-Century

Forum-Century


Beiträge: 172
Anmeldedatum: 17.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2016, 11:34     Titel:
  Antworten mit Zitat      
Da gibt es verschiedene Möglichkeiten

Bilder in Matrizen wandeln, dann kannst du eigentlich mit den Werten arbeiten.

Einfach mal Google fragen, oder im Forum suchen:

http://www.ee.hacettepe.edu.tr/~sol.....20Matlab%20Quickguide.pdf

Gruß gs
_________________

Mein Seite.
Private Nachricht senden Benutzer-Profile anzeigen
 
Selim
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2016, 12:42     Titel:
  Antworten mit Zitat      
Okey danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Selim
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2016, 19:38     Titel:
  Antworten mit Zitat      
Hallo,

ich habe jetzt mal einen Versuch gestartet, bei dem ein Bild geladen und gefiltert werden soll. Hierbei soll das Original Bild und das gefilterte Bild nebeneinander stehen.
Für das gefilterte Bild wollte ich 2 for-Schleifen benutzten, die das Matrix vom Bild mit den Variablen (i,j) durchläuft und dann als Bsp. die Werte auf Null setzen und somit schwarz anzeigen soll. Nur weiss ich nicht genau, wie ich auf die Werte der Matrix zugreifen soll.

Code:


Bild = imread('Dateiname.jpg');

figure(1);
subplot(1,2,1)
image(Bild);
title ('Orignal Bild');
axis image;

Filter = double(imread('Dateiname.jpg'));
figure(1);
subplot(1,2,2)
Filter(i,j,:);
int(i);
int(j);


for i = 1:n %Woher weiss ich die Grenzen vom Bild? Pixelanzahl?
    i
    if i>20
        i=0
    end
end
for j = 1:n %Woher weiss ich die Grenzen vom Bild? Pixelanzahl?
    j
    if j>20
       j=0
    end
end

image (Filter);
title ('Gefiltertes Bild');
axis image;


 


Ich hoffe ihr könnt mir bei meinem Problem helfen. Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.487
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.08.2016, 21:56     Titel:
  Antworten mit Zitat      
Hallo,

ich kann nur eine systematische Einarbeitung in MATLAB empfehlen.
Da werden die Syntaxfragen ebenso klar wie, dass man in MATLAB für sehr viele Aufgaben keine for-Schleifen benötigt.

Code:
Filter(i,j,:);
int(i);
int(j);

Diese Zeilen haben keine Auswirkung und sind überflüssig, um nicht zu sagen unsinnig.

Das Bild würde ich zudem nicht filter nennen, da dies eine Funktion ist und diese durch die Variable überlagert wird.

Mit numel und size kannst du die Dimensionen des Bildes abfragen.

Einen Bereich schwarz färben ginge z.B. so:
Code:
im(20:end, 20:end, :) = 0;


Grüße,
Harald
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.