Summer of Code - Getting Started: Difference between revisions

Jump to navigation Jump to search
→‎Image Analysis: Improve and shorten project scope.
(→‎Image Analysis: "Improvements to N-dimensional image processing" remove difficult project.)
(→‎Image Analysis: Improve and shorten project scope.)
Line 221: Line 221:
: Mike Miller, Colin B. Macdonald, Abhinav Tripathi, others?
: Mike Miller, Colin B. Macdonald, Abhinav Tripathi, others?


== Image Analysis ==
== Improve TIFF image support ==


=== Improve Octave's image IO ===
[Tag Image File Format (TIFF) https://en.wikipedia.org/wiki/TIFF] is the de facto standard for scientific images. Octave uses [http://www.graphicsmagick.org/ GraphicsMagic] (GM), a C++ library capable of handling [http://www.graphicsmagick.org/formats.html many image formats]. However, GM still has several limitations:
 
There are a lot of image formats. Octave uses [http://www.graphicsmagick.org/ GraphicsMagic] (GM), a library capable of handling [http://www.graphicsmagick.org/formats.html a lot of them] in a single C++ interface. However, GraphicsMagick still has its limitations. The most important are:


* GM has build option {{codeline|quantum}} which defines the bitdepth to use when reading an image. Building GM with high quantum means that images of smaller bitdepth will take a lot more memory when reading, but building it too low will make it impossible to read images of higher bitdepth. It also means that the image needs to always be rescaled to the correct range.
* GM has build option {{codeline|quantum}} which defines the bitdepth to use when reading an image. Building GM with high quantum means that images of smaller bitdepth will take a lot more memory when reading, but building it too low will make it impossible to read images of higher bitdepth. It also means that the image needs to always be rescaled to the correct range.
* GM supports unsigned integers only, thus incorrectly reading files such as TIFF with floating point data
* GM supports unsigned integers only, thus incorrectly reading files such as TIFF with floating point data.
* GM hides details of the image such as whether the image file is indexed.  This makes it hard to access the real data stored on file.
* GM hides details of the image such as whether the image file is indexed.  This makes it hard to access the real data stored on file.


This project would implement better image IO for scientific file formats while leaving GM handle the others. Since TIFF is the de facto standard for scientific images, this should be done first. Among the targets for the project are:
This project aims to implement better TIFF image support, which is the de facto standard for scientific images, while leaving GM handle all other image formats.


* implement the Tiff class, which is a wrapper around libtiff, using classdef. To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions.
* implement the Tiff class, which is a wrapper around libtiff, using classdef. To avoid creating too many private __oct functions, this project could also create a C++ interface to declare new Octave classdef functions.
* improve imread, imwrite, and imfinfo for tiff files using the newly created Tiff class
* improve {{manual|imread}}, {{manual|imwrite}}, and {{manual|imfinfo}} for tiff files using the newly created Tiff class
* port bioformats into Octave and prepare a package for it
* investigate other image IO libraries
* clean up and finish the dicom package to include into Octave core
* clean up and finish the dicom package to include into Octave core
* prepare a Matlab-compatible implementation of the FITS package for inclusion in Octave core
* prepare a Matlab-compatible implementation of the FITS package for inclusion in Octave core

Navigation menu