Farbige Höhen mit bar3-Plot < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 16:55 Mi 29.04.2009 | Autor: | Heimatloser |
Hallo Freunde,
ich habe versucht ein Grauwertbild mit Matlab als 3d Balkendiagramm zu visualisieren, bin aber kläglich gescheitert.
Dies liegt vor allem daran dass ich bar3 nicht so ganz verstehe.
Hier erst mal mein Code mit einem selbst erstellten Graukeil:
%Graukeil:
for i=1:400
Z(i,:) = [1:400];
end
% Kopiert von der Mathworksseite
h = bar3(Z,1);
for i = 1:length(h)
zdata = ones(6*length(h),4);
k = 1;
for j = 0:6:(6*length(h)-6)
zdata(j+1:j+6,:) = Z(k,i);
k = k+1;
end
set(h(i),'Cdata',zdata)
end
% Colormap auf Grau geändert
colormap gray
colorbar
Der Sinn wäre, wenn ich von Oben auf den Barplot schau sehe ich einen ganz normalen Graukeil, wenn ich jedoch drehe will die schiefe Ebene sehen die ein Graukeil nunmal ist.
Was mache ich falsch, beziehungsweise wie funktioniert die Umdefinition? Was bedeuten die 6 und die 4?
muss ich die evtl in Zahlen um die 400 ändern? Auf der Mathworksseite wird es an einem magic(5) erklärt...
Vielen Dank für die Hilfe
Heimatloser
PS:
#
# Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:33 Do 30.04.2009 | Autor: | MatthiasKr |
Hi,
> Hallo Freunde,
>
> ich habe versucht ein Grauwertbild mit Matlab als 3d
> Balkendiagramm zu visualisieren, bin aber kläglich
> gescheitert.
> Dies liegt vor allem daran dass ich bar3 nicht so ganz
> verstehe.
> Hier erst mal mein Code mit einem selbst erstellten
> Graukeil:
>
> %Graukeil:
> for i=1:400
> Z(i,:) = [1:400];
> end
>
> % Kopiert von der Mathworksseite
> h = bar3(Z,1);
> for i = 1:length(h)
> zdata = ones(6*length(h),4);
> k = 1;
> for j = 0:6:(6*length(h)-6)
> zdata(j+1:j+6,:) = Z(k,i);
> k = k+1;
> end
> set(h(i),'Cdata',zdata)
> end
>
> % Colormap auf Grau geändert
> colormap gray
> colorbar
>
> Der Sinn wäre, wenn ich von Oben auf den Barplot schau sehe
> ich einen ganz normalen Graukeil, wenn ich jedoch drehe
> will die schiefe Ebene sehen die ein Graukeil nunmal ist.
sorry, ich verstehe dein ziel nicht so ganz: du hast ein grayscale image, willst die farbinformationen als 3d flaeche darstellen und zusaetzlich noch das bild als textur auf die flaeche zeichnen. Ist das korrekt?
Wenn ja, wuerde ich das ganz anders machen. Wenn nein, erklaer bitte nochmal dein ziel...
gruss
matthias
|
|
|
|
|
> sorry, ich verstehe dein ziel nicht so ganz: du hast ein
> grayscale image, willst die farbinformationen als 3d
> flaeche darstellen und zusaetzlich noch das bild als textur
> auf die flaeche zeichnen. Ist das korrekt?
> Wenn ja, wuerde ich das ganz anders machen. Wenn nein,
> erklaer bitte nochmal dein ziel...
ich habe irgendein bild aka eine matrix mit zahlen von 0 bis... 255 (oder im Beispiel 400)
um jetzt ein grauwertbild zu erhalten male ich die bildelemente mit 0 schwarz an und die mit den hohen zahlen weiß, dazwischen skaliere ich.
Jetzt will ich aber zusätzlich noch die pixel in die höhe schießen lassen je nach grauwert, also die mit 0 sollen sich gar nicht heben, die mit 255 (oder 400) sollen die längsten balken haben.
ich dachte mir der matlab bar3d plot wäre am besten geeignet für so etwas, da ich da die balken schon in der Höhe des Wertes habe und im Grunde genommen nur noch die Farben richtig skalieren muss.
Hoffe jetzt ist es verständlicher.
Wenn es anders geht bitte ich trotzdem Um Tipps
>
> gruss
> matthias
Gruß
Heimatloser
|
|
|
|
|
Hi,
versuche mal die 'surf' funktion. Wenn Du das bild als argument gibst, wird das sowohl fuer die flaechenhoehe als auch fuer die einfaerbung benutzt.
so in der art:
img=imread('XXX.bmp');
surf(double(img));
colormap(gray);
shading interp
gruss
matthias
|
|
|
|