Tuesday, August 3, 2010

REGION GROWING in IDL

pro REGION_GROWING

; initialize the device
DEVICE, DECOMPOSED = 0, RETAIN = 2
LOADCT, 0
;read the image

file = FILEPATH('md1107g8a.jpg',SUBDIRECTORY = ['examples','data'])
READ_JPEG, file, f,/GRAYSCALE
sz = SIZE(f,/DIMENSIONS)

;RESIZE THE IMAGE
f = REBIN(BYTSCL(f),sz[0]*2,sz[1]*2)
sz=2*sz

WINDOW,0,XSIZE = SZ[0], YSIZE=SZ[1],TITLE = 'SELECT A POINT ON THE IMAGE'
TVSCL, F

;SELECT A POINT  FROM THE IMAGE
CURSOR, xi,yi, /DEVICE
x = LINDGEN(10*10) MOD 10 + xi
y = LINDGEN(10*10) / 10 + yi
roiPixels = x + y * sz[0]

WDELETE, 0
TOPCLR = !D.TABLE_SIZE - 1
TVLCT, 255,0,0, TOPCLR
regionPts = BYTSCL(F, TOP = (topClr - 1))
regionPts[roiPixels] = topClr

WINDOW, 0, XSIZE = sz[0], YSIZE = sz[1], TITLE = 'ORIGINAL REGION'
TV, regionPts

;REGION GROWING FUNCTION

ROIPIXELS = REGION_GROW(F,roiPixels, THRESHOLD = [185,235])

F1 = BYTSCL(F, TOP = (TOPCLR-1))
F1[ROIPIXELS] = TOPCLR

WINDOW,2, XSIZE=SZ[0],YSIZE=SZ[1],TITLE = 'THRESHOLD GROWN REGION'
TV, F1

end

No comments: