PostProcess: plot interaction and Images
After compute the FEM solution values we will show how to interact with a plot in Matlab
Contents
Select points in a plot window
Matlab allows you to use the mouse and select a point. It gives you the coordinates of this point. The involved function is ginput
One element example:
We plot a gray triangle and choose a point using the mouse. The result is saved as an png image that we will load later.
nodes=[1,1; %define the nodes of a triangle 3,2; 2,4]; elem=[1,2,3]; %define the triangle it self as an element X=nodes(:,1); Y=nodes(:,2); values=[0;128;255]; %can be temp., stress, etc. fill(X,Y,values); colormap('gray') %one of the standar color maps for FEM colorbar %it is optional, shows the bar with the color scale % % select a point on the plot window using the mouse % % [px,py]=ginput(1); %we choose only one point p=[px,py]; %consider these coordinates as a point hold on; plot(p(1,1),p(1,2),'ko'); %plot the point using black o hold off;

show the point on the command window
fprintf(1,'Selected point=(%f, %f) \n',px,py); % fileOut=1 is the console % print current plot in a file as a png image (you can use other image formats) % (see doc print for more details) print('grayTriangle','-dpng'); %saves current plot as a png image
Selected point=(2.237395, 2.832944)

Load one image to Matlab
Matlab allow us to load an image in several different formats. The main functions are imread and imshow
Let's start with one exemple
ourImage=imread('lenaRGB.png'); [m,n,depth]=size(ourImage); %notice that it is a 225x225x3 matrix of uint8 (unsigned int of 8 bytes) imshow(ourImage); %show the image in a window [m,n,depth]
ans = 225 225 3

We can ask for the colors of one pixel
%RGB values for pixel 100, 60 r=ourImage(100,60,1); g=ourImage(100,60,2); b=ourImage(100,60,3); [r,g,b] % or you can use: ourImage(100,60,:)
ans = 1×3 uint8 row vector 126 53 44
Interpolation color
Let's take now our gray triangle image. We will check the color of a point. In the case of the selected point the value must be the interpolated value of the vertices in this point.
ourImage=imread('grayTriangle.png'); imshow(ourImage); % % Now select the Data Cursor icone on the plot window (see the figure) %

Use the cursor to get information about the point
%hold off; % % Finally move the cursor to the circle and get the color data %
%imagValue=162; %value for Gray color in the image
Exercise:
Consider the selected point p (it depends on your previous selection), and the values for the vertices we have used, colorVal=[0;128;255]
Compute the barycentric coordinates and interpolate the color value in p. You have to obtain the same color value of the pixel selected in the previous step.
(c)Numerical Factory 2018