1,860
edits
Line 223: | Line 223: | ||
== Improve TIFF image support == | == Improve TIFF image support == | ||
[https://en.wikipedia.org/wiki/TIFF Tag Image File Format (TIFF)] is the de facto standard for scientific images. Octave uses the [http://www.graphicsmagick.org/ GraphicsMagic] (GM) C++ library to handle [http://www.graphicsmagick.org/formats.html many image formats] | [https://en.wikipedia.org/wiki/TIFF Tag Image File Format (TIFF)] is the de facto standard for scientific images. Octave uses the [http://www.graphicsmagick.org/ GraphicsMagic] (GM) C++ library to handle [http://www.graphicsmagick.org/formats.html TIFF and many others image formats]. However, GM still has several limitations: | ||
* GM has build option {{codeline|quantum}} which defines the bitdepth to use when reading an image | * GM has build option {{codeline|quantum}} which defines the bitdepth to use when reading an image: | ||
* GM supports unsigned integers only, thus incorrectly reading files such as TIFF with floating point data. | ** Building GM with '''high quantum''' means that images of smaller bitdepth will take a lot more memory when reading. | ||
** Building GM with '''low quantum''' 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 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 aims to implement better TIFF image support | This project aims to implement better TIFF image support using [https://en.wikipedia.org/wiki/Libtiff libtiff], while leaving GM handle all other image formats. After writing a [https://octave.org/doc/v6.1.0/classdef-Classes.html classdef] interface to libtiff, improve the Octave functions {{manual|imread}}, {{manual|imwrite}}, and {{manual|imfinfo}} to make use of it. | ||
* '''Required skills''' | * '''Required skills''' | ||
: Knowledge of C++ and C | : Knowledge of Octave, C++ and C. | ||
* '''Difficulty''' | * '''Difficulty''' | ||
: Medium. | : Medium. |