| Re: Masking using user defined ROIs [message #32704 is a reply to message #32682] |
Tue, 29 October 2002 07:53  |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
John Dickson (j.dickson@rfc.ucl.ac.uk) writes:
> I have a 2D medical image which has several cold lesions. I want to
> draw around each of these cold lesions and mask everything inside the
> ROIs to be zero.
>
> As a self-taught IDL bod with limited experience, any example code
> which will help me achieve my aim would be greatly appreciated.
There are any number of ways to do this. Here is
one way, using XROI to create your ROIs. You can
draw your ROIs in several ways with this tool (for
example, select the pencil tool for drawing freehand
ROIs). When you are finished drawing, click the Quit
button. The image mask will be calculated, and the
masked image will be returned to you.
IDL> TV, ExampleROIMask(image)
Cheers,
David
--
David W. Fanning, Ph.D.
Fanning Software Consulting, Inc.
Phone: 970-221-0438, E-mail: david@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
;*********************************************************** *******
FUNCTION ExampleROIMask, image
IF N_Elements(image) EQ 0 THEN BEGIN
; Get an image, if needed.
filename = Filepath(Subdir=['examples','data'], 'mr_knee.dcm')
image = Read_DICOM(filename)
ENDIF
; Draw ROI's on image. (Use the freehand PENCIL tool, for example.)
XROI, image, Regions_Out=rois, /Block
; Create an image mask from the ROIs you just created.
dim = Size(image, /Dimensions)
mask = BytArr(dim[0], dim[1]) + 1B
; Cycle through the ROIs.
FOR j=0, N_Elements(rois)-1 DO BEGIN
thisROI = rois[j]
IF Obj_Valid(thisROI) THEN BEGIN
thisROI -> GetProperty, Data=polygon
indices = PolyFillV(polygon[0,*], polygon[1,*], dim[0], dim[1])
IF indices[0] NE -1 THEN mask[indices] = 0
Obj_Destroy, thisROI
ENDIF
ENDFOR
; Apply the mask to the image and return it.
RETURN, image * mask
END
;*********************************************************** *******
|
|
|
|