Getting Started Coding/Farsight

From FarsightWiki
Jump to: navigation, search

Return to:

Getting Started

Contents

What is Farsight

Farsight is a collection of image processing and analytic tools providing:

  • Segmentation
  • Tracing
  • Tracking
  • Classification

Current Status

  • Many undocumented projects
  • Many duplicate projects
  • Many dead/forgotten projects

Things to Improve

  • Coding Standards
    • Can someone else read it?
  • Modular Framework
    • Better API (Application Programming Interface)
    • Updates should be global
    • Pieces talk together
  • No reinventing of the wheel
  • "It Compiles"! = "It works"
  • Documentation

Farsight Data

Our data is Microscopy data

  • Image files vary from 2-D to 5-D
  • A dataset may vary from 10gb to 300gb

Software

  • CMake
    • automates compiling, testing and packaging of software
  • ITK (Insight Segmentation and Registration Toolkit)
  • VTK (Visualization Toolkit)
  • VXL (the Vision-something-Libraries)
    • a collection of C++ libraries designed for computer vision research and implementation.
  • Qt
    • cross-platform application and UI framework with APIs for C++ programming

ITK

ITK Template

Template 
Typedef before you use
Filter style
   SetInput()
   Set_Param()
   GetOutput()
   Update()
Useful Functions
   Use Image Iterators 
   Use Smart Pointers
   Region Of Interest

Example

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h“
#include <iostream>
#include <string>
 
 int main(int argc, char*argv[])
{
	if(argc < 3)
	{
		std::cerr << "Required: input, output" << std::endl;
		return EXIT_FAILURE;
	}
	typedef itk::Image<unsigned char, 3>  ImageType;
 
	typedef itk::ImageFileReader<ImageType> ReaderType;
	ReaderType::Pointer reader = ReaderType::New();
	reader->SetFileName(argv[1]);
	reader->Update();
 
	typedef  itk::ImageFileWriter< ImageType  > WriterType;
	WriterType::Pointer writer = WriterType::New();
	writer->SetFileName(argv[2]);
	writer->SetInput(reader->GetOutput());
	writer->Update();
 
  return EXIT_SUCCESS;
}


VTK

VTK Template

Render Window
   Renderer
   Interactor
   Actors/Props/Volumes
Actors
   Data
      Points
      Cells (edges)
      Cell Arrays
   Data Mapper
Rendering Properties
      Color
      Pickable 
      Size 
      Position

VTK Interaction

Pickers
Camera Control
Callback Command
     Data Visualization
nD datasets
Image Data 
Meshes
Volumes
VTK Table
    (we use this everywhere)
Titan
    Graph networks
    Charts


Qt

GUI
   Windows
   Layouts
   Widgets
Interaction
   Action
   Signals
   Slots
QPainter
   QImage 
   Selections