set elliptical ROI to zero in an image

1 次查看(过去 30 天)
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.

采纳的回答

Image Analyst
Image Analyst 2018-8-16
编辑:Image Analyst 2018-8-16
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 个评论
Mohamed Amine Henchir
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 2018-8-27
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);

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Get Started with Image Processing Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by