Ziv Yaniv, זיו יניב (ORCID, Google Scholar, ResearchGate, GitHub, LinkedIn)
      - High Quality Affordable Health Care for All, through Open Research
Last modified: February 1, 2023
home resources for CAS research publications data educational material personal consulting
Academic Service


Software Downloads

Senior Imaging Scientist,
Bioinformatics and Computational Biosciences Branch,
Office of Cyber Infrastructure and Computational Biology,
National Institute of Allergy and Infectious Diseases,
National Institutes of Health

PhD. 2004 Computer Science, The Hebrew University of Jerusalem, Jerusalem, Israel.
bio and headshot

Contact information:

Ziv Yaniv
Bioinformatics and Computational Biosciences Branch
National Institute of Allergy and Infectious Diseases
National Institutes of Health
Bldg. 31, Room 3B62
8600 Rockville Pike,
Bethesda, MD, 20892
Phone: +1-301-761-7352
email: zivyaniv@nih.gov
web: http://yanivresearch.info

Instructions on how to get to the NIH campus in general, and the BCBB group (bldg. 31) 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:

Academic Service


Bio-medical image analysis, machine learning, augmented and mixed reality, software engineering.

Software Downloads

  1. Github repository containing Jupyter Python and R notebooks illustrating the use of SimpleITK to perform registration and segmentation, your gateway to the ITK world.
  2. I lead the development of the Free Open Source Image-Guided Surgery Toolkit (pronounced eye-gee-stick). The toolkit is no longer supported.
  3. Observer/Observable pattern (implementation in C++)
  4. 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.
  5. Fast median filtering (implementation in C++).
  6. Histogram related code, normalization, equalization etc. using a single image or an image stack (implementation in C++).
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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):
    1. Install the cross platform make utility, CMake. Download from here .
    2. Install the insight toolkit (ITK), configure using CMake, and compile. Download from here.
    3. Install the visualization toolkit (VTK), configure using CMake, and compile. Download from here.
    4. Install the fast light toolkit (FLTK) release 1.1.6, configure using CMake, and compile. Download from here.
    5. 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).
    6. Configure the acquisition program using CMake, and compile.
  12. 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.
  13. 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.
  14. 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 this file. The program for localization using the projection images supersedes the previous list entry. Sample data sets are available here.
  15. 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.
  16. Recipes for least squares estimation, git repository (C++). Least squares estimation of various parametric objects (implementations designed for use in a RANSAC framework).
  17. 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.
  18. CPack tutorial - add an icon to your application and create a nice windows installer, includes CMake/CPack "source".
  19. 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.