C++ (10+ years), C (10+ years), Java (3 years),
HTML, CSS and HTML (5+ years),
Matlab (3 years), Mathematica (5+ years),
Microsoft Windows MFC/Win32 API (3 years),
Intel 80x86 assembly language (3 years), FORTRAN 77, 95 (5+ years),
Python (4 years), Perl (2 years),
Common Lisp (3 years).
Apple Mac (OS X),
Pentium PC (Windows 7, XP),
Sun SPARCstation (Solaris/UNIX),
Mercury RACE PowerPC/Altivec, Motorola VME-167 (VxWorks), VAX 8750 (VMS).
9/06-present: Image Processing Engineer, Apple Computer, Cupertino.
4/95-9/06: Senior Staff Software Design Engineer, KLA-Tencor, San Jose.
Designed new machine vision and pattern recognition algorithms for
automatically detecting defects on semiconductor wafers on optical and
SEM inspection systems.
Implemented them in C++/C on Windows NT/Pentium PC,
Sun Sparc/Solaris and multiprocessor PowerPC platforms.
Designed a method for reliably and automatically detecting and measuring repeating
patterns on images of semiconductor wafers in the presence of severe noise and
obscuring artifacts in the image.
Used mathematical methods from image processing, robust statistical analysis
and number theory.
Developed a two class hybrid rule-based and statistical classifier
to discriminate between image noise artifacts and real objects at
a > 90% success rate. Discovered a method to reduce the
size of the training set similar to Wilson editing to improve both
the accuracy and speed. Implemented techniques for automatic
training of rules and other classifier settings.
Developed a series of image processing filters to improve
image quality in scanning electron microscopy (SEM) images,
including methods to compensate for brightness variation, correction
of geometric distortion by graylevel morphological filtering,
suppression of random shot and impulse noise,
and image low passing and subsampling to increase object signal
to noise ratio.
Developed default algorithm settings, wrote user manual
and trained application engineers in intuitive use of filter
settings on customer data.
Developed an image processing analysis tool for measuring geometric field distortion on
images to monitor and improve performance of SEM and optical imaging systems.
Used crosscorrelation, subpixel interpolation, and rigid body point matching.
Analyzed speed bottlenecks in image processing methods for defect detection and
and used methods from graph theory to improve the speed by an order of magnitude.
Developed a new method for finding the rotation angle of a view relative to the camera using
autocorrelation and robust statistical methods.
Designed and implemented new algorithms for automating semiconductor wafer probers in
C on a Sun SPARCStation and cross compiled for a real time embedded system running VxWorks.
Developed a new method for automatically locating and focusing on probe pin positions
reliably in the presence of stray reflections and noise.
Used a collection of image processing techniques based on adaptive thresholding,
morphological noise cleaning, connected components analysis, blob feature analysis,
robust centroid computation, and computational geometry.
5/93-4/95: Member of the Technical Staff, Photon Dynamics Inc., Milpitas.
Developed new software to give high accuracy image calibration and registration
in real time for an automated flat panel display inspection system.
Software was written in C on a Sun workstation
running Solaris with extensive firmware programming on Datacube pipelined
real time image processing hardware.
Developed methods for accurately locating calibration target positions from
camera images using fast projection, 1D correlation with 2D correlation
Developed a reliable and accurate method for automatically
focusing the camera in real time based upon adaptive noise thresholding
and a modified edge operator with parabolic curve fitting.
Did a theoretical analysis of the effects of system noise on image gain correction
and developed methods to reduce it and speed up performance.
Designed software for real time image acquisition from digital
and analog cameras, working closely with the hardware engineers designing
9/91-5/93: Senior Engineer, TAU Corporation, Los Gatos.
Developed C software on a real time image processing
system for monitoring laser welding.
Designed fast algorithms for
detecting the laser light and displaying its location graphically.
Implemented the system on a VME compatible 68040 single board computer
with Datacube real time image processing hardware, and controlled by a Sun
workstation running X windows under UNIX.
Wrote the user manual, installed the system and trained the customer.
Designed the C software for an automated PC-based
image analysis system for automated strain analysis of materials such as
aircraft wings and turbines.
Designed fast correlation algorithms for comparing the image of a sample to a reference image to
measure defects and display their locations graphically.
Implemented the software on a 80486 PC with a specialized signal processing board,
a camera and frame grabber board and a precision motor driven xy platform.
Built the system, wrote the user manual, installed it, trained the customer, and shipped
Responsible for the software design in a simulation
study of a communications system for broadcasting error free images over
Designed and implemented error correction/detection algorithms using the
CRC, Reed-Solomon, BCH and Golay codes to protect images against burst
errors on telephone or satellite links.
Developed an improved theoretical
formula for predicting error correction performance which was verified
4/85-10/87 Communications Systems Analysis Group
Designed the image processing and graphics software
for a portable PC based system for processing, enhancement and transmission
of images over satellite data links.
Designed methods for fast image rotations and reflections.
Designed an algorithm to display satellite images in false color by combining information from
different frequency bands.
Wrote C and assembly language software for interfacing to image scanners, cameras,
image display boards, and image printers.
2/81-4/85 Scientific Software Support Group
Designed the user interface and graphics software for a topographic map display
on a Sun workstation and implemented it in X windows using the C language.
Designed a computational geometry algorithm
for automatic detection and suppression of overlapping graphics objects
to automatically declutter the display screen.
Used the UNIX tools YACC and LEX to write a parser for extracting graphics
data from a database.
Designed an algorithm to automatically lay out connections
between graphic symbols for a visual programming language.
Designed a method to automatically generate code from the diagram using topological
Developed mathematical software for polynomial root finding, numerical Laplace
transform inversion, exponential integral and other math library functions.
Graduate work, partial differential equations,
Ph.D. program in Mathematics (6/79 - 6/80),
University of California, Berkeley, California.
B. A. in Mathematics 6/79.
University of California, Berkeley, California.
Minors in Computer Science and Physics.
Honors: Phi Beta Kappa, Distinction in Scholarship.
CLASSES AND TRAINING COURSES:
Mercury RACE PowerPC Programming, Mercury Computer Training Course, 2001.
Introduction to the Java Language, Learnsoft Training Course, 2001.
Object-Oriented Analysis and Design Using the Unified Modeling Language
(UML), Lockheed-Martin Training Course, 1998.
Software Inspections Using Peer Review, Sandia Labs Training Course, 1998.
Programming with MFC (Microsoft Foundation Classes) and Visual C++,
U. C. Berkeley Extension, 1997.
Communication engineering courses in the design of error correcting codes, Stanford