set elliptical ROI to zero in an image
3 ビュー (過去 30 日間)
古いコメントを表示
Mohamed Amine Henchir
2018 年 8 月 16 日
コメント済み: Image Analyst
2018 年 8 月 27 日
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.
0 件のコメント
採用された回答
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 件のコメント
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);
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/195401/image.png)
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!