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

Problem mit double bei Bildanzeige mit imshow() und image()

 

JaWi
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 10.08.13
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 23.08.2013, 16:29     Titel: Problem mit double bei Bildanzeige mit imshow() und image()
  Antworten mit Zitat      
Es geht um folgende Bilder:

A 613x707x3 10401384 double
B 613x707x3 10401384 double
C 613x707x3 10401384 double
D 703x763x3 12873336 double
E 703x763x3 12873336 double

A, B und C lassen sich problemlos über

Code:

GloVar.DH.Map =image([xmin xmax], [ymin ymax], A);
 


in meine GUI einfügen,

bei D und E erscheinen
- bei imshow()nur graue und schwarze Flächen
- bei image() wird der Fehler "Error using image
TrueColor CData contains element out of range 0.0 <= value <=
1.0" ausgegeben.

Ich bin auf die "Umrechnung" in der Dokumentation vom image bei mathworks gestoßen, aber es funktioniert nichts und da es sich bei D und E um double handelt, ist es doch eigentlich auch nicht nötig?

Auch das setzen der Werte mit

Code:


var=E;

rgb_img=cat(3,var(:,:,1),var(:,:,1),var(:,:,1));
rgb_img=rgb_img-min(min(min(rgb_img)));
rgb_img=rgb_img/max(max(max(rgb_img)));

GloVar.DH.Map =image([xmin xmax], [ymin ymax], rgb_img);


 


funktionierte nicht. Oder habe ich etwas falsch gesetzt?

Bei Folgendem erscheinen auch nur Grau-schwarz-Flächen:

Code:

img=E;
img=repmat(magic(250),[1 1 3]);
imgi=img/max(img(:));
imgo=imresize(imgi,[180,180],'bilinear');

% Clip the upper bound of the data to 1
imgo(imgo>1) = 1;

% Clip the lower bound of the data to 0
imgo(imgo<0) = 0;
%disp(sprintf('Ouput min = %g. Output max = %g.',min(imgo(:)),max(imgo(:))))
 



Edit: Falls es eine Rolle spielt, D und E sind wie folgt aus A abgeleitet:

Code:


% D ist Matrix A, aufgefüllt mit "grauer Fläche"

D=padarray(A,[delta_BS1_y_pix,delta_BS1_x_pix],128,'post');


% E ist Matrix D gedreht um einen bestimmten Winkel
E=imrotate(D,Angle,'crop');

 




Danke!
Private Nachricht senden Benutzer-Profile anzeigen


JaWi
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 10.08.13
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 24.08.2013, 08:44     Titel:
  Antworten mit Zitat      
Bitte sagt mir, wenn ich das Problem anders beschreiben muss, um es verständlicher zu machen ;)

Mit den "Umrechnungen" in der Doku von image() meinte ich dieses:

X64 = double(X8) + 1;

X64 = double(X16) + 1;

X8 = uint8(round(X64 - 1));

X16 = uint16(round(X64 - 1));

Aber da D und E und laut "whos" ja auch double sind, dürfte das nicht die Lösung sein.
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: 24.08.2013, 09:26     Titel:
  Antworten mit Zitat      
Moin JaWi,

das Problem verstehe ich insofern nicht, weil die Größe der Bilder völlig egal sind und auch padarray keine Probleme macht. Die Fehlermeldung besagt, dass deine Daten der beiden Bilder "out of range" sind. Wenn Bilder Probleme machen, muss man sich die Daten ansehen, die immer zwischen 0 +1 und 0 und 255 liegen müssen. Image repräsentiert seine Paletteneinträge nur ziwchen 0 und 255. Es kann passieren, das durch Berechnungen die Werte darunter oder darüber liegen.

Insofern sind auch die ganzen Berechnungen egal. Entscheiden ist das Ergebnis. Liegen die Werte in den Bereichen, müssen die Bilder auch angezeigt werden. Wenn nicht, wird die Suche ohne den Originaldaten fast aussichtslos. Wenn dein Befehle durch Doppelfunktionen nicht überschrieben sind, fällt mir zunächst auch kein Weg ein.

Versuche mal, deine Bilder gegen andere Bilder aus Matlab zu tauschen.
Tritt das Problem dann auch noch auf?
Private Nachricht senden Benutzer-Profile anzeigen
 
JaWi
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 10.08.13
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 24.08.2013, 10:16     Titel:
  Antworten mit Zitat      
Hmpf, wenn man den Wald vor lauter Bäumen nicht sieht: Shocked

Wenn man natürlich bei padarray "128" anhängt, was ja eher nicht zwischen 0 und 1 liegt, muss man sich nicht wundern! Sorry Rolling Eyes
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: 24.08.2013, 12:00     Titel:
  Antworten mit Zitat      
Da verstehe ich aber auch die Fehlermeldung nicht. Wenn ich in padarray double und uint8 mische, müsste logischerweise dort eine Fehlermeldung erscheinen. Die erscheint sonst doch auch!

Also, halte durch und dafür ein schönes Wochenende! Razz
Private Nachricht senden Benutzer-Profile anzeigen
 
JaWi
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 10.08.13
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 29.08.2013, 17:07     Titel:
  Antworten mit Zitat      
Jetzt erst gelesen, abere trotzdem danke Laughing Vor allem hätte die 128 ja auch durch einen WQert zwischen 0 und 1 überschrieben werden müssen, das ist auch nciht passiert. Sehr merkwürdig! Gut, dass es jetzt so klappt Wink
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.