pro Mopening
; Handle TrueColor displays:
DEVICE, DECOMPOSED=0
;Read the image
path=FILEPATH('pollens.jpg',SUBDIR=['examples','demo','demodata'])
READ_JPEG, path, img
; Create window:
WINDOW, 0, XSIZE=700, YSIZE=540
;Show original image
XYOUTS, 180, 525, 'Original Image', ALIGNMENT=.5, /DEVICE
TV, img, 20, 280
;Apply the threshold
thresh = img GE 140B
;Load a simple color table
TEK_COLOR
;Display edges
XYOUTS, 520, 525, 'Edges', ALIGNMENT=.5, /DEVICE
TV, thresh, 360, 280
;Apply opening operator
open = MORPH_OPEN(thresh, REPLICATE(1,3,3))
;Show the result
XYOUTS, 180, 265, 'Opening Operator', ALIGNMENT=.5, /DEVICE
TV, open, 20, 20
;Show pixels that have been removed in white
XYOUTS, 520, 265, 'Removed Pixels in White', ALIGNMENT=.5, /DEVICE
TV, open + thresh, 360, 20
end
Showing posts with label IDL. Show all posts
Showing posts with label IDL. Show all posts
Tuesday, August 3, 2010
Hit or Miss operation in IDL
pro Mhotmiss
;Handle TrueColor displays:
DEVICE, DECOMPOSED=0
;Read the image
path=FILEPATH('pollens.jpg',SUBDIR=['examples','demo','demodata'])
READ_JPEG, path, img
WINDOW, 0, XSIZE=700, YSIZE=540
; Display the original image
XYOUTS, 180, 525, 'Original Image', ALIGNMENT=.5, /DEVICE
TV, img, 20, 280
rh = 2 ;Radius of hit disc
rm = 4 ;Radius of miss disc
;Create a binary disc of given radius.
hit = SHIFT(DIST(2*rh+1), rh, rh) LE rh
;Complement of disc for miss
miss = SHIFT(DIST(2*rm+1), rm, rm) GT rm
;Load discrete color table
TEK_COLOR
;Apply the threshold
thresh = img GE 140B
; Display the thresholded image
XYOUTS, 520, 525, 'Thresholded Image', ALIGNMENT=.5, /DEVICE
TV, thresh, 360, 280
;Compute matches
matches = MORPH_HITORMISS(thresh, hit, miss)
;Expand matches to size of hit disc
matches = DILATE(matches, hit)
;Show matches.
XYOUTS, 180, 265, 'Matches', ALIGNMENT=.5, /DEVICE
TV, matches, 20, 20
;Superimpose, showing hit regions in blue.
;(Blue = color index 4 for tek_color.)
XYOUTS, 520, 265, 'Superimposed, hit regions in blue',$
ALIGNMENT=.5, /DEVICE
TV, thresh + 3*matches, 360, 20
end
;Handle TrueColor displays:
DEVICE, DECOMPOSED=0
;Read the image
path=FILEPATH('pollens.jpg',SUBDIR=['examples','demo','demodata'])
READ_JPEG, path, img
WINDOW, 0, XSIZE=700, YSIZE=540
; Display the original image
XYOUTS, 180, 525, 'Original Image', ALIGNMENT=.5, /DEVICE
TV, img, 20, 280
rh = 2 ;Radius of hit disc
rm = 4 ;Radius of miss disc
;Create a binary disc of given radius.
hit = SHIFT(DIST(2*rh+1), rh, rh) LE rh
;Complement of disc for miss
miss = SHIFT(DIST(2*rm+1), rm, rm) GT rm
;Load discrete color table
TEK_COLOR
;Apply the threshold
thresh = img GE 140B
; Display the thresholded image
XYOUTS, 520, 525, 'Thresholded Image', ALIGNMENT=.5, /DEVICE
TV, thresh, 360, 280
;Compute matches
matches = MORPH_HITORMISS(thresh, hit, miss)
;Expand matches to size of hit disc
matches = DILATE(matches, hit)
;Show matches.
XYOUTS, 180, 265, 'Matches', ALIGNMENT=.5, /DEVICE
TV, matches, 20, 20
;Superimpose, showing hit regions in blue.
;(Blue = color index 4 for tek_color.)
XYOUTS, 520, 265, 'Superimposed, hit regions in blue',$
ALIGNMENT=.5, /DEVICE
TV, thresh + 3*matches, 360, 20
end
Image Resizing in IDL
Pro Image_Resizing
device,decompose=0
loadct,0
READ_JPEG,'C:\ITT\IDL64\examples\data\md1107g8a.JPG',im
sz=SIZE(im,/DIMENSIONS)
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='IMAGE'
TV,im
sz1=sz*1.5 ; IMAGE SIZE
PRINT,SZ1
im1 = CONGRID(im,sz1[0],sz1[1],/interp) ; RESIZE THE IMAGE
WINDOW,1,XSIZE=sz1[0],YSIZE=sz1[1],TITLE='RESIZED_IMAGE'
TV,im1
end
device,decompose=0
loadct,0
READ_JPEG,'C:\ITT\IDL64\examples\data\md1107g8a.JPG',im
sz=SIZE(im,/DIMENSIONS)
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='IMAGE'
TV,im
sz1=sz*1.5 ; IMAGE SIZE
PRINT,SZ1
im1 = CONGRID(im,sz1[0],sz1[1],/interp) ; RESIZE THE IMAGE
WINDOW,1,XSIZE=sz1[0],YSIZE=sz1[1],TITLE='RESIZED_IMAGE'
TV,im1
end
RGB to NTSC Color Conversion in IDL
PRO rgbcolorconversion
file = FILEPATH('rose.jpg',SUBDIRECTORY = ['examples', 'data'])
queryStatus = QUERY_IMAGE(file, imageInfo)
PRINT, 'Query Status = ', queryStatus
HELP, imageInfo, /STRUCTURE
imageSize = imageInfo.dimensions
READ_JPEG,file,image
imageDims = SIZE(image, /DIMENSIONS)
; rgb to gray conversion
gimage=fltarr(imagedims[0],imagedims[1],imagedims[2])
CM=[[0.299, 0.587, 0.144],[0.596, -0.274, -0.322],[0.211, -0.523,0.312]]
for i=0,imagedims[1]-1 do begin
for j=0,imagedims[2]-1 do begin
V=image[*,i,j]
gimage[*,i,j]=CM * TRANSPOSE(V)
endfor
endfor
interleaving = WHERE((imageDims NE imageSize[0]) AND $
(imageDims NE imageSize[1])) + 1
PRINT, 'Type of Interleaving = ', interleaving
DEVICE, DECOMPOSED = 1
WINDOW, 0, XSIZE = imageSize[0], YSIZE = imageSize[1], $
TITLE = 'An RGB Image'
TV, image, TRUE = interleaving[0]
WINDOW, 1, XSIZE = imageSize[0], YSIZE = imageSize[1], $
TITLE = 'An NTSC Image'
TV, gimage, TRUE = interleaving[0]
end
file = FILEPATH('rose.jpg',SUBDIRECTORY = ['examples', 'data'])
queryStatus = QUERY_IMAGE(file, imageInfo)
PRINT, 'Query Status = ', queryStatus
HELP, imageInfo, /STRUCTURE
imageSize = imageInfo.dimensions
READ_JPEG,file,image
imageDims = SIZE(image, /DIMENSIONS)
; rgb to gray conversion
gimage=fltarr(imagedims[0],imagedims[1],imagedims[2])
CM=[[0.299, 0.587, 0.144],[0.596, -0.274, -0.322],[0.211, -0.523,0.312]]
for i=0,imagedims[1]-1 do begin
for j=0,imagedims[2]-1 do begin
V=image[*,i,j]
gimage[*,i,j]=CM * TRANSPOSE(V)
endfor
endfor
interleaving = WHERE((imageDims NE imageSize[0]) AND $
(imageDims NE imageSize[1])) + 1
PRINT, 'Type of Interleaving = ', interleaving
DEVICE, DECOMPOSED = 1
WINDOW, 0, XSIZE = imageSize[0], YSIZE = imageSize[1], $
TITLE = 'An RGB Image'
TV, image, TRUE = interleaving[0]
WINDOW, 1, XSIZE = imageSize[0], YSIZE = imageSize[1], $
TITLE = 'An NTSC Image'
TV, gimage, TRUE = interleaving[0]
end
Wavelet Transformation in IDL
PRO WAVELETTRANSFORM
READ_GIF,'d:\Image\bird.gif',f
sz=size(f,/dimensions)
DEVICE,DECOMPOSED = 0
LOADCT, 0
WINDOW,0,XSIZE=SZ[0],YSIZE=SZ[1],TITLE='Original Image'
tvscl, congrid(f,sz[0],sz[1])
f1 = wtn(f,20)
f2=abs(f1)^2
f2 = alog10(f2)
WINDOW,1,XSIZE=SZ[0],YSIZE=SZ[1],TITLE='Transformed Image'
tvscl, congrid(f2,sz[0],sz[1])
f3 = wtn(f1,20,/inverse)
WINDOW,2,XSIZE=SZ[0],YSIZE=SZ[1],TITLE='inverse Transformed Image'
tvscl, congrid(f3,sz[0],sz[1])
END
READ_GIF,'d:\Image\bird.gif',f
sz=size(f,/dimensions)
DEVICE,DECOMPOSED = 0
LOADCT, 0
WINDOW,0,XSIZE=SZ[0],YSIZE=SZ[1],TITLE='Original Image'
tvscl, congrid(f,sz[0],sz[1])
f1 = wtn(f,20)
f2=abs(f1)^2
f2 = alog10(f2)
WINDOW,1,XSIZE=SZ[0],YSIZE=SZ[1],TITLE='Transformed Image'
tvscl, congrid(f2,sz[0],sz[1])
f3 = wtn(f1,20,/inverse)
WINDOW,2,XSIZE=SZ[0],YSIZE=SZ[1],TITLE='inverse Transformed Image'
tvscl, congrid(f3,sz[0],sz[1])
END
POWER SPECTRUM of IMAGES in IDL
PRO POWER_SPECTRUM_EX
im = [64,64]
file = FILEPATH('abnorm.dat',SUBDIRECTORY =['examples','data'])
f = READ_BINARY(file,DATA_DIM=im)
sz = 2*im
DEVICE, DECOMPOSED = 0
loadct, 0
f1 = FFT(f)
center = im/2 + 1
fs = SHIFT(F1,center)
ps = ABS(fs)^2
sps = ALOG10(ps)
WINDOW,0,XSIZE = SZ[0],YSIZE = SZ[1],TITLE = 'POWER SPECTRUM'
TVSCL,CONGRID(sps,sz[0],sz[1])
END
im = [64,64]
file = FILEPATH('abnorm.dat',SUBDIRECTORY =['examples','data'])
f = READ_BINARY(file,DATA_DIM=im)
sz = 2*im
DEVICE, DECOMPOSED = 0
loadct, 0
f1 = FFT(f)
center = im/2 + 1
fs = SHIFT(F1,center)
ps = ABS(fs)^2
sps = ALOG10(ps)
WINDOW,0,XSIZE = SZ[0],YSIZE = SZ[1],TITLE = 'POWER SPECTRUM'
TVSCL,CONGRID(sps,sz[0],sz[1])
END
Creating Object boundaries in IDL
pro OBJECTBOUNDARY_SMOOTHING
;Initializing the display
DEVICE, DECOMPOSED = 0, RETAIN = 2
LOADCT, 0
;Reading a jpeg file
file = FILEPATH('meteor_crater.jpg', SUBDIRECTORY = ['examples','data'])
READ_JPEG,file, f,/GRAYSCALE
sz = SIZE(f, /DIMENSIONS)
print, sz
;creating a window
WINDOW, 0, XSIZE = (2*SZ[0]),YSIZE=(SZ[1])
TV,f,0
;writing a text object on image
XYOUTS, 50, 220, 'Original Image', ALIGNMENT = 0.5, /DEVICE, COLOR = 255
;Image smoothing
f1 = smooth(f,7,/edge_truncate)
tvscl, f1,1
XYOUTS, (50+SZ[0]), 220, 'SMOOTH IMAGE', ALIGNMENT = 0.5, /DEVICE, COLOR = 255
end
;Initializing the display
DEVICE, DECOMPOSED = 0, RETAIN = 2
LOADCT, 0
;Reading a jpeg file
file = FILEPATH('meteor_crater.jpg', SUBDIRECTORY = ['examples','data'])
READ_JPEG,file, f,/GRAYSCALE
sz = SIZE(f, /DIMENSIONS)
print, sz
;creating a window
WINDOW, 0, XSIZE = (2*SZ[0]),YSIZE=(SZ[1])
TV,f,0
;writing a text object on image
XYOUTS, 50, 220, 'Original Image', ALIGNMENT = 0.5, /DEVICE, COLOR = 255
;Image smoothing
f1 = smooth(f,7,/edge_truncate)
tvscl, f1,1
XYOUTS, (50+SZ[0]), 220, 'SMOOTH IMAGE', ALIGNMENT = 0.5, /DEVICE, COLOR = 255
end
HIGH_PASS filter in IDL
PRO HIGH_PASS_FILTER
READ_GIF,'d:\Image\bird.gif',im
sz=SIZE(im,/DIMENSIONS)
im1=float(im)/255;
nim=im1
KER = REPLICATE(-1.0,3,3)
KER[1,1]=8.0
kER=FLOAT(KER)
PRINT,KER
nim=CONVOL(im1,ker)
nim=byte(nim*255)
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TV,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='MEAN filtered'
TV,nim
PRINT,NIM[0:9,0:9]
END
READ_GIF,'d:\Image\bird.gif',im
sz=SIZE(im,/DIMENSIONS)
im1=float(im)/255;
nim=im1
KER = REPLICATE(-1.0,3,3)
KER[1,1]=8.0
kER=FLOAT(KER)
PRINT,KER
nim=CONVOL(im1,ker)
nim=byte(nim*255)
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TV,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='MEAN filtered'
TV,nim
PRINT,NIM[0:9,0:9]
END
MEDIAN filter in IDL
PRO MEDIAN_FILTER
READ_GIF,'d:\Image\bird.gif',im
im1=im
sz=SIZE(im,/DIMENSIONS)
s=[0,0,0,0,0,0,0,0,0]
FOR i=1,sz[0]-2 DO BEGIN
FOR j=1,sz[1]-2 DO BEGIN
CO=0;
FOR k = i-1,i+1 DO BEGIN
FOR l = j-1,j+1 DO BEGIN
s[CO]=im[k,l]
CO=CO+1
ENDFOR
ENDFOR
im1[i,j]=MEDIAN(s)
ENDFOR
ENDFOR
WINDOW,0,XSIZE=sz[0],YSIZE=sz[0],TITLE='ORIGINAL IMAGE'
TV,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[0],TITLE='MEDIAN IMAGE'
TV,im1
END
READ_GIF,'d:\Image\bird.gif',im
im1=im
sz=SIZE(im,/DIMENSIONS)
s=[0,0,0,0,0,0,0,0,0]
FOR i=1,sz[0]-2 DO BEGIN
FOR j=1,sz[1]-2 DO BEGIN
CO=0;
FOR k = i-1,i+1 DO BEGIN
FOR l = j-1,j+1 DO BEGIN
s[CO]=im[k,l]
CO=CO+1
ENDFOR
ENDFOR
im1[i,j]=MEDIAN(s)
ENDFOR
ENDFOR
WINDOW,0,XSIZE=sz[0],YSIZE=sz[0],TITLE='ORIGINAL IMAGE'
TV,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[0],TITLE='MEDIAN IMAGE'
TV,im1
END
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
; 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
Tuesday, October 6, 2009
Image Cropping in IDL
;################################################
; Image Cropping Example
; Author : S.Ganesh Babu
;###############################################
PRO EX34
world = READ_PNG(FILEPATH('avhrr.png',SUBDIRECTORY=['examples','data']),R,G,B)
DEVICE, RETAIN = 2, DECOMPOSED = 0
TVLCT, R, G,B
worldSize = SIZE(world,/DIMENSIONS)
WINDOW, 0, XSIZE = worldSize[0], YSIZE= worldSize[1]
TV, world
;CURSOR, LeftLowX, LeftLowY, /DEVICE
;CURSOR, RightTopX, RightTopY, /DEVICE
af = world[312:475, 103:264]
;af = world[LeftLowX:RightTopX, LeftLowY:RightTopY]
WINDOW, 2, XSIZE=(475 - 312+1),YSIZE=(264 - 103 +1)
TV, af
END
;################################################
; Image Cropping Example
; Author : S.Ganesh Babu
;###############################################
PRO EX34
world = READ_PNG(FILEPATH('avhrr.png',SUBDIRECTORY=['examples','data']),R,G,B)
DEVICE, RETAIN = 2, DECOMPOSED = 0
TVLCT, R, G,B
worldSize = SIZE(world,/DIMENSIONS)
WINDOW, 0, XSIZE = worldSize[0], YSIZE= worldSize[1]
TV, world
;CURSOR, LeftLowX, LeftLowY, /DEVICE
;CURSOR, RightTopX, RightTopY, /DEVICE
af = world[312:475, 103:264]
;af = world[LeftLowX:RightTopX, LeftLowY:RightTopY]
WINDOW, 2, XSIZE=(475 - 312+1),YSIZE=(264 - 103 +1)
TV, af
END
Image Padding in IDL
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; IMAGE PADDING
; Author: S.Ganesh Babu
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PRO EX24
earth = READ_PNG(FILEPATH('avhrr.png', SUBDIRECTORY = ['examples','data']),r,g,b)
DEVICE, DECOMPOSED = 0, RETAIN = 2
TVLCT, r,g,b
maxColor = !D.TABLE_SIZE - 1
TVLCT, 255,255,255, maxColor
sz = SIZE(earth,/DIMENSIONS)
pearth = REPLICATE(BYTE(maxColor),sz[0]+20,sz[1]+40)
pearth[10,10]=earth
WINDOW,0, XSIZE=sz[0]+20,YSIZE=sz[1]+40
TV,pearth
END
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; IMAGE PADDING
; Author: S.Ganesh Babu
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PRO EX24
earth = READ_PNG(FILEPATH('avhrr.png', SUBDIRECTORY = ['examples','data']),r,g,b)
DEVICE, DECOMPOSED = 0, RETAIN = 2
TVLCT, r,g,b
maxColor = !D.TABLE_SIZE - 1
TVLCT, 255,255,255, maxColor
sz = SIZE(earth,/DIMENSIONS)
pearth = REPLICATE(BYTE(maxColor),sz[0]+20,sz[1]+40)
pearth[10,10]=earth
WINDOW,0, XSIZE=sz[0]+20,YSIZE=sz[1]+40
TV,pearth
END
creating Widget and adding event on IDL
PRO done_event, ev
WIDGET_CONTROL, ev.TOP, /DESTROY
PRINT, N_PARAMS()
END
PRO EX21
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
help, im
sz=SIZE(im,/DIMENSIONS)
wBase = WIDGET_BASE(/COLUMN)
wDraw = WIDGET_DRAW(wBase, XSIZE=sz[0], YSIZE=sz[1])
wButton = WIDGET_BUTTON(wBase, VALUE='Ganesh', EVENT_PRO = 'done_event')
WIDGET_CONTROL, wBase, /REALIZE
WIDGET_CONTROL, wDraw, GET_VALUE = index
WSET, index
TV, im
XMANAGER, 'EX21', wBase, /NO_BLOCK
END
PRO done_event, ev
WIDGET_CONTROL, ev.TOP, /DESTROY
PRINT, N_PARAMS()
END
PRO EX21
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
help, im
sz=SIZE(im,/DIMENSIONS)
wBase = WIDGET_BASE(/COLUMN)
wDraw = WIDGET_DRAW(wBase, XSIZE=sz[0], YSIZE=sz[1])
wButton = WIDGET_BUTTON(wBase, VALUE='Ganesh', EVENT_PRO = 'done_event')
WIDGET_CONTROL, wBase, /REALIZE
WIDGET_CONTROL, wDraw, GET_VALUE = index
WSET, index
TV, im
XMANAGER, 'EX21', wBase, /NO_BLOCK
END
String operations in IDL
; String operations
pro ex23
trees=['Beech','Birch','Mahogany','Maple','Oak','Pine','Walnut']
A = STRUPCASE(trees); uppercase of trees
HELP, A; array size and type
PRINT, trees; display tree value
PRINT, A ; display uppercase values
B = 'This is '+'a concatenation example.'
PRINT, B
PRINT, "This is a Multi-line" $
+ "string concatenation example."
names = trees + [REPLICATE(',',N_ELEMENTS(trees)-1),'']
PRINT, names
end
; String operations
pro ex23
trees=['Beech','Birch','Mahogany','Maple','Oak','Pine','Walnut']
A = STRUPCASE(trees); uppercase of trees
HELP, A; array size and type
PRINT, trees; display tree value
PRINT, A ; display uppercase values
B = 'This is '+'a concatenation example.'
PRINT, B
PRINT, "This is a Multi-line" $
+ "string concatenation example."
names = trees + [REPLICATE(',',N_ELEMENTS(trees)-1),'']
PRINT, names
end
creating Widget and adding event on IDL
PRO done_event, ev
WIDGET_CONTROL, ev.TOP, /DESTROY
PRINT, N_PARAMS()
END
PRO EX21
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
help, im
sz=SIZE(im,/DIMENSIONS)
wBase = WIDGET_BASE(/COLUMN)
wDraw = WIDGET_DRAW(wBase, XSIZE=sz[0], YSIZE=sz[1])
wButton = WIDGET_BUTTON(wBase, VALUE='Ganesh', EVENT_PRO = 'done_event')
WIDGET_CONTROL, wBase, /REALIZE
WIDGET_CONTROL, wDraw, GET_VALUE = index
WSET, index
TV, im
XMANAGER, 'EX21', wBase, /NO_BLOCK
END
PRO done_event, ev
WIDGET_CONTROL, ev.TOP, /DESTROY
PRINT, N_PARAMS()
END
PRO EX21
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
help, im
sz=SIZE(im,/DIMENSIONS)
wBase = WIDGET_BASE(/COLUMN)
wDraw = WIDGET_DRAW(wBase, XSIZE=sz[0], YSIZE=sz[1])
wButton = WIDGET_BUTTON(wBase, VALUE='Ganesh', EVENT_PRO = 'done_event')
WIDGET_CONTROL, wBase, /REALIZE
WIDGET_CONTROL, wDraw, GET_VALUE = index
WSET, index
TV, im
XMANAGER, 'EX21', wBase, /NO_BLOCK
END
Image Segmentation using watershed algorithm in IDL
;##############################################
; Image Segmentation using watershed algorithm
; Author : S.GaneshBabu
;##############################################
PRO EX16
file=DIALOG_PICKFILE(PATH='E:\Image')
im=READ_IMAGE(file)
sz=size(im,/DIMENSIONS)
R=15; radious of disk
disc=SHIFT(DIST(2*R+1),R,R) LE R
b=MAX(im)-im
tvscl,b,0
c=MORPH_CLOSE(b,disc,/GRAY)
TVSCL,c,1
d=WATERSHED(c)
TVSCL,d,2
e= im > (max(im) * (d EQ 0b))
TVSCL,e,3
END
;##############################################
; Image Segmentation using watershed algorithm
; Author : S.GaneshBabu
;##############################################
PRO EX16
file=DIALOG_PICKFILE(PATH='E:\Image')
im=READ_IMAGE(file)
sz=size(im,/DIMENSIONS)
R=15; radious of disk
disc=SHIFT(DIST(2*R+1),R,R) LE R
b=MAX(im)-im
tvscl,b,0
c=MORPH_CLOSE(b,disc,/GRAY)
TVSCL,c,1
d=WATERSHED(c)
TVSCL,d,2
e= im > (max(im) * (d EQ 0b))
TVSCL,e,3
END
2D DCT Transform in IDL
;####################################################
; 2D DCT Transform
; Author : S.Ganesh Babu
;####################################################
PRO EX15
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
sz=SIZE(im,/DIMENSIONS)
nv=SIZE(sz,/DIMENSIONS)
nim=im
IF nv EQ 2 THEN BEGIN
FOR i = 0,sz[0]-2 DO BEGIN
FOR j = 0,sz[1]-2 DO BEGIN
IF i EQ 0 THEN begin
nim[j+1,i+1]=1/sqrt(sz[0])
endif else begin
nim[j+1,i+1]=sqrt(2./sz[0])*cos(((2.*i+1)*j*3.14)/(2.*sz[0]))
endelse
ENDFOR
ENDFOR
print,nim(1:10,1:10)
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TV,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='Laplacian filtered'
TVSCL,nim
ENDIF ELSE BEGIN
RC = REFORM(im[0,*,*])
GC = REFORM(im[1,*,*])
BC = REFORM(im[2,*,*])
rim=CONVOL(RC,ker)
gim=CONVOL(GC,ker)
bim=CONVOL(BC,ker)
nim[0,*,*]=rim
nim[1,*,*]=gim
nim[2,*,*]=bim
nim=im-nim
WINDOW,0,XSIZE=sz[1],YSIZE=sz[2],TITLE='INPUT IMAGE'
TVSCL,im,TRUE=1
WINDOW,1,XSIZE=sz[1],YSIZE=sz[2],TITLE='Laplacian filtered'
TV,nim,TRUE=1
ENDELSE
END
;####################################################
; 2D DCT Transform
; Author : S.Ganesh Babu
;####################################################
PRO EX15
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
sz=SIZE(im,/DIMENSIONS)
nv=SIZE(sz,/DIMENSIONS)
nim=im
IF nv EQ 2 THEN BEGIN
FOR i = 0,sz[0]-2 DO BEGIN
FOR j = 0,sz[1]-2 DO BEGIN
IF i EQ 0 THEN begin
nim[j+1,i+1]=1/sqrt(sz[0])
endif else begin
nim[j+1,i+1]=sqrt(2./sz[0])*cos(((2.*i+1)*j*3.14)/(2.*sz[0]))
endelse
ENDFOR
ENDFOR
print,nim(1:10,1:10)
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TV,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='Laplacian filtered'
TVSCL,nim
ENDIF ELSE BEGIN
RC = REFORM(im[0,*,*])
GC = REFORM(im[1,*,*])
BC = REFORM(im[2,*,*])
rim=CONVOL(RC,ker)
gim=CONVOL(GC,ker)
bim=CONVOL(BC,ker)
nim[0,*,*]=rim
nim[1,*,*]=gim
nim[2,*,*]=bim
nim=im-nim
WINDOW,0,XSIZE=sz[1],YSIZE=sz[2],TITLE='INPUT IMAGE'
TVSCL,im,TRUE=1
WINDOW,1,XSIZE=sz[1],YSIZE=sz[2],TITLE='Laplacian filtered'
TV,nim,TRUE=1
ENDELSE
END
Laplacian Enhancement in IDL
;####################################################
; Laplacian Enhancement
; Author : S.Ganesh Babu
;####################################################
PRO EX14
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
sz=SIZE(im,/DIMENSIONS)
nv=SIZE(sz,/DIMENSIONS)
nim=im
ker=[[0,1,0],[1,-4,1],[0,1,0]]
IF nv EQ 2 THEN BEGIN
nim=CONVOL(im,ker)
nim=im-nim
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TV,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='Laplacian filtered'
TVSCL,nim
ENDIF ELSE BEGIN
RC = REFORM(im[0,*,*])
GC = REFORM(im[1,*,*])
BC = REFORM(im[2,*,*])
rim=CONVOL(RC,ker)
gim=CONVOL(GC,ker)
bim=CONVOL(BC,ker)
nim[0,*,*]=rim
nim[1,*,*]=gim
nim[2,*,*]=bim
nim=im-nim
WINDOW,0,XSIZE=sz[1],YSIZE=sz[2],TITLE='INPUT IMAGE'
TVSCL,im,TRUE=1
WINDOW,1,XSIZE=sz[1],YSIZE=sz[2],TITLE='Laplacian filtered'
TV,nim,TRUE=1
ENDELSE
END
;####################################################
; Laplacian Enhancement
; Author : S.Ganesh Babu
;####################################################
PRO EX14
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
sz=SIZE(im,/DIMENSIONS)
nv=SIZE(sz,/DIMENSIONS)
nim=im
ker=[[0,1,0],[1,-4,1],[0,1,0]]
IF nv EQ 2 THEN BEGIN
nim=CONVOL(im,ker)
nim=im-nim
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TV,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='Laplacian filtered'
TVSCL,nim
ENDIF ELSE BEGIN
RC = REFORM(im[0,*,*])
GC = REFORM(im[1,*,*])
BC = REFORM(im[2,*,*])
rim=CONVOL(RC,ker)
gim=CONVOL(GC,ker)
bim=CONVOL(BC,ker)
nim[0,*,*]=rim
nim[1,*,*]=gim
nim[2,*,*]=bim
nim=im-nim
WINDOW,0,XSIZE=sz[1],YSIZE=sz[2],TITLE='INPUT IMAGE'
TVSCL,im,TRUE=1
WINDOW,1,XSIZE=sz[1],YSIZE=sz[2],TITLE='Laplacian filtered'
TV,nim,TRUE=1
ENDELSE
END
Laplacian filter in IDL
;####################################################
; Laplacian filter
; Author : S.Ganesh Babu
;####################################################
PRO EX13
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
sz=SIZE(im,/DIMENSIONS)
nv=SIZE(sz,/DIMENSIONS)
nim=im
ker=[[0,1,0],[1,-4,1],[0,1,0]]
IF nv EQ 2 THEN BEGIN
nim=CONVOL(im,ker)
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TVSCL,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='Laplacian filtered'
TVSCL,nim
ENDIF ELSE BEGIN
WINDOW,0,XSIZE=sz[1],YSIZE=sz[2],TITLE='INPUT IMAGE'
TVSCL,im,TRUE=1
WINDOW,1,XSIZE=sz[1],YSIZE=sz[2],TITLE='Laplacian filtered'
TVSCL,nim,TRUE=1
ENDELSE
END
; Laplacian filter
; Author : S.Ganesh Babu
;####################################################
PRO EX13
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
sz=SIZE(im,/DIMENSIONS)
nv=SIZE(sz,/DIMENSIONS)
nim=im
ker=[[0,1,0],[1,-4,1],[0,1,0]]
IF nv EQ 2 THEN BEGIN
nim=CONVOL(im,ker)
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TVSCL,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='Laplacian filtered'
TVSCL,nim
ENDIF ELSE BEGIN
WINDOW,0,XSIZE=sz[1],YSIZE=sz[2],TITLE='INPUT IMAGE'
TVSCL,im,TRUE=1
WINDOW,1,XSIZE=sz[1],YSIZE=sz[2],TITLE='Laplacian filtered'
TVSCL,nim,TRUE=1
ENDELSE
END
Histogram Equalization in IDL
;####################################################
; Histogram Equalization
; Author : S.Ganesh Babu
;####################################################
PRO EX12
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
sz=SIZE(im,/DIMENSIONS)
nv=SIZE(sz,/DIMENSIONS)
nim=HIST_EQUAL(im)
IF nv EQ 2 THEN BEGIN
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TVSCL,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='Histogram Equalization'
TVSCL,nim
ENDIF ELSE BEGIN
WINDOW,0,XSIZE=sz[1],YSIZE=sz[2],TITLE='INPUT IMAGE'
TVSCL,im,TRUE=1
WINDOW,1,XSIZE=sz[1],YSIZE=sz[2],TITLE='Histogram Equalization'
TVSCL,nim,TRUE=1
ENDELSE
END
; Histogram Equalization
; Author : S.Ganesh Babu
;####################################################
PRO EX12
file = DIALOG_PICKFILE(PATH='E:\Image')
im = READ_IMAGE(file)
sz=SIZE(im,/DIMENSIONS)
nv=SIZE(sz,/DIMENSIONS)
nim=HIST_EQUAL(im)
IF nv EQ 2 THEN BEGIN
WINDOW,0,XSIZE=sz[0],YSIZE=sz[1],TITLE='INPUT IMAGE'
TVSCL,im
WINDOW,1,XSIZE=sz[0],YSIZE=sz[1],TITLE='Histogram Equalization'
TVSCL,nim
ENDIF ELSE BEGIN
WINDOW,0,XSIZE=sz[1],YSIZE=sz[2],TITLE='INPUT IMAGE'
TVSCL,im,TRUE=1
WINDOW,1,XSIZE=sz[1],YSIZE=sz[2],TITLE='Histogram Equalization'
TVSCL,nim,TRUE=1
ENDELSE
END
Subscribe to:
Posts (Atom)