Tuesday, October 6, 2009

Image Histogram in IDL

;##################################################
;               HISTOGRAM
;   Author :    S.Ganesh Babu
;##################################################
PRO EX2
file=DIALOG_PICKFILE(PATH='E:\Image',FILTER=['*.*'])
im = READ_IMAGE(file)
sz=SIZE(im,/DIMENSIONS)
nv=SIZE(sz,/DIMENSIONS)
IF nv EQ 3 THEN BEGIN
WINDOW,0,XSIZE=sz[1],YSIZE=sz[2],TITLE='IMAGE'
TV,im,TRUE=1
CH=1
ENDIF ELSE BEGIN
WINDOW,0,XSIZE=sz[0],YSIZE=sz[0],TITLE='IMAGE'
TV,im

ENDELSE
WHILE CH DO BEGIN
R = REFORM(im[0,*,*])
G = REFORM(im[1,*,*])
B = REFORM(im[2,*,*])

Rh=FLTARR(256,1)*0.0
Gh=FLTARR(256,1)*0.0
Bh=FLTARR(256,1)*0.0

FOR i=0,sz[1]-1 DO BEGIN
FOR j=0,sz[2]-1 DO BEGIN
Rh[R[i,j]]=Rh[R[i,j]]+1.0
Gh[G[i,j]]=Gh[G[i,j]]+1.0
Bh[B[i,j]]=Bh[B[i,j]]+1.0
ENDFOR
ENDFOR

totpix=FLOAT(sz[0]*sz[1])

WINDOW,1,XSIZE=300,YSIZE=300
PLOT,Rh,TITLE='R HISTOGRAM',XTITLE='PIXEL VALUE',YTITLE='NO OF OCCURENCE'
WINDOW,2,XSIZE=300,YSIZE=300
PLOT,Gh,TITLE='G HISTOGRAM',XTITLE='PIXEL VALUE',YTITLE='NO OF OCCURENCE'
WINDOW,3,XSIZE=300,YSIZE=300
PLOT,Bh,TITLE='B HISTOGRAM',XTITLE='PIXEL VALUE',YTITLE='NO OF OCCURENCE'

IF (CH EQ 1) THEN BREAK
ENDWHILE
END

No comments: