Export / Import Multi-point set

Bellow you can find two macros aimed to work with multi-point set in ImageJ/Fiji. Basically user just uses the default tool “multi-point” to select some points in image and then using this macro he can simply export them into TXT file (used format is compatible with ITK/Elastix) or CSV file. On the other hand when you have this points exported/saved you can simply import them to any other image using the second macro.

  • Author: Jiří Borovec <jiri.borovec(at)fel.cvut.cz>
  • Date: 24/11/2013
  • License: GPL v2

Export Multi-point set

This macro export a set of point (e.g. landmarks, feature points) into TXT or CSV file.

Download: export_multipointset.ijm

You can see the code here:

// clean results
run("Clear Results");
// get all points
getSelectionCoordinates(xCoordinates, yCoordinates);
// chose name pattern for exporting
fileName = File.openDialog("Select the file for export");
// Exporting as TXT format (ITK compatible)
file = File.open(fileName+".txt");
print(file, "point");
print(file, lengthOf(xCoordinates) );
for(i=0; i<lengthOf(xCoordinates); i++) {
    print(file, xCoordinates[i] + " " + yCoordinates[i]);
// export as CSV file
for(i=0; i<lengthOf(xCoordinates); i++) {
    setResult("X", i, xCoordinates[i]);
    setResult("Y", i, yCoordinates[i]);
saveAs("Results", fileName+".csv"); 

Import Multi-point set

This macro import a set of points (e.g. landmarks, feature points) from TXT or CSV file.

Download: import_multipointset.ijm

You can see the code here:

// ask for a file to be imported
fileName = File.openDialog("Select the file to import");
allText = File.openAsString(fileName);
tmp = split(fileName,".");
// get file format {txt, csv}
posix = tmp[lengthOf(tmp)-1];
// parse text by lines
text = split(allText, "\n");
// define array for points
var xpoints = newArray;
var ypoints = newArray; 
// in case input is in TXT format
if (posix=="txt") {	
	print("importing TXT point set...");
	//these are the column indexes
	hdr = split(text[0]);
	nbPoints = split(text[1]);
	iX = 0; iY = 1;
	// loading and parsing each line
	for (i = 2; i < (text.length); i++){
	   line = split(text[i]," ");
	   setOption("ExpandableArrays", true);   
	   xpoints[i-2] = parseInt(line[iX]);
	   ypoints[i-2] = parseInt(line[iY]); 
	   print("p("+i-1+") ["+xpoints[i-2]+"; "+ypoints[i-2]+"]"); 
// in case input is in CSV format
} else if (posix=="csv") {
	print("importing CSV point set...");
	//these are the column indexes
	hdr = split(text[0]);
	iLabel = 0; iX = 1; iY = 2;
	// loading and parsing each line
	for (i = 1; i < (text.length); i++){
	   line = split(text[i],",");
	   setOption("ExpandableArrays", true);   
	   xpoints[i-1] = parseInt(line[iX]);
	   ypoints[i-1] = parseInt(line[iY]);
	   print("p("+i+") ["+xpoints[i-1]+"; "+ypoints[i-1]+"]"); 
// in case of any other format
} else {
	print("not supported format...");	
// show the points in the image
makeSelection("point", xpoints, ypoints); 
macro/multiple_points.txt · Last modified: 2013/11/28 13:47 by borovec
Back to top
CC Attribution-Noncommercial-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0