1 pièce(s) jointe(s)
lecture graphique à partir d'une image .jpeg
Bonjour,
Je suis étudiant en ingénierie et j'ai un petit soucis dans la résolution de mon rapport matlab. Je vais essayer d'etre le plus explicit possible pour faciliter la mise en situation du problème. J'ai une image.jpg sur laquelle j'ai des valeurs dont j'ai besoin de recuperer. Mon image est traité par un code qui permet avec un curseur de choisir les point qui m'interessent. Seulement, premièrement les axes du graphique de l'image jpeg ne correspondent n'y en x et n'y en y avec ceux de matlab. Deuxièment, j'aimerais généré à partir de cette image jpeg un programme qui lise automatique les points interessant du graphique sans que se soit moi qui avec le curseur choissise les points. Pour le premier probléme, j'ai reussi à trouver une relation mathématique entre les axes x,y (matlab) et x,y (image).Je vous fournis la partie du code donnée permettant de convertir l'image .jpeg et de pouvoir ensuite utilisé le curseur dessus.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| % Script to plot image of measured temperature, and trace it using the mouse.
%
% Image from <a href="http://www.columbiassacrifice.com/techdocs/techreprts/AIAA_2001-0352.pdf" target="_blank">http://www.columbiassacrifice.com/te..._2001-0352.pdf</a>
% Now available at
% <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.1075&rep=rep1&type=pdf" target="_blank">http://citeseerx.ist.psu.edu/viewdoc...=rep1&type=pdf</a>
%
% D N Johnston 30/01/19
name = 'temp597';
img=imread([name '.jpg']);
figure (4);
image(img);
hold on
% You can adapt the following code to enter data interactively or automatically.
timedata = [];
tempdata = [];
while 1 % infinite loop
[x, y, button] = ginput(1); % get one point using mouse
if button ~= 1 % break if anything except the left mouse button is pressed
break
end
plot(x, y, 'og') % 'og' means plot a green circle.
% Add data point to vectors. Note that x and y are pixel coordinates.
% You need to locate the pixel coordinates of the axes, interactively
% or otherwise, and scale the values into time (s) and temperature (F, C or K).
timedata = [timedata, x];
tempdata = [tempdata, y];
end
hold off
% sort data and remove duplicate points.
[timedata, index] = unique(timedata);
tempdata = tempdata(index);
%save data to .mat file with same name as image file
save(name, 'timedata', 'tempdata') |
Voila, j'ai essayé d'être le plus clair possible, ce qui n'est pas chose facile avec ce genre de problème. J'espère que vous pourrez m'aider à débloquer mon problème.
Loïc :)