当前位置:文档之家› IDL编程实现图像处理

IDL编程实现图像处理

IDL编程实现图像处理pro exampleENVI, /RESTORE_BASE_SAVE_FILESENVI_BATCH_INITtlb=widget_base(column=1,mbar=mbar,title='Example',tlb_frame_attr=1,xoffset=500,yo ffset=100,xsize=800,ysize=600,RESOURCE_NAME = 'example')filemenu=widget_button(mbar,value='File')fileopt1=widget_button(filemenu,value='Open',event_pro='open_event')fileopt2=widget_button(filemenu,value='Save',/menu)Save1= widget_button(fileopt2,value = 'binary',uname = 'savebinary')Save2= widget_button(fileopt2,value = 'jpg',uname = 'savejpg')Save3= widget_button(fileopt2,value = 'bmp',uname = 'savebmp')Save4= widget_button(fileopt2,value = 'tif',uname = 'savetif')Save5= widget_button(fileopt2,value = 'dat',uname = 'savedat')fileopt3=widget_button(filemenu,value='Exit',event_pro='exit_event',/separator)editmenu=widget_button(mbar,value='Edit')processopt1=widget_button(editmenu,value='K-L Transform',event_pro='K_L_event',/separator)processopt2=widget_button(editmenu,value='HistogramEqualization',event_pro='HistogramEqualization_event',/separator)processopt3=widget_button(editmenu,value='NDVI',event_pro='NDVI_event',/separator) processopt5=widget_button(editmenu,value='Image Smoothing',event_pro='IS_event')processopt4=widget_button(editmenu,value='edge enhancement',/menu)imageopt1=widget_button(processopt4,value='robort',event_pro='robort_event') imageopt2=widget_button(processopt4,value='sobel',event_pro='sobel_event') imageopt3=widget_button(processopt4,value='prewitt',event_pro='prewitt_event')helpmenu=widget_button(mbar,value='Help')idlhelp=widget_button(helpmenu,value='IDL help',event_pro='help_event')iconbase=widget_base(tlb,row=1,/frame)subdir='resource/bitmaps'mapfile=filepath('open.bmp',subdir=subdir)iconopt1=widget_button(iconbase,value=mapfile,/bitmap,event_pro='open_event') mapfile=filepath('save.bmp',subdir=subdir)iconopt2=widget_button(iconbase,value=mapfile,/bitmap,event_pro='Save_event') button5=widget_button(iconbase,value='new.bmp',/bitmap,event_pro='new_event') button3=widget_button(iconbase,value='zoom_in.bmp',/bitmap,uvalue='suoxiao') button4=widget_button(iconbase,value='zoom_out.bmp',/bitmap,uvalue='fangda')help = widget_button(iconbase,value = filepath('help.bmp',subdirectory =['resource','bitmaps']),/bitmap,event_pro='help_event')draw=widget_draw(tlb,x_scroll_size=780,y_scroll_size=550,xsize=1000,ysize=1000,xof fset=200,/button_events)file=''data=BYTARR(2,2,2)pdata = bytarr(2,2,2)status=0pstate=ptr_new({draw:draw,file:file,data:ptr_new(data),pdata:ptr_new(pdata)}) widget_control,tlb,set_uvalue=pstatewidget_control,tlb,/realizeXMANAGER, 'example', tlb,/no_blockendpro open_event,eventcompile_opt IDL2envi,/restore_base_save_filesenvi_batch_initwidget_control,event.top,get_uvalue=pstatefilters = ['*.jpg','*.bmp','*.img','*.tif','*.jpeg','*.png']file = DIALOG_PICKFILE(/READ, FILTER = filters)envi_open_file,file,r_fid=fidif fid eq -1then returnenvi_file_query,fid,dims=dims,nb=nb,nl=nl,ns=ns,bnames=bnamespos=indgen(nb)(*pstate).file=filebasename=file_basename(file)f1=strpos(basename,'.')type=strmid(basename,f1+1,strlen(basename)-f1)type=strupcase(type)widget_control,(*pstate).draw,get_value=drawwset,drawCASE TYPE OF'JPEG': BEGINREAD_JPEG,FILE,DATATV,DATA,/TRUE*((*PSTATE).DATA)=DATAEND'PNG' : BEGINREAD_PNG,FILE,DATATV,DATA,/TRUE*((*PSTATE).DATA)=DATAEND'JPG': BEGINREAD_JPEG,FILE,DATATV,DATA,/TRUE*((*PSTATE).DATA)=DATAEND'BMP': BEGINDATA=READ_BMP(FILE)TV,DATA,/TRUE*((*PSTATE).DATA)=DATAEND'DAT': BEGINDATA = BYTARR(NS,NL,NB)OPENR,LUN,FILE,/GET_LUNREADU,LUN,DATATVSCL,DATAFREE_LUN,LUN*((*PSTATE).DATA)=DATAEND'IMG': BEGINdata = bytarr(ns,nl,nb)data= ENVI_GET_DATA(fid=fid, dims=dims, pos=pos) WIDGET_CONTROL,(*pstate).draw, GET_VALUE=drawWSET, drawtvscl,data,/order*((*pstate).data)=dataEND'TIF': BEGINDATA=BYTARR(NS,NL,NB)DATA= ENVI_GET_DATA(FID=FID, DIMS=DIMS, POS=POS)TVSCL,DATA,/ORDER*((*PSTATE).DATA)=DATAEND'TIFF': BEGINDATA=BYTARR(NS,NL,NB)DATA= ENVI_GET_DATA(FID=FID, DIMS=DIMS, POS=POS)TVSCL,DATA,/ORDER*((*PSTATE).DATA)=DATAENDENDCASEendpro save_event,eventwidget_control,event.top,get_uvalue=pstatefile=(*pstate).filesavefile= dialog_pickfile(title='save',path = 'D:')if savefile eq''then beginvoid = dialog_message('No file!',/error)returnendifa=strpos(savefile, '.')b=strlen(savefile)type = strmid(savefile,a+1, b-a)case type of'save':beginfile=(*pstate).fnameENVI_OPEN_FILE,file,r_fid=fidif fid eq -1then beginvoid=DIALOG_MESSAGE('file inputed error',/information)ENVI_BATCH_EXITreturnendiffilename=DIALOG_PICKFILE(title='choose file saved position',filter='*.jpg')write_jpeg, filename+'.jpg', *((*pstate).data), /true end'jpg' : beginwrite_JPEG,savefile,dataend'png' : beginwrite_png,savefile,dataend'bmp' : beginwrite_bmp,savefile,dataend'tif': beginwrite_tiff,savefile,dataend'dat': beginopenw,lun,binary,/get_lunwriteu,savefile,dataendendcasehelp, event, /structIF event.SELECT THEN WIDGET_CONTROL, event.TOP, /DESTROYendpro help_event,evevtcompile_opt IDL2envi,/restore_base_save_filesenvi_batch_initONLINE_HELPENDpro exit_event, eventhelp, event, /structIF event.SELECT THEN WIDGET_CONTROL, event.TOP, /DESTROYendpro K_L_event,eventcompile_opt IDL2envi,/restore_base_save_filesenvi_batch_initwidget_control,event.top,get_uvalue=pstatefile=(*pstate).fileenvi_open_file,file,r_fid=fidif fid eq -1then beginreturnendifenvi_file_query,fid,dims=dims,nb=nbpos=lindgen(nb)envi_doit,'envi_stats_doit',fid=fid,pos=pos,dims=dims,mean=avg,eval=eval,evec=evec ,comp_flag=5envi_doit,'pc_rotate',$fid=fid,pos=pos,dims=dims,mean=avg,eval=eval,evec=evec,$out_dt=4,out_name=out_name,out_nb=nb,r_fid=r_fid,/forward,/in_memoryenvi_file_query,r_fid,dims=dims,nb=nb,ns=ns,nl=nldata =bytarr(ns,nl,nb)data= envi_get_data(fid=fid,dims=dims,pos=pos)window,1,xsize=ns,ysize=nl,title='spatial principal component analysis'tv,data,/orderendpro ndvi_event,eventcompile_opt IDL2envi,/restore_base_save_filesenvi_batch_initwidget_control,event.top,get_uvalue=pstatefile=(*pstate).filedata=*((*pstate).data)envi_open_file,file,r_fid = fidenvi_file_query, fid, dims=dims,nb=nb,ns=ns,nl=nlpos = [4,3] - 1envi_doit,'ndvi_doit',fid=fid, pos=pos, dims=dims,/check, o_min=0, o_max=255,r_fid=r_fid,/inme_moryenvi_file_query,r_fid,dims = dims,nb = nb,ns=ns,nl=nldata = BYTARR(ns,nl,nb)data= ENVI_GET_DATA(fid=r_fid, dims=dims, pos=pos)window,3,title='NDVI'TVSCL,data,/orderendpro HistogramEqualization_event,eventwidget_control,event.top,get_uvalue=pstatedata=*((*pstate).data)file=(*pstate).fileenvi_open_file,file,r_fid=fidenvi_file_query,fid,dims=dims,nb=nb,ns=ns,nl=nlWINDOW, 1, TITLE = 'The original image histogram'plot,HISTOGRAM(data)result =HIST_EQUAL(data); ADAPT_WINDOW, 2,xsize = ns,ysize = nl,TITLE = 'histogram matching'TV, result,/orderWINDOW, 3, TITLE = 'After the image histogram matching'plot,HISTOGRAM(result)endpro IS_event,eventwidget_control,event.top,get_uvalue=pstatefile=(*pstate).fileenvi_open_file,file,r_fid=fidenvi_file_query,fid,dims=dims,nb=nb,ns=ns,nl=nlif fid eq -1then returndata=smooth(*((*pstate).data),3)window,1,xsize=ns,ysize=nl,title='smoothing'tvscl,data,/orderendpro robort_event,eventwidget_control,event.top,get_uvalue=pstatedata=*((*pstate).data)file=(*pstate).fileenvi_open_file,file,r_fid=fidenvi_file_query,fid,dims=dims,nb=nb,ns=ns,nl=nlDATA=DATA(*,*,1)DATA=ROBERTS(DATA)window,1,xsize=ns,ysize=nl,title='roberts'tvscl,data,/orderendpro sobel_event,eventwidget_control,event.top,get_uvalue=pstateDATA=*((*PSTATE).DATA)file=(*pstate).fileenvi_open_file,file,r_fid=fidenvi_file_query,fid,dims=dims,nb=nb,ns=ns,nl=nlDATA=DATA(*,*,1)DATA= SOBEL(DATA)window,1,xsize = ns,ysize = nl,title='sobel' TVSCL,data,/ORDERendpro prewitt_event,eventfile=(*pstate).fileENVI_OPEN_FILE,file,r_fid=fidENVI_FILE_QUERY,fid,dims = dims,nb = nb,ns=ns,nl=nl IF fid EQ -1THEN BEGINvoid=DIALOG_MESSAGE('window',/information)ENVI_BATCH_EXITRETURNendifresult=prewitt(*((*pstate).data))window,1,xsize = ns,ysize = nl,title='window' TVSCL,result,/order*((*pstate).pdata) = resultWIDGET_CONTROL,ev.top,get_Uvalue = pstate end。

相关主题