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

imread funktioniert komisch

 

Muraer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2010, 09:42     Titel: imread funktioniert komisch
  Antworten mit Zitat      
Hallihallo zusammen,

ich versuche gerade, ein Windows bmp in Matlab zu verarbeiten. Das Bild hat 100x100 Pixel und ist 1 bit tief, also nur schwarz/weiss.

Dabei stelle ich fest, dass sich imread merkwürdig verhält.
Lese ich ein komplett schwarzes Bild ein, so sind alle Pixel auf 0 gesetzt. Lese ich ein komplett weisses Bild ein, so sind alle Pixel auf 1 gesetzt.

Lese ich jedoch ein Bild ein, das bis auf einen schmalen schwarzen Streifen an der oberen Bildkante weiss ist ein, so sind die schwarzen Pixel auf 1 gesetzt und der Rest auf 0, also genau verkehrt herum...

Imshow zeigt das richtige Bild an...

Was ist da los? Warum drehen die Pixelwerte für schwarz/weiss plötzlich? Passiert auch bei anderen Bildern..???

Herzlichen Gruss und vielen Dank
Mario


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.04.2010, 10:49     Titel:
  Antworten mit Zitat      
Hallo erstmal,

irgendetwas scheint nicht zu stimmen mit Deinem Bild. Durch den Befehl "imread" erhalte ich Werte zwischen 0 und 255. Auch durch wandeln erhalte ich die richtigen Werte zwischen 0 und 1. Mit welchem Programm kann man Bilder in 1 bit tiefe speichern - ich denke, dass alle Bildprogramme zumindest 8 bit speichern?

Viele Grüße
Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.04.2010, 11:19     Titel:
  Antworten mit Zitat      
Hallo,

habe mit Paint gleichen monochromen Bild-Mustern erzeugt. Mit imread eingelesen, keine Verwechslung.
Weiß ist immer 1
Schwarz hat immer 0

also bist du sicher, dass die Verwechslung stattfindet ???
Welche Matlab Version verwendest du?
Hänge deine Bilder doch hier rein!



@Hubertus
Mit Paint kannst du Bilder monochrom abspeichern, das entspricht 1 Bit-Tiefe
Private Nachricht senden Benutzer-Profile anzeigen
 
Muraer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2010, 11:47     Titel:
  Antworten mit Zitat      
Hallo zusammen,
hab die Bilder mit Gimp gespeichert, (Modus:indiziert, schwarz/weiss(1bit))
Im Anhang mal ein Bildchen.

Und wenn ich das in Matlab einlese, sind die weissen Pixel auf 0 und die schwarzen auf 1...??
Also A=imread('topbar','bmp');
A(1,1) = 1
A(100,100) = 0

....Gruss
Mario
 
Muraer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2010, 11:48     Titel:
  Antworten mit Zitat      
Argh, bmp als Anhang nicht erlaubt
 
Muraer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2010, 11:50     Titel:
  Antworten mit Zitat      
Noch was: habs gerade mit Paint noch als Monochrom gespeichert - kein Unterschied.

Gruss
Mario
 
Muraer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2010, 11:57     Titel:
  Antworten mit Zitat      
So, hier das Ganze mal dokumentiert
Im Anhang 3 Fotos: weiss, schwarz und topbar.

Sowie ein Screenshot von Matlab.

Zuerst das schwarze Bild. Alle Werte in der Matrix = 0, wie zu erwarten.
Dann das weisse Bild. Alle Werte = 1, wie zu erwarten.

Dann das topbar-Bild mit schwarz und weiss. Die oberen Werte (A(1,1)) sind jetzt = 1, obwohl sie schwarz sind, und die unteren Werte (A(50,50)) sind = 0, obwohl sie weiss sind....
Das dürfte doch nicht sein??

Gruss
Mario

Screenshot.jpeg
 Beschreibung:
Der Matlab-Screenshot

Download
 Dateiname:  Screenshot.jpeg
 Dateigröße:  29.94 KB
 Heruntergeladen:  561 mal
topbar.jpeg
 Beschreibung:
Das merkwürdige Bild. Bei mir ein .bmp

Download
 Dateiname:  topbar.jpeg
 Dateigröße:  573 Bytes
 Heruntergeladen:  546 mal
weiss.jpeg
 Beschreibung:
Das weisse Bild. Bei mir ein .bmp

Download
 Dateiname:  weiss.jpeg
 Dateigröße:  357 Bytes
 Heruntergeladen:  574 mal
schwarz.jpeg
 Beschreibung:
Das schwarze Bild. Bei mir ein .bmp

Download
 Dateiname:  schwarz.jpeg
 Dateigröße:  357 Bytes
 Heruntergeladen:  553 mal
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.04.2010, 12:30     Titel:
  Antworten mit Zitat      
Hallo nochmal,

ich kann im Moment Deine Beipiele nicht laden, aber ein vergleichbares Muster mit Paint erstelllt (Danke für den Hinweis denny) zeigt keine Probleme. Ich habe auch manchmal (selten) "unerklärliche Phänome" und lösche dann den Inhalt des Verzeichnisses >> prefdir ( vorher die Dateien sichern!!!). Bisher habe ich damit alle Phantome beseitigen können.

Viel Glück
Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.04.2010, 13:10     Titel:
  Antworten mit Zitat      
Hallo,

auf Screenshot sehe ich dass du mindestens Matlab R2009B verwendest,
an der kann es wohl nicht liegen. Weil bei mir, in 2009b treten solche Effekte nicht auf.


vielleicht hat Hubertus recht, und existiert irgendwo in SearchPath Datei mit gleichem Namen

schaue mal mit which, ob der Pfad zu diesem Bild stimmt.
Code:

which topbar.bmp
 


versuche kompletten Pfad an imread zu übergeben
Code:

A= imread('C:\temp\topbar.bmp')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Muraer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2010, 13:18     Titel:
  Antworten mit Zitat      
Huhu,

Danke für die Tipps.
Habe nun das Ganze mit which gemacht und bei imread den gesamten Dateipfad angegeben - keine Änderung. Die schwarzen Pixel sind immernoch auf "1".
Im Anhang mal ein Zip-File mit den Bildern drin.
Matlab ist 7.8.0 (R2009a)

Im Zip hats auch ein Bild "tophalf" - da stimmt es wieder mit den Pixeln - schwarz = 0, weiss = 1... aber in topbar wirds dann wieder umgekehrt :-/

Gruss und Danke
Mario

Matlab-Problem.zip
 Beschreibung:
Ein Zip mit 4 Bitmap-Bildern

Download
 Dateiname:  Matlab-Problem.zip
 Dateigröße:  639 Bytes
 Heruntergeladen:  409 mal
 
Muraer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2010, 13:40     Titel:
  Antworten mit Zitat      
OK; Problem gelöst. Auf einer 2010a-Version läuft es wie es soll....
Komisch, ist das ein Bug?

Gruss
Mario
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.04.2010, 13:50     Titel:
  Antworten mit Zitat      
Also
habe jetzt deine Bilder mit IMREAD eingelesen, bekomme ich bei topbar.bmp auch diesen Effekt: Oben 1 unten 0, während bei tophalf.bmp Oben 0 unten 1 sind.
Der Fehler tritt in 2007b und 2009b auf, interessant wohl wirklich Bug in Matlab.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.04.2010, 13:55     Titel:
  Antworten mit Zitat      
Ich habe vorhin vergessen zu erwähnen, dass Du auch mal folgendes versuchen kannst. Speichere das Bild nach imread unter anderem Namen ab und lese es wieder ein. Der visuelle Inhalt ist zwar gleich, aber die Dateistruktur kann sich geändert haben. Das soll nicht heißen, dass das Problem bei Matlab liegt. Mir ist so ein Fall schon einmal aufgefallen.

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Muraer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2010, 22:47     Titel:
  Antworten mit Zitat      
Verflucht Leute, habs gerade an einem anderen PC unter Matlab R2010a laufen lassen und - plööö...geht nicht. Selber Fehler, je nach Bild 1 und 0 vertauscht Sad Das vorhin war Fehlalarm...Sad

Himmel Hölle was läuft hier komisch?
Macht Matlab die Vergabe der 1 bzw. 0 davon abhängig, welche Pixel häufiger vorkommen?

Gruss
Mario
 
Zenon
Forum-Guru

Forum-Guru


Beiträge: 292
Anmeldedatum: 20.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.04.2010, 09:29     Titel:
  Antworten mit Zitat      
Hast Du zum Schluss das mit GIMP erstellte Bild genutzt oder das andere?

Wenn Du das mit GIMP genutzt hast und es im CMYK Farbraum erstellt und dann erst als 1-Bit tief gespeichert hat könnte es sein, dass er da das K übernommen hat (mal salopp gesprochen). CYMK arbeitet aber mit differenzen (weil es mit Druck zu tun hat) da ist 0 = 1 und anders herum...

Das würde es erklären...ist aber wahrscheinlich nur eine Verschwörungstheorie...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 2025 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.