- Academic Service
- Software Downloads
Senior Computer Scientist,
Office of High Performance Computing and Communications,
Lister Hill National Center for Biomedical Communications,
National Library of Medicine,
National Institutes of Health
TAJ Technologies Inc.
Adjunct Assistant Professor,
Department of Radiology,
PhD. 2004 Computer Science, The Hebrew University of Jerusalem, Jerusalem, Israel.
Office of High Performance Computing and Communications
National Library of Medicine
National Institutes of Health
Bldg. 38A, Room B1N30D
8600 Rockville Pike,
Bethesda, MD, 20894
Instructions on how to get to the NIH campus in general, and the Lister Hill Center (bldg. 38A) in particular, can be found here.
Don't forget to bring a US government issued ID or your passport. Entrance to the NIH campus requires going through a security check.
ערב, צהריים –
Augment your reality, read the book:
Associate Editor, Healthcare Technology Letters.
Editorial Board Member, International Journal of Computer Assisted Radiology and Surgery.
Program chair Information Processing in Computer Assisted Interventions (IPCAI) (2016).
Conference chair SPIE Medical Imaging: Image-Guided Procedures, Robotic Interventions, and Modeling (2013-2016).
Area chair Information Processing in Computer-Assisted Interventions (IPCAI) (2012-2015, 2017).
Program committee Medical Image Computing and Computer Aided Intervention (MICCAI) (2011,2013).
Program committee SPIE Medical Imaging:
Image-Guided Procedures, Robotic Interventions, and Modeling (2009-present).
Associate Editor, Int. Conf. IEEE Engineering in Medicine and Biology Society (EMBS) -
Biomedical Imaging and Image Processing Theme (2008-2010)
Grant application reviewer, Natural Sciences and Engineering Research Council of Canada.
Reviewer: IEEE TMI, IEEE TBME, IEEE TITB, MedIA, Med. Phys., IJCARS, Phys. Med. Biol. (outstanding reviewer 2016).
I am interested in several fields of computer science all of which play a role in computer aided medical interventions : augmented and mixed reality,
image analysis, computer vision, and software engineering.
||Github repository containing Jupyter Python and R notebooks illustrating the use of SimpleITK to perform registration and segmentation, your gateway to the ITK world.|
||I lead the development of the Free Open Source Image-Guided Surgery Toolkit (pronounced eye-gee-stick). The toolkit is no longer supported.
(implementation in C++)
Singleton pattern, simultaneous multiple
file output (implementation in C++). If you ever wanted to output both
to screen and to a log file this may be a handy class.
Fast median filtering (implementation in C++).
Histogram related code, normalization,
equalization etc. using a single image or an image stack (implementation in C++).
a. RANdom SAmple Consensus, RANSAC, - a
templated framework enabling easy incorporation of this robust
estimation method into any parameter estimation problem (implementation in C++).
This implementation has been incorporated into the
hugin image panorama tool.
b. A similar version that requires ITK with two
additional parameter estimators, nD plane and sphere, is
available here, in addition to a technical
discussion of the algorithm and implementation.
Type safe enumeration via the Singleton pattern (implementations in java and C++). This code became defunct with the introduction of 'enum class' in C++11. It should be noted, though, that the code readily returns the string representation of the enum, something C++11 enum classes still don't do. To get this functionality in C++11 you will need to do some additional coding, possibly using the preprocessor as described in this stackoverflow posting.
Absolute orientation (implementations in java, python, C++, and MATLAB), aligning two point sets with known correspondences using
Horn's unit quaternion method (see description in educational material). The java and C++ implementations require external packages for
computing the eigen-values, eigen-vectors of a real symmetric matrix (Jama
- java matrix package from NIST, and Vnl part of Vxl - vision-something-libraries. MATLAB implementation also includes a naive method
for matching points between sets such that known correspondences are not required.
A web page running a java applet that shows why Fiducial Registration Error (FRE) is not a viable indicator of Target Registration Error (TRE) in rigid point
based registration. Source code of the applet and corresponding application are downloadable from the web page.
NDI Tracking data acquisition. (implementation in C++).This program supports acquisition of
tracking data from the Polaris and Aurora (Northern Digital Inc.) tracking systems.
The program is multi-platform and uses the Image-Guided Surgery Toolkit.
The distribution also includes binaries for linux and windows, and the documented source. If you want to compile the program on your
system you will have to (in the following order):
Install the cross platform make utility, CMake. Download from here .
Install the insight toolkit (ITK), configure using CMake, and compile. Download from here.
Install the visualization toolkit (VTK), configure using CMake, and compile. Download from here.
Install the fast light toolkit (FLTK) release 1.1.6, configure using CMake, and compile. Download from here.
Install the image-guided surgery toolkit (IGSTK), configure using CMake (make sure to set IGSTK_USE_FLTK to on), and compile. Download from here (old version of the toolkit).
Configure the acquisition program using CMake, and compile.
Respiratory signal generation for cone beam CT (implementation in MATLAB), approximating skin motion as a linear trajectory (a.k.a. trajectory triangulation). This is the
implementation of the work describe in this paper.
Localization of spherical fiducials in cone beam CT
data using the original projection images (implementation in MATLAB). This is the
implementation of the work describe in this conference paper, which
was extended into this journal paper.
Localization of spherical fiducials in cone
beam CT data using the original projection images or a CT/CBCT volume (implementation in MATLAB). These two
programs are the implementation of the work described in this
journal paper. The program for localizing spherical fiducials in a volume is the more useful of the two as it
is not specific to CBCT, applicable for CT, CBCT and MRI volumes. If this is all you need you can grab
The program for localization using the projection images supersedes the previous list entry. Sample data sets
are available here.
Platform/OS independent multi-threading library (implementation in C++). These classes
were taken out of ITK release 3.20. Some modifications were required to keep the number of classes
to the minimum required for multi-threading. The API was maintained so that code that works with this library should work without any
change using ITK. Configuration is with Cmake. The
motivation for creating this library outside of ITK was my need for platform independent multi-threading
without requiring the complete toolkit.
Recipes for least squares estimation, git repository (C++). Least squares estimation of various
parametric objects (implementations designed for use in a RANSAC framework).
DicomSorter (MATLAB), sort DICOM files found in a directory tree according to their study and series. Function copies the
files from their current location and separates them into study/series hierarchy. Easier to work with when your data is separated into directories.
CPack tutorial - add an icon to your application and create a nice windows installer,
includes CMake/CPack "source".
Control a ppt presentation using your webcam - this is a toy example of how to use a tracking
device as a UI component. It is clunky when compared to UI devices such as the Microsoft Kinect or a standard clicker, but it is free and illustrates the point.