introduction to idl dr james scuffham. what is idl? “procedural” programming language compiled...
TRANSCRIPT
Introduction to IDL
Dr James Scuffham
What is IDL?
• “Procedural” programming language
• Compiled functions and procedures OR run-time interpreter
• Enormous library of pre-written and validated routines
• Widely used in the medical imaging community
Interactive Data Language
What can it do?• Data Analysis and
modelling:– Maths: calculus, solve
equations, FFT, DWT, optimisation
– Statistics: regression, hypothesis testing, curve fitting
• Image Processing:– Translate, transpose, rotate,
zoom, resample, extract, warp– Regions of interest, profiles,
histograms– Filtering, edge enhancement,
2D-FFT– Convolution, correlation,
feature extraction
• Data Visualisation:– Plot graphs and display
images– Animate dynamic data– Volume rendered surface
plots– Vector field visualisation
• Application development:– ‘Widgets’– Cross-platform capability:
“Virtual Machine”
Applications in Nuclear Medicine
• Supports DICOM and Interfile formats
• Displaying static images, drawing ROIs, obtaining statistics
• Displaying dynamic images, plotting time-activity curves, processing results
• Performing advanced image processing
Basic Image ProcessingREAD_INTERFILE, ‘muga.HDR’, X
frame0=ROTATE(X,7)
frame0 = CONGRID(frame0,512,512)
XROI, BYTSCL(frame0), STATISTICS=stats
Dynamic Images
PRO cine_muga, data, repeats
data = BYTSCL(ROTATE(data,7))
data = CONGRID(data, 512, 512)
howbig = SIZE(data)
FOR c = 0, howbig[3]*repeats DO BEGIN
display_image = data[*,*,(c MOD howbig[3]-1)]
TV, display_image
ENDFOR
END
Curve Processingleft_area = INT_TABULATED(time, left_kid)
right_area = INT_TABULATED(time, right_kid)
left_div_func = 100.0*left_area/(left_area+right_area)
right_div_func = 100.0*right_area/(left_area+right_area)
Right = 44%
Left = 56%
3D Data Visualisation
• slices
• isosurfaces
• contours
Application Development
Advanced Image Processing
Summary
IDL is really useful…..
……and not just for image processing