retrieve circle position from equation or data array
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello!
I would like to select a circular region from an image , thus i need to use
h= imellipse(hparent, position) and then create a mask
my problem here is that i don't know how to define the image position from the equation or the array containing the points of the circle.
any help would be really appreciated,
Many thanks :)
0 Kommentare
Antworten (5)
Sean de Wolski
am 10 Mai 2012
imshow(h.createMask)
If you look at the methods() of an imellipse object, it's one of the freebies!
methods(h)
0 Kommentare
Image Analyst
am 10 Mai 2012
See my demo for interactive use of imellipse:
% Demo to write an ellipse into the overlay of an image,
% and then to burn those overlays into the image.
%----- Initializing steps -----
% Clean up
clc;
clear all;
close all;
fontSize = 14;
workspace; % Display the workspace panel.
% Change the current folder to the folder of this m-file.
if(~isdeployed)
cd(fileparts(which(mfilename)));
end
hasIPT = license('test', 'image_toolbox');
if ~hasIPT
% User does not have the toolbox installed.
message = sprintf('Sorry, but you do not seem to have the Image Processing Toolbox.\nDo you want to try to continue anyway?');
reply = questdlg(message, 'Toolbox missing', 'Yes', 'No', 'Yes');
if strcmpi(reply, 'No')
% User said No, so exit.
return;
end
end
% Display images to prepare for the demo.
monochromeImage = imread('pout.tif');
subplot(2, 3, 1);
imshow(monochromeImage);
title('Original Image', 'FontSize', fontSize);
subplot(2, 3, 2);
imshow(monochromeImage);
title('Draw ellipse in overlay here', 'FontSize', fontSize);
set(gcf, 'units','normalized','outerposition',[0 0 1 1]); % Maximize figure.
set(gcf,'name','Image Analysis Demo of imellipse() function','numbertitle','off')
%----- Burn ellipse into image -----
% Create elliptical mask, h, as an ROI object over the second image.
subplot(2, 3, 2);
userPrompt = sprintf(' Click and drag out an ellipse.\nDouble click inside of it to accept it.');
uiwait(msgbox(userPrompt));
hEllipse = imellipse(gca); % Second argument defines ellipse shape and position.
% Wait for user to finalize the size and location.
xyCoordinates = wait(hEllipse)
% Create a binary image ("mask") from the ROI object.
binaryImage = hEllipse.createMask();
% Display the ellipse mask.
subplot(2, 3, 3);
imshow(binaryImage);
title('Binary mask of the ellipse', 'FontSize', fontSize);
% Burn white ellipse into image by setting it to 255 wherever the mask is true.
outputImage = monochromeImage; % Re-initialize it.
outputImage(binaryImage) = 255;
% Display the image with the "burned in" ellipse.
subplot(2, 3, 4);
imshow(outputImage);
title('New image with ellipse burned into image', 'FontSize', fontSize);
% Burn black ellipse into image by setting it to 0 wherever the mask is true.
outputImage = monochromeImage; % Re-initialize it.
outputImage(binaryImage) = 0;
% Display the image with the "burned in" ellipse.
subplot(2, 3, 5);
imshow(outputImage);
title('New image with ellipse burned into image', 'FontSize', fontSize);
% Erase image outside of ellipse into image by setting it to 0 wherever the mask is true.
outputImage = monochromeImage; % Re-initialize it.
outputImage(~binaryImage) = 0;
% Display the image with the "burned in" ellipse.
subplot(2, 3, 6);
imshow(outputImage);
title('Image erased outside of ellipse', 'FontSize', fontSize);
1 Kommentar
Image Analyst
am 10 Mai 2012
Oh, I saw your comment after I created this demo for you and posted it, and now know you don't really need imellipse. Oh well, maybe it will help someone else.
Ines laz
am 10 Mai 2012
2 Kommentare
Sean de Wolski
am 10 Mai 2012
I'm not clear, you want to position the ellipse somewhere? If so where?
Ines laz
am 10 Mai 2012
3 Kommentare
Sean de Wolski
am 10 Mai 2012
Oh! Then don't use imellipse. Use the formula for a circle.
http://matlab.wikia.com/wiki/FAQ#How_do_I_create_a_circle.3F
Ines laz
am 10 Mai 2012
1 Kommentar
Sean de Wolski
am 10 Mai 2012
You're trying to hard. The binary circle doesn't conatin the pixel values, you're correct. But it can be used to tell you which pixels you care about (What my three lines of code to calculate mean were doing)
Siehe auch
Kategorien
Mehr zu Geometric Transformation and Image Registration finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!