Hallo zusammen,
ich weiss, dass das Thema schon geposted wurde, leider muss ich dennoch fragen.
Habe ein kleines Programm welches Graphiken einliest, leider schaffe ich es nicht die Werte umzuskalieren.
Hier mein Code:
Code:
figure;
image(g);
axis off;
%--------------------------------------------------
% Show the important part of the picture only
%--------------------------------------------------
fprintf('%s\n','Pick the important part of the picture.') fprintf('%s\n','Press mouse button in upper left corner') fprintf('%s\n','followed by lower right corner.') [ax,ay] = ginput(2);
axis([ax(1) ax(2) ay(1) ay(2)]);
%--------------------------------------------------
% Transform the y-axis of the coordinate system into forces.
%--------------------------------------------------
for k = 1:2 fprintf('\n%s %d\n','Pick y value',k) [a(k) yt(k)] = ginput(1);
fprintf('\n%s\n','Input corresponding y-value')
yval(k) = input('');
end
%--------------------------------------------------
% Transform the x-axis of the coordinate system into pp-lift
%--------------------------------------------------
for k = 1:2 fprintf('\n%s %d\n','Pick x value',k) [xt(k) b(k)] = ginput(1);
fprintf('\n%s\n','Input corresponding x-value')
xval(k) = input('');
end
%--------------------------------------------------
% Read in points from the graph
%--------------------------------------------------
fprintf('\n%s\n','Pick points on the graph, end by pressing enter.') [dx,dy] = ginput;
habe die Frage zu kompliziert gestellt, glaube ich.
Habe einen graphischen Verlauf als .jpg oder .bmp vorliegen. Möchte nun die Punkte über ginput() einlesen und die Koordinaten möchte ich abändern und denen im Bild anpassen. Leider bekomme ich die Koodinaten des figures, also Werte die mit dem Bild logischerweise nichts zutun haben.
Wie kann ich die Skalierung anpassen?
habe es über:
Also ich habe es immer noch nicht verstanden (falls das was helfen sollte). Vielleicht bringst du einfach mal ein Beispiel mit Zufallszahlen und nur dem Code, der relevant ist.
Mein Ansatz ist der, dass ich über ginput() mir Punkte erzeuge, was soweit auch klappt.
Diese Punkte würde ich gerne auf die Koordinaten transformieren, wie sie auch in der eingelsenen Datei sind.
axis([1 12 0 160])
wobei x(1) = 1: der erste Tage ist und x(2) = 12 der 12te Tag
y(1) = 0 0/MWh und y(2) = 160 /MWh
Denn die Punkte die mir ginput() zurück gibt, sind natürlich ganz anders, vermute die x,y Koordinaten des figures!?!
Würde gerne die y-Achse und x-Achse so umskalieren, dass sie mit dem des Bildes übereinstimmt!
auch ich kann im Moment nicht erkennen, wo Dein Problem ist - aber vielleicht hat das auch nichts zu sagen. Ginput liefert Dir Bildkoordinaten zurück, die auch mit dem Bild übereinstimmen. Mache mal folgendes Beispiel:
Reihenfolge:
Zuerst obere linke Ecke - dann untere linke Ecke;
Untere rechte Ecke und zuletzt obere rechte Ecke (gegen den Uhrzeiger)
Wenn Du einen schönen, sauberen Ausschnitt haben möchtest (ist freihändig etwas schwierig) dann kannst Du Dir x und y ausgeben lassen und ggf. korrigieren.
Ich möchte definieren, dass die x-Achse von 0-160 geht und die y-Achse von 1 -12. So würden neue koordinaten für die Punkte entstehen, die ich mir mit ginput() einlese.
Hätte zu Deiner Lösung noch eine Frage.
Das umgehen der Image Processing Toolbox ist mir für imshow() mit image() möglich.
Mir erschließt sich nicht ganz wofür ich poly2mask() brauche.
Wie gesagt, möchte eine Image in eine x-Achse und y-Achse legen, wobei ich die Skalierung der Achsen an einem Punkt über input() eingeben muss, oder? Dann möchte ich aus diesem defnierten Koordinatenkreuz, mit dem Graph, dass Bild abtasten mit ginput() um so in den von definierten Achsen Punkte zu erhalten, sodass ich aus dem .jpg digitale Werte bekomme zum weiterverarbeiten.
für die, die es interessiert da ich schon sehr viel von diesem Forum lernen konnte!Mein Problem war, dass ich dem einzulesenden Graphen seine Skallierung zuteilen möchte.
ginput() liefert Koordinaten des figures => lineare transformation x0 -> x1 und y0 -> y1
habe es im groben mit polyfit und polyval umgesetzt.
Meine Lösung sieht nun so aus:
Code:
typ = 'PNG';
bild = sprintf('%s%s',pathname,filename);
g = imread(bild,typ);
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
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.