Clear Filters
Clear Filters

set elliptical ROI to zero in an image

1 view (last 30 days)
I'm using an algorithm to detect ellipses in an image, it returns the center major minor axis and the orientation, but I would like to delete the detected ones to avoid double detection. I believe the way to do it is to create a mask with an elliptical ROI set it to zero and then subtract it from the original image... anyone knows what function to use? tired to use imellipse but I couldn't figure out a way to get it to work with the detection algorithm.

Accepted Answer

Image Analyst
Image Analyst on 16 Aug 2018
Edited: Image Analyst on 16 Aug 2018
To erase your image where you have an elliptical mask, do
grayImage(mask) = 0;
See attached demo.
If you need more help, you'll have to post your existing code.
  15 Comments
Mohamed Amine Henchir
Mohamed Amine Henchir on 27 Aug 2018
here is what I have, for now, I'm using the coordinates of a random ellipse and using poly2mask to create the mask and then subtracting it from the original image
if true
A = imread('one.jpg');
figure;
imshow(A);
hold on;
% Parameterize the equation.
t = linspace(0, 360,1000);
phaseShift = 0;
xAmplitude = 2;
yAmplitude = 1;
x = xAmplitude * sind(t + phaseShift);
y = yAmplitude * cosd(t);
mask = poly2mask(x, y, 256, 256);
A(mask)= 0;
imshow(A);
end
but nothing is happening!
Image Analyst
Image Analyst on 27 Aug 2018
Your x and y only went from 0-1 - less than a pixel! And your ellipse didn't have a center specified. Try this:
grayImage = imread('cameraman.tif');
subplot(2, 2, 1);
imshow(grayImage);
[rows, columns, numberOfColorChannels] = size(grayImage);
hold on;
% Parameterize the equation.
t = linspace(0, 360, 1000);
phaseShift = 0;
xAmplitude = columns/3;
yAmplitude = rows/5;
xCenter = columns/2;
yCenter = rows/2;
x = xAmplitude * sind(t + phaseShift) + xCenter;
y = yAmplitude * cosd(t) + yCenter;
mask = poly2mask(x, y, rows, columns);
subplot(2, 2, 2);
imshow(mask);
grayImage(mask)= 0;
subplot(2, 2, 3);
imshow(grayImage);

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!