Image Saving to Variable in Workspace (NOT imwrite)

12 visualizaciones (últimos 30 días)
Daniel Posada
Daniel Posada el 13 de Feb. de 2020
Comentada: Daniel Posada el 14 de Feb. de 2020
Hi everyone,
From a computational time point of view, I'm trying to save an image into the workspace instead of creating a figure and grabbing the image. I'm performing a very important task in a very short amount of time 10 sec, and have to perform this task repetitively.
Therefore saving the image using imwrite() is not acceptable due to the computational requirement of having to save the image in memory, and retrieving it. Attached is a code and an image of the figure I am creating as well. Instead of using imshow() in a figure, how can I save the image directly (LLLL).
CODE BEING USED:
figure('Name','Posible Brightness spots for quad-tree analysis');
imshow(sp_possible_quadtree, []);
axis image;
title('Potential blobs for croppping and performing quadtree', 'FontSize', captionFontSize);
LLLL = getimage;
OUTPUT OF THE CODE in a Figure:
then this is the image that is grabbed from the figure and saved.
------------------------------------------------------------------------------------------------------------
Instead of the code above, an ideal solution would be something like this or anything close that doesn't requiere to create an external window (figure handler) to grab it from there.
LLLL = ideal_unknown_function(sp_possible_quadtree, []);
Thanks for your help in advance.
  3 comentarios
Stephen23
Stephen23 el 14 de Feb. de 2020
imshow shows an array of data in some axes whereas getimage returns an array of data from some axes, so what difference/s do you expect between sp_possible_quadtree and LLLL ?
Daniel Posada
Daniel Posada el 14 de Feb. de 2020
@Subhadeep Koley That is correct I do have sp_possible_quadtree in the workspace, the problem is that by itself it won't show up the features, unless I add the input []*. But what I want to do is to save it without having to go through the imshow process. I don't want to display it, I just want to have it saved in a variable in the workspace.
*(imshow uses [min(I(:)) max(I(:))] as the display range, if [] option is selected)
@Stephen Cobeldick What I want to do is save that image directly without having to use imshow in a figure in order to get the image but still be able to have theb blobs on it as well. If I plot only sp_possible_quadtree the image will be completely black, because it's not showing the features, whereas the LLLL does show them (attached image), but I have to go throught the whole figure process and imshow in order to obtain it. In this case sp_possible_quadtree is a double. where the contents are either 0 for Black, or an integer 1, 2, 3, 4, ... n to differentiate the different blobs. It comes from a bwlabel in order to separate those zones.
sp_possible_quadtree = bwlabel(keeperBlobsImage, 8);

Iniciar sesión para comentar.

Respuesta aceptada

Subhadeep Koley
Subhadeep Koley el 14 de Feb. de 2020
Use rescale, you can also specify the lower and upper range of scaling.
LLLL = rescale(sp_possible_quadtree);
  2 comentarios
Walter Roberson
Walter Roberson el 14 de Feb. de 2020
In older MATLAB releases use mat2gray (which is misleadingly named)
Daniel Posada
Daniel Posada el 14 de Feb. de 2020
tested both methods and they worked perfectly, thank you very much to both of you.

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 14 de Feb. de 2020
Editada: Stephen23 el 14 de Feb. de 2020
"In this case sp_possible_quadtree is a double. where the contents are either 0 for Black, or an integer 1, 2, 3, 4, ... n"
LLLL = sp_possible_quadtree ./ n
Images stored as floating point are assumed to be scaled from 0 to 1, so you just need to rescale your image.

Productos


Versión

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by