Code covered by the BSD License  

Highlights from
freehanddraw

4.77778

4.8 | 9 ratings Rate this file 59 Downloads (last 30 days) File Size: 2.2 KB File ID: #7347
image thumbnail

freehanddraw

by

 

01 Apr 2005 (Updated )

Draw smooth lines freehand on images or plots; return the handle and xy data of the line object.

| Watch this File

File Information
Description

[LINEOBJ,XS,YS] = FREEHANDDRAW(ax_handle,line_options)

Draw a smooth freehand line object on the current axis (default),or on the axis specified by handle in the first input argument. Left-click once to begin drawing, right-click to terminate, or double-click to close contour and terminate.
 

INPUT ARGUMENTS: First: axis handle (optional)
                 Additional: valid line property/value pairs

OUTPUT ARGUMENTS: 1) Handle to line object
                  2) x-data
                  3) y-data
(Note that output args 2 & 3 can also be extracted from the first output argument.)

Ex: [myobj,xs,ys] = freehanddraw(gca,'color','r','linewidth',3);
freehanddraw('linestyle','--');

Written by Brett Shoelson, PhD
shoelson@helix.nih.gov
3/29/05. Modified 10/05/06 to allow double-click contour closure.

MATLAB release MATLAB 7.0.1 (R14SP1)
Other requirements Tested successfully in R12.1 through R14.
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (11)
29 Jan 2014 Han  
08 Apr 2011 Brett Shoelson

AA,
IMFREEHAND didn't exist when I wrote FREEHANDDRAW. I'm happy to see that you're using the new Toolbox functionality!

06 Apr 2011 AA

how is the following different from what the file outputs?
figure; imshow('pout.tif');
h = imfreehand;data=get(h);
xydata=get(data.Children(4));
x=xydata.XData;
y=xydata.YData;
figure; plot(x,y,'-.')
These statements give the x, y data of an arbitrary freehand drawing on a figure.

20 Oct 2009 Image Analyst

I had been using this with R2008b and discovered that it's still "broken" in R2009b, but thanks to Paul Groot's helpful comment, it's now working again. However, now that the Image Processing Toolbox has imfreehand(), maybe you could use that instead.

11 Sep 2009 Paul Groot

Very nice work!
Noticed a small issue, which may only occur in recent (R2009a) releases: The DoubleBuffer property seems not always present in the oldvals structure at line 82. This could be solved by moving it to a separate line:

if isfield(oldvals, 'DoubleBuffer')
set(gcf,'doublebuffer',oldvals.DoubleBuffer);
end

31 May 2009 De

Very good work works very nicely !!!
Has anyone managed to merge the line object to the actual image one is drawing upon.... i.e change the value of the actual image pixels .. Thanks

03 Apr 2009 Arthur

useful tool!

26 Jul 2007 Ian Howat

Great, easy to use tool, thanks!

07 Mar 2007 Jared Goor

Works great. This saved me a ton of coding. I turned it into an eraser by making a mask of the points, dilating them, and applying the mask to the image. The only drawback with my application of this program is that the tool drops points if you move it too fast so you don't get perfectly continuous lines. Regardless, great program. Don't forget to input the axes you are working with, NOT the image. Easy mistake for NBs like me.

02 Oct 2005 Niv Peled

Very good!

13 Jul 2005 Felix Bollenbeck

very usefull!

Updates
06 Apr 2005

Mistakenly cited ability to draw in 3D. Function returns xy- data, NOT xyz data.

Contact us