# get the actual position correspond to imfreehand

2 visualizaciones (últimos 30 días)
chess el 17 de Ag. de 2014
Editada: chess el 22 de Ag. de 2014
Hi I have a question. I have a grayscale image, I chose a region using imfreehand command and I have its position. I can convert to the mask but that is a binary image how can I extract the exact image that is correspond to region of imfreehand from the grayscale image. Meaning that imcrop returns the cropped version of grayscale image I want to do the same thing here.
imshow(image1)
h=imfreehand;
pos=getPosition(h)
Then I like to have something like image(pos) to extract the portion from grayscale image. However this is of course is a error because the subscript is a fraction.
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Ben11 el 17 de Ag. de 2014
After you get the position, you can create a mask in which value inside the ROi are equal to 1 and those outside are equal to 0. Then you assign those 0-values to the original image. Please try the following code and see what happens, is this what you want to achieve?
clear
clc
figure;
hold on
subplot(1,2,1)
imshow(A)
hRoi = imfreehand(gca);
Position = getPosition(hRoi);
A(BW == 0) = 0;
subplot(1,2,2)
imshow(A)
hold off
##### 2 comentariosMostrar NingunoOcultar Ninguno
chess el 17 de Ag. de 2014
That is good but how can I only get the portion I like meaning that zero part should be removed. How to resize the image to only have what I want like imcrop.
Ben11 el 17 de Ag. de 2014
I think the best you can do is crop a rectangular image with the boundaries of the ROI touching the sides, is it what you mean? If so you can you imcrop with the coordinates of the enclosing black rectangle? For example, "Position" in my example above outputs a 2-column array, in which the first corresponds to the x and the 2nd corresponds to the y-coordinates. You can fetch the maximum and minimum for each coordinate:
xmin = min(Position(:,1))
xmax = max(Position(:,1))
ymin = min(Position(:,2))
ymax = max(Position(:,2))
and then use imcrop as usual.

Iniciar sesión para comentar.

### Más respuestas (1)

Image Analyst el 20 de Ag. de 2014
See my freehand demos attached.
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

### Categorías

Más información sobre Build Interactive Tools en Help Center y File Exchange.

### Community Treasure Hunt

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

Start Hunting!

Translated by