|
|
Bild einlesen und ausgeben |
|
hallo |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.04.2008, 10:50
Titel: Bild einlesen und ausgeben
|
|
|
|
|
Hallo! habe eine Frage zum Bildverarbeitung. ich habe eine einfach Programm geschrieben, um eine Bild im Matlab einzulesen und wieder auszugeben.
% Bild test %
Bild1=imread('foto1.BMP');
image(Bild);
das Programm hat funktioniert. weil ich später mit dem Bild arbeiten möchte, muss ich ncoh vor "Imread" noch eine "Double" stehen lassen.
Bild1=double(imread('foto1.BMP'));
dann statt " 480*640*3uint8 " bekomme ich eine " 480*640*3 double ", als ich noch mal
Image(Bild1)
laufen lassen, bekomme ich eine Fehlermeldung :
TrueColor CData contains element out of range 0.0 <= value <= 1.0.
??? habe ich nicht verstanden, warum? und sobald ich die "Double" weglasse, ist auch diese Fehler sofort weg!! und ich habe auch geprüft, die Werte im " 480*640*3uint8 " und " 480*640*3 double " scheint identisch zu sein! ist das richtig?
und ich habe auch versucht mit Befehl "Colormap(gray(256))" auf das Foto zu beeinflussen, hat aber nicht funktioniert. hat jemand die selbe Problem wie ich?
|
|
|
|
|
steve |
Ehrenmitglied
|
|
Beiträge: 2.028
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: Wien
|
|
|
|
Version: R2024a
|
|
|
|
|
|
Verfasst am: 17.04.2008, 11:58
Titel:
|
|
Hallo,
ich verstehe nicht ganz was dein Ziel ist, dass du die Matrix umwandeln musst.
Ich verwende zum Anzeigen von Bildern immer imshow(), welches mir bei deinem Beispiel keinen Fehler ausgibt, sondern ein weißes Bild.
Gruß
Alex
_________________
>> I told me to.
____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
hallo |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.04.2008, 12:38
Titel:
|
|
hai!
ich habe eigentlich vor, eim bestimmt Bereich von Bild auszuschneiden, un dann bearbeiten, z.B. Farbeänderung, Umfang ausrechnen.....oder auf eine bestimmte Punkt von Bild zuzugreifen.
deswegen habe ich gedacht, dass bevor ich das machen darf, soll ich zuerst das Bild im double Format umwandeln. Weil mit "Bild1=imread('foto1.BMP');" bekomme ich eine uint8 Format, von ein paar Bücher habe ich gelesen, dass man diese Schritt machen muss. oder?
mfg
yang
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 17.04.2008, 12:45
Titel:
|
|
Tja, genau beim Umwandeln passiert bei dir ein Fehler.
Farbdaten müssen in double zwischen 0 und 1 liegen.
Das heißt , wenn du double(imread('foto1.BMP')) anwendest, erhälst du zwar Doublewerte, die deutlich größer als 1 sind (z.B. Wert 128 in uint8 wird in double 128.0).
Also muss du noch noch zusätzlich die Werte in Bereich zwischen 0..1 umrechnen, das erreichst du, wenn du alle Bildwerte durch maximalen Wert in uint8 teilst (das wäre bei 2^8=256)
|
|
|
hallo |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.04.2008, 13:21
Titel:
|
|
Jo!!!alles klar!
danke schön!!
und ich habe auch andere Lösung hier:
Bild1=double(imread('foto1.BMP'));
image(mat2gray(bild1));
und denny, weißt du , welche Vorteil habe ich dadurch, wenn ich die wert alles zwischen 0 und 1 liegen habe? darf ich einfach unter "nint8-format" mit dem Bild weiter bearbeiten(z.B ein Teil ausschneiden oder Farbeänderung..) ?
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 17.04.2008, 14:57
Titel:
|
|
Zitat: |
und denny, weißt du , welche Vorteil habe ich dadurch, wenn ich die wert alles zwischen 0 und 1 liegen habe?
|
Ich vermute es liegt einfach an Farbraum das Matlab für Darstellung von Farbe nutzt.
So geben Integer-Werte RGB-Bereich an.
Während double-Werte geben HSV-Bereich an.
Apropos hab grade herausgefunden, so geht es auch Integer-Bildpixel in Double-Bildpixel umzurechnen:
Zitat: |
darf ich einfach unter "nint8-format" mit dem Bild weiter bearbeiten(z.B ein Teil ausschneiden oder Farbeänderung..) ?
|
Die Integer-Werte sind grundsätzlich leichter zu handhaben. Auch Arbeit in RGB-Raum ist deutlich einfacher.
Deswegen spricht nichts dagegen, wenn man es auch tut .
|
|
|
hallo |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.04.2008, 15:56
Titel:
|
|
so! besten Dank!!
|
|
|
hallo |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 16.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.04.2008, 13:00
Titel:
|
|
steve hat Folgendes geschrieben: |
Hallo,
ich verstehe nicht ganz was dein Ziel ist, dass du die Matrix umwandeln musst.
Ich verwende zum Anzeigen von Bildern immer imshow(), welches mir bei deinem Beispiel keinen Fehler ausgibt, sondern ein weißes Bild.
Gruß
Alex |
hai! Alex , habe ich endlich ausgefunden, warum es so ist.
weil image arbeitet nur zwischen 0 und 1. aber imshow arbeitet zwischen0 bis 255. meine Fehler war, dass ich bei Benutzung von "Image" eine Wert von 0 bis 255 habe, das ist natürlic falsch. und bei dir, weil du "imshow" nehmst, das ist natürlich eine Weißbild, weil die alle auf 255 steht, und wenn man "imshow(bild/256)" schreibt, bekomme ich schon eine richtig bild, und deshalb ist bei dir keine Fehler ausgekommen.
|
|
|
|
|
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.
|
|