Summer of Code - Getting Started: Difference between revisions

Jump to navigation Jump to search
→‎Improve TIFF image support: removed (done in GSoC 2022)
(→‎Improve TIFF image support: removed (done in GSoC 2022))
Line 82: Line 82:
* Fix the storage of non-expressions by working with upstream SymPy: currently we rely on deprecated functionality in SymPy.
* Fix the storage of non-expressions by working with upstream SymPy: currently we rely on deprecated functionality in SymPy.
* Fix classdef-related issues in Octave itself.
* Fix classdef-related issues in Octave itself.
== 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 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:
** 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.
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.
* '''Project size''' [[#Project sizes | [?]]] and '''Difficulty'''
: ~175 hours (medium)
* '''Required skills'''
: Octave, C/C++
* '''Potential mentors'''
: [https://octave.discourse.group/u/carandraug Carnë Draug]


== PolarAxes and Plotting Improvements ==
== PolarAxes and Plotting Improvements ==

Navigation menu