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

graustufen Grafik in farbigen Graph

 

Faumat
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 07.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2016, 15:33     Titel: graustufen Grafik in farbigen Graph
  Antworten mit Zitat      
Hallo, ich habe einen 3D Plot aus einer Punktewolke erstellt und würde nun gerne zur Übersicht eine grayscale Grafik in den Graphen plotten. Der Ansatz ist wie folgt:

Code:


figure;

f = pcshow(points); % Plotten des Graphs

xlabel('X-Layer'); % Achsenbeschriftung
ylabel('Y-Layer');
zlabel('Z-Layer');
title('Graph');

colormap(f,jet); % Colormap für Graphen setzen

hold on

h = imshow(Img); % Hineinladen des Bildes

colormap(h,gray); % Colormap für Bild setzen (damit Bild nicht eingefärbt wird)

hold off

 


Jedoch scheint dieser Ansatz nicht zu funktionieren. Ist es generell möglich ein grayscale Bild in einen Graphen (auf einem bestimmten Achsenwert (z.B. mittig der Z-Achse) zu plotten, so dass das Bild und auch der Graph in der Farbe nicht verändert wird?
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.03.2016, 19:58     Titel: Re: graustufen Grafik in farbigen Graph
  Antworten mit Zitat      
Hallo Faumat,

Wenn Du eine neue Colormap setzt, wirkt die sich auf alle angezeigten Objekte aus. Du könntest das Image also per ind2rgb in ein True-Color-Bild umwandeln. Dann verwendet es die ColorMap der Figure gar nicht.

Anmerkung für zukünftige Fragen: "scheint dieser Ansatz nicht zu funktionieren" erklärt nicht, welches Problem auftritt. Scheint es nur so, oder "funktioniert" es wirklich nicht? Und was funktioniert nicht?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Faumat
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 07.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2016, 11:57     Titel:
  Antworten mit Zitat      
Hi Jan, dakne für die Antwort

Das Ziel ist es in einen 3D-Graphen ein Bild oder eine Kurve auf einer beliebigen Z-Ebene darzustellen. Dazu habe ich bislang ein Meshgrid erstellt und versuche es darauf abzubilden. Ich weiß jedoch nicht, ob dies der beste Ansatz ist.


Code:



I = Image;

I = ind2rgb(I); % Umwandeln um keinen Einfluss auf die colormap zu haben.

I = flipud(I); % Um es richtig darzustellen


dimImg = size(I); % Groesse fuer Meshgrid rauslesen

[XD,YD,ZD] = meshgrid(0:dimImg(2),0:dimImg(1),100); % Ebene erzeugen auf die das Bild geplottet werden soll

figure;

pcshow(graph); % Darstellen des Graphen
colormap(jet)

hold on

% Bild auf Meshgrid-Ebene in Graphen plotten
surface(XD,YD,ZD,I,...
    'FaceColor','texturemap',...
    'EdgeColor','none',...
    'CDataMapping','direct')
colormap(gray(256)); % Damit Bild in Graustufen bleibt
view(-35,45)

hold off

 


Führe ich den Code aus, sehe ich eine schwarze Ebene inmitten eines schwarz/weiß Graphen. (http://fs5.directupload.net/images/160314/hrck2ril.jpg)
Konvertiere ich das Bild mit der Funktion in2rgb kommt die Fehlermeldung:

Code:
   
Error using ind2rgb (line 20)
Not enough input arguments.
 


Wie kann ich sonst noch ein Bild auf eine beliebige Ebene in einen Graphen plotten ohne die Colormap zu übernehmen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.03.2016, 11:09     Titel:
  Antworten mit Zitat      
Hallo Faumat,

Die fehlermeldung ist eindeutig: ind2rgb benötigt 2 Inputs. Immer, wenn ein Fehler mit einem Befehl auftaucht, ist ein Blick in die Hilfe-Texte das erste Weg, den man tun sollte:
Code:

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Faumat
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 07.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2016, 10:11     Titel:
  Antworten mit Zitat      
Danke für den Input, jetzt hat es mit dem Bild funktioniert. Jedoch lässt sich immer noch nicht ein beliebiger Plot auf einer beliebigen Z-Achse darstellen. Habe gefühlt schon alle Dokumentationen und Foreneinträge zu diesem Thema durch, jedoch scheint niemand ein ähnliches Problem zu haben.

wenn ich mit dem
Code:
Befehl etwas plotten will, stellt es mir den plot immer auf der Z=0-Achse dar.

Ist es generell möglich dem Plot-Befehl eine Z-Achse zuzuweisen? Oder verschiedene mit dem Plot-Befehl darstellbare Funktionen auf einer beliebigen Z-Ebene zu plotten?

Was ich versuche auf einer anderen Z-Ebene darzustellen ist folgendes:

Code:

% Plot von einer SURFPoints class

points = detectSURFFeatures(image);
plot(points.selectStrongest(3)); % Plot points

% oder einen cell array

hold on
 for i = 1:length(image)
     imgBoundary = modifiedImg{i};
     plot(imgBoundary(:,2), imgBoundary(:,1), 'w', 'LineWidth', 2)
                       
end
hold off;
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.03.2016, 11:38     Titel:
  Antworten mit Zitat      
Hallo Faumat,

Ich verstehe offenbar das Problem nocht nicht.

Zitat:
wenn ich mit dem
Code:
Befehl etwas plotten will, stellt es mir den plot immer auf der Z=0-Achse dar.

hold hat mit der Darstellung der Z-Achse überhaupt nichts zu tun. Dieser Befehl beeinflusst nur, ob das Zeichnen neue Objekte vorherige automatisch löscht.

Zitat:
Ist es generell möglich dem Plot-Befehl eine Z-Achse zuzuweisen?

Ich verstehe nicht, was "zuweisen einer Z-Achse" bedeutet.

Du kannst natürlich beliebige 3D-Plots erzeugen und den line , surf oder patch Objekten auch einen Z-Wert zuweisen. In der Doku findest Du einiges zu 3D Grafiken.

Zitat:
Oder verschiedene mit dem Plot-Befehl darstellbare Funktionen auf einer beliebigen Z-Ebene zu plotten?

Wie die Dokumentation eindeutig erklärt, erzeugt plot 2D-Grafiken. Siehe doc plot : "2-D line plot"
Du brauchst vielleicht plot3 oder line .

Gruß, Jan
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.