Showing posts with label IDL. Show all posts
Showing posts with label IDL. Show all posts

Tuesday, August 3, 2010

Morphological opening in IDL

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

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

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

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

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

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

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

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

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

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

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

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