How to select an object if you click it?

5 views (last 30 days)
Dear all,
I have an image the contains few objects as I show here. I want that if the user click inside an object using the mouse then this clicked object will remain and all other objects will be removed from the image.
Is there someway to do that?
Any help will be appreciated.
Meshoo

Accepted Answer

Image Analyst
Image Analyst on 15 Jan 2014
Yes. Follow these steps
  1. label the binary image with bwlabel
  2. call [column, row] = int32(ginput(1)) to let the user click somewhere
  3. get the label with labelNumber = labeledImage(row, column)
  4. extract the object with extractedObject = ismember(labeledImage, labelNumber)
  5. Make it binary again binaryImage = extractedObject > 0;
  6. display it with imshow(binaryImage, []);
  2 Comments
Meshooo
Meshooo on 15 Jan 2014
clear all
clc
%
I = imread('regular_shapes.tif');
%
BW = im2bw(I);
%
figure, imshow(BW);
hold on
[yCenter, xCenter] = ginput(1)
hold off
%
b = bwboundaries(BW);
%
[L, num_Obj] = bwlabel(BW, 4);
%
for k = 1:num_Obj;
Obj = L ==k;
bb = b{k};
X_obj = bb(:, 1);
Y_obj = bb(:, 2);
Selec{k} = inpolygon(xCenter,yCenter,X_obj,Y_obj);
end
Selec;
%
Selec = [Selec{:}];
[value,index] = max(Selec);
%
Obj = L ==index;
%
figure, imshow(Obj);
SC P
SC P on 26 Nov 2018
Error came while running script"
Brace indexing is not supported for
variables of this type.
Error in boundin_box_26_11 (line 75)
Selec = [Selec{:}];

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!