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

RAW Datei als Bild einlesen

 

n.force
Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 08.10.2014, 13:09     Titel: RAW Datei als Bild einlesen
  Antworten mit Zitat      
Liebe Community,

ich habe ein Picture Viewer namens ImageJ zu Hand und kann damit RAW Dateien als Bild importieren (32-bit real, 256x256,little-endian byte order).

Nun würde ich dies gern mit Matlab machen.

Mit folgendem Code funktioniert es eigentlich auch:
Code:
row=256;  
col=256;
fin=fopen('bin0177','r');
I=fread(fin,row*col,'uint32=>uint32');
Z=reshape(I,row,col);
Z=Z';
imshow(Z)


Allerdings sieht das Bild aus Matlab nicht ganz so aus wie das Bild aus ImageJ. Ich habe das Gefühl, als seihen die Farben invertiert.

Im Anhang befindet sich auch eine solche raw Datei.

Was mache ich denn falsch?

Vielen Dank für eure hilfe

bin0177.zip
 Beschreibung:

Download
 Dateiname:  bin0177.zip
 Dateigröße:  238.3 KB
 Heruntergeladen:  377 mal
ImageJ vs Matlab.JPG
 Beschreibung:

Download
 Dateiname:  ImageJ vs Matlab.JPG
 Dateigröße:  123.89 KB
 Heruntergeladen:  388 mal
Private Nachricht senden Benutzer-Profile anzeigen


n.force
Themenstarter

Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 17.10.2014, 12:32     Titel:
  Antworten mit Zitat      
Hallo,

ich habe das oben beschriebene Problem erstmal nach hinten verschoben und ich damit arrangiert.

Folgendes Problem besteht aber dennoch: mit dem imshow Befehl mache ich eigentlich nichts anderes als eine Matrix (256x256) anzuzeigen. Die Werte darin variieren zwischen min(Bild) und max(Bild) sehr stark. Dennoch werden mir nur zwei Farben (grau und weiß) im Bild angezeigt.

Warum wird keine Abstufung zwischen Grau und Weiß vorgenommen?

Vielen Dank.
Private Nachricht senden Benutzer-Profile anzeigen
 
mats
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 16.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2014, 12:37     Titel:
  Antworten mit Zitat      
Habe hier leider keine lizenz fuer die image toolbox, aber ich erinnere mich dass ich so ein problem auch mal hatte. damals variierten meine werte zwar, aber nicht in dem default interval von imshow. man konnte das variationsinterval aber mit angeben, dann hatte es geklappt und ich bekam nicht nur zwei töne. probiere mal:
imshow(image,[min(min(image) max(max(image))])
Private Nachricht senden Benutzer-Profile anzeigen
 
n.force
Themenstarter

Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 17.10.2014, 12:42     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort.

Das habe ich schon versucht. Es klappt aber nicht. Sieht genauso aus wie vorher.

ABER: ich habe soeben mein anfängliches Problem gelöst. Und zwar so:

Code:

Z=mat2gray(Z);
imshow(1-Z)
 

Die Farben sind nun invertiert.

Bleibt die Frage nach den Zwischenfarbtönen Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
mats
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 16.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2014, 12:58     Titel:
  Antworten mit Zitat      
Ich hoffe das löst dein Problem:


image2=rand(500,500) %Matrix mit Werten zwischen 0 und 1
image2=image2*256; %Macht Werte zwischen 0 und 256 daraus, das ist die Standardabstufung
image2=uint8(image2); %Macht ein uint8-Bildformat aus deiner Matrix
imshow(image2) %kann Grauwerte von dem uint8-objekt darstellen
Private Nachricht senden Benutzer-Profile anzeigen
 
n.force
Themenstarter

Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 17.10.2014, 13:02     Titel:
  Antworten mit Zitat      
Leider nein.
Unverändertes Ergebnis. Obwohl meine Matrix jetzt nur Zahlen zwischen 1 und 256 enthält.
Private Nachricht senden Benutzer-Profile anzeigen
 
n.force
Themenstarter

Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 17.10.2014, 13:05     Titel:
  Antworten mit Zitat      
Das ist der Code:

Code:

clear all;
close all;
clc;


row=256;  
col=256;
fin=fopen('rek0170.raw','rb');
I=fread(fin,[row col],'uint32=>uint32',0,'b');
Z=reshape(I,[row col]);
Z=Z';
Z=mat2gray(Z);
Z=1-Z;
figure(1)
imshow(Z)
colormap(gray)
 


Und unten eine Beispieldatei.

rek0170.zip
 Beschreibung:

Download
 Dateiname:  rek0170.zip
 Dateigröße:  237.61 KB
 Heruntergeladen:  384 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
mats
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 16.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2014, 13:05     Titel:
  Antworten mit Zitat      
merkwuerdig, aber das kriegen wir noch gelöst. Kannste mir mal so eine Matrix hier hochladen? Einfach als .mat Datei abgespeichert
Private Nachricht senden Benutzer-Profile anzeigen
 
n.force
Themenstarter

Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 17.10.2014, 13:25     Titel:
  Antworten mit Zitat      
selbstverständlich

Z.zip
 Beschreibung:

Download
 Dateiname:  Z.zip
 Dateigröße:  463.95 KB
 Heruntergeladen:  396 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
n.force
Themenstarter

Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 17.10.2014, 14:11     Titel:
  Antworten mit Zitat      
Ich habe es hinbekommen.

Es lag der der Zeile (ist nun die korrigierte):

Code:
I=fread(fin,[row col],'real*4=>real*4');


Das hat irgendwas mit den Datentypen zu tun.
Kann mir allerdings nicht erklären was genau.
Private Nachricht senden Benutzer-Profile anzeigen
 
mats
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 16.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2014, 14:40     Titel:
  Antworten mit Zitat      
Also wenn alle deine Matrizen so sind wie diese, dann ist gar nichts richtig falsch. Das Problem ist, dass deine Werte entweder alle recht klein oder recht gross sind(kleiner 30 oder grösser 220 oder so). Die zwischentöne sind in deinen Daten einfach nicht enthalten. Wenn du die einfach mal kuenstlich hinzufuegst, siehst du was ich meine. Diese Umformerei die ich da vorher gemacht habe ist auch gar nicht notwendig, wenn die Daten diese Zwischentöne enthalten:

clear
load('Z.mat');
Z(90:120,90:120)=0.5; %Hier setze ich ein Block grau rein
imshow(Z)
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 - 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.