set elliptical ROI to zero in an image

6 visualizaciones (últimos 30 días)
Mohamed Amine Henchir
Mohamed Amine Henchir el 16 de Ag. de 2018
Comentada: Image Analyst el 27 de Ag. de 2018
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.

Respuesta aceptada

Image Analyst
Image Analyst el 16 de Ag. de 2018
Editada: Image Analyst el 16 de Ag. de 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 comentarios
Mohamed Amine Henchir
Mohamed Amine Henchir el 27 de Ag. de 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 el 27 de Ag. de 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);

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by