2010-12-20 7 views
3

Wenn ich diese BefehleMatlab RGB-Werte Dilemma

schrieb
out = ones(size(ben)) 
imshow(out) 

der Ausgang ist ein weißes Bild, aber ich erwarte, fast düsteres Bild, da die RGB-Werte 1,1,1 sind. wenn ich 255,255,255 gebe, gibt es auch ein weißes Bild. Ist das nicht ein Dilemma?

Antwort

3

Versuchen out = ones(size(ben), 'uint8');

ones() standardmäßig ein Array von Doppel erstellt. Wenn imshow() ein Array von doubles erhält, wird davon ausgegangen, dass die Pixelwerte zwischen 0 und 1 liegen, und die weiße Farbe wird größer als 1 zugewiesen. Wenn Sie jedoch ein Array von uint8 an imshow() übergeben, wird der Bereich zwischen 0 und 0 angenommen und 255.

Sie können auch versuchen, imagesc(); anstelle von imshow() verwenden, aber Sie müssen möglicherweise colormap gray nach wards, um ein Graustufenbild zu erhalten.

Eine weitere Alternative ist das Bild vor der Anzeige neu zu skalieren:

imshow(out/max(out(:))); 
+2

Eigentlich in einem 8-Bit-Bild, gehen die Werte von 0 bis 255. Auch eine verkleinerte Bild zu zeigen, können Sie rufen 'imshow (aus, []) ' – Jonas

+0

Guter Punkt! Ich versuche immer daran zu denken, dass Matlab eine 1-basierte Array-Indizierung verwendet, und ich denke, ich habe es diesmal übertrieben ... :) – Dima