|
|
Bild einlesen und Grauwerte darstellen |
|
holistic |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 29.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.02.2011, 23:26
Titel: Bild einlesen und Grauwerte darstellen
|
|
Hi,
ich hab gerade festgestellt, dass ich das eventuell auch mit Matlab machen kann ohne jetzt groß meine C++ Kenntnisse auszugraben.
Auf jedenfall würde ich gerne ein Bild in Graustufen einlesen und die Intensitäten der Grauwerte dann in einem Koordinatensystem darstellen lassen. Aber nicht unbedingt wie ein Histogramm, sondern eher in 3D, so dass die x -und y-Achsen die Koordinaten im bild bezeichnen und die Höhe durch die Intensität der Grauwerte beschrieben wird.
Es soll quasi darum gehen einen Kreis im Bild, der etwas hellere Grauwerte irgendwie zu finden. Vielleicht ist mein Zugang dazu auch nicht unbedingt der Beste, evtl. habt ihr da noch bessere Vorschläge, bin für alles offen
|
|
|
|
|
Sco |
Forum-Meister
|
|
Beiträge: 699
|
|
|
|
Anmeldedatum: 15.08.10
|
|
|
|
Wohnort: Dundee
|
|
|
|
Version: 2008a, 2010a
|
|
|
|
|
|
Verfasst am: 13.02.2011, 13:50
Titel:
|
|
Hallo,
mit deine Methode sollte es etwa so funktionieren (hab leider kein besseres Bild gefunden):
Natürlich könntest du auch einfach einen Threshold setzen und alle Werte die kleiner als dein Kreis sind auf 0 setzen. Nehmen wir an du möchtest im obrigen Bild nur Pixel mit dem Wert größer als 200 angezeigt haben:
Wenn du die image processing toolbox besitzt, so ist der Befehl:
praktisch um interaktiv mit dem Threshold zu spielen. Ansonsten gibt es auch derartige Tools im Matlab Exchange.
MFG
Sco
|
|
|
holistic |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 29.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.02.2011, 18:19
Titel:
|
|
Wenn ich den genauen Code von dir oben verwende, dann funktioniert das super, danke!
Wenn ich jetzt allerdings ein eigenes Bild verwende, bekomme ich eine Fehlermeldung:
Error in ==> hhanalyse at 11
figure, surf(X,Y,I,'Edgecolor','none');
??? Error using ==> surf at 78
Data dimensions must agree.
Error in ==> hhanalyse at 11
figure, surf(X,Y,I,'Edgecolor','none');
Was stimmt da mit meinem Bild nicht? Habe es in Graustufen umgewandelt und als tif gespeichert (vorher war es ein jpeg)
Zuletzt bearbeitet von holistic am 13.02.2011, 19:09, insgesamt einmal bearbeitet
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.02.2011, 18:25
Titel:
|
|
Hallo,
wenn du das auf eines deiner Bilder ummünzen willst, solltest du natürlich auch die Dimensionen von 256x256 entsprechend anpassen. Allerdings werden die ersten beiden Eingabeargumente hier nicht gebraucht, da MATLAB die darin enthaltene Annahme automatisch macht:
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
holistic |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 29.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.02.2011, 19:12
Titel:
|
|
Zitat: |
wenn du das auf eines deiner Bilder ummünzen willst, solltest du natürlich auch die Dimensionen von 256x256 entsprechend anpassen |
Wie mache ich das? Denn irgendwie klappt das momentan so überhaupt nicht
EDIT: Hab nochmal nachgeschaut und mein Bild hat die Dimensionen: <459x384x3 double>
das cameraman.tif hat : <256x256 double>
Verstehe ich jetzt nicht ganz, warum es bei zwei tif-Dateien so unterschiedlich ist
Zuletzt bearbeitet von holistic am 13.02.2011, 19:34, insgesamt einmal bearbeitet
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.02.2011, 19:33
Titel:
|
|
Hallo,
bitte noch zwei Zeilen weiterlesen; da steht, wie du das auch ohne hinbekommst.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Sco |
Forum-Meister
|
|
Beiträge: 699
|
|
|
|
Anmeldedatum: 15.08.10
|
|
|
|
Wohnort: Dundee
|
|
|
|
Version: 2008a, 2010a
|
|
|
|
|
|
Verfasst am: 13.02.2011, 19:34
Titel:
|
|
Hallo,
Oder eben einfach bei surf weglassen wie Harald schon sagt. Ich habe es nur aus pädagogischen Gründen mit meshgrid gezeigt.
MFG
Sco
|
|
|
holistic |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 29.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.02.2011, 19:37
Titel:
|
|
Harald hat Folgendes geschrieben: |
Hallo,
bitte noch zwei Zeilen weiterlesen; da steht, wie du das auch ohne hinbekommst.
Grüße,
Harald |
Habe ich probiert mit folgendem Code:
Dann kommt die Warnmeldung: Warning: Matrix dimensions must agree, not rendering mesh
Und es wird nichts angezeigt. Irgendwo hängts wohl noch
|
|
|
Sco |
Forum-Meister
|
|
Beiträge: 699
|
|
|
|
Anmeldedatum: 15.08.10
|
|
|
|
Wohnort: Dundee
|
|
|
|
Version: 2008a, 2010a
|
|
|
|
|
|
Verfasst am: 13.02.2011, 19:45
Titel:
|
|
Hallo,
dann liegt es an deinem Bild. Welche dimension hat I wenn du das Bild einliest? Handelt es sich möglicherweise um ein true-color Bild?
MFG
Sco
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.02.2011, 19:55
Titel:
|
|
Hallo,
weiter oben wurde noch "<459x384x3 double> " eingefügt.
Das ist also ein Echtfarb- und kein Graustufenbild.
Wenn es um eine Visualisierung der Intensitäten geht, könnte man die Intensität vorher als Mittelwert der R, G, und B-Werte berechnen:
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Sco |
Forum-Meister
|
|
Beiträge: 699
|
|
|
|
Anmeldedatum: 15.08.10
|
|
|
|
Wohnort: Dundee
|
|
|
|
Version: 2008a, 2010a
|
|
|
|
|
|
Verfasst am: 13.02.2011, 20:00
Titel:
|
|
Hallo,
naja ich lese jetzt nicht jedesmal alle Posts aufs Neue und suche nach editierten Beiträgen...
Man könnte das RGB Bild auch z.B. in ein Graustufenbild oder indexiertes Bild umwandeln und dann anzeigen lassen:
MFG
Sco
|
|
|
holistic |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 29.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.02.2011, 20:31
Titel:
|
|
Hey, danke für die schnellen und hilfreichen Antworten.
Mit folgendem Code funktioniert es ungefähr wie ich es mir vorgestellt habe:
Wenn ich allerdings eine Umwandlung in Grauwerte vornehme, sieht der Plot etwas seltsam aus:
Sind die Grauwerte immer zwischen 0 und 1?
Sorry für das viele editing: Was muss ich denn am oberen Code verändernt, so dass ich die Intensitätswerte invertieren kann, d.h. die niedrigsten Werte sind dann im Plot die höchsten und umgekehrt.
Danke für die bisherigen Mühen
|
|
|
Sco |
Forum-Meister
|
|
Beiträge: 699
|
|
|
|
Anmeldedatum: 15.08.10
|
|
|
|
Wohnort: Dundee
|
|
|
|
Version: 2008a, 2010a
|
|
|
|
|
|
Verfasst am: 13.02.2011, 21:02
Titel:
|
|
Hallo,
Zitat: |
Sind die Grauwerte immer zwischen 0 und 1?
|
ja bei der Umwandlung werden die Werte auf 0-1 normiert.
Zitat: |
Was muss ich denn am oberen Code verändernt, so dass ich die Intensitätswerte invertieren kann, d.h. die niedrigsten Werte sind dann im Plot die höchsten und umgekehrt.
|
MFG
Sco
|
|
|
holistic |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 29.06.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.02.2011, 21:37
Titel:
|
|
Super, danke! Jetzt kann ich etwas rumprobieren
Zwei Fragen hätte ich da noch:
Du hattest etwas vom interaktiven rumspielen mit einem Threshold gemeint und das man dafür imtool verwenden kann.
Wie benutze ich das denn am besten?
Die andere Frage wäre, wie ich ein Histogramm erstellen kann. Am besten wäre es, wenn ich das histogramm für eine von mir markierte Stelle erstellen kann.
Was da gerade noch jemand Rat?
|
|
|
Sco |
Forum-Meister
|
|
Beiträge: 699
|
|
|
|
Anmeldedatum: 15.08.10
|
|
|
|
Wohnort: Dundee
|
|
|
|
Version: 2008a, 2010a
|
|
|
|
|
|
Verfasst am: 13.02.2011, 22:10
Titel:
|
|
Hallo,
Zitat: |
Du hattest etwas vom interaktiven rumspielen mit einem Threshold gemeint und das man dafür imtool verwenden kann.
Wie benutze ich das denn am besten?
|
Hierbei hilft die Matlab Hilfe, einfach mal nach imtool suchen!
Zur 2. Frage. Allgemein geht ein Histogram mit hist (das hättest du auch über die Matlab Hilfe gefunden). Mit bestimmten Intervall würde es folgendermaßen gehen:
Wenn du wirklich nur eine Stelle, also das Vorkmmen eines Wertes , ermitteln möchtest, brauchst du natürlich kein Histogramm:
MFG
Sco
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|