Read TIFF image from file (in dipIO)
#include "dipio_tiff.h"
dip_Error dipio_ImageReadTIFF ( image, filename, imageNumber, photometric )
This function reads an image from the TIFF file and puts it in image. image must be allocated before calling this function. imageNumber indicates which image from the multi-page TIFF file to read. 0 is the first image. photometric is set to match the photometric interpretation of the TIFF file. Colour images and multi-sample images are allocated as 3D images, with the different samples along the 3rd dimension.
Multi-page TIFF files in which all pages contain an image of the same size and type, can be read as a 3D or 4D (Colour along the 4th dimension) image by setting imageNumber to -1. If the images are not of the same size and type, an error will be generated.
Data type | Name | Description |
dip_Image | image | Output image |
dip_String | filename | File name |
dip_int | imageNumber | Image number to read |
dipio_PhotometricInterpretation * | photometric | Photometric interpretation |
The enumerator dipio_PhotometricInterpretation contains the following constants:
Name | Description |
DIPIO_PHM_GREYVALUE | No colour information present; it's a grey-value image. |
DIPIO_PHM_RGB | RGB image (the first three planes are red, green and blue) |
DIPIO_PHM_RGB_NONLINEAR | Non-linear R'G'B' image (RGB channels to the power of 0.4) |
DIPIO_PHM_CMY | CMY image (the first three planes are cyan, magenta and yellow) |
DIPIO_PHM_CMYK | CMYK image (the first four planes are cyan, magenta, yellow and black) |
DIPIO_PHM_CIELUV | CIE L*u'v' image (the first three planes are luminosity, u* and v*) |
DIPIO_PHM_CIELAB | CIE L*a*b* image (the first three planes are luminosity, a* and b*) |
DIPIO_PHM_CIEXYZ | CIE XYZ (the first three planes are X, Y and Z) |
DIPIO_PHM_CIEYXY | CIE Yxy (the first three planes are Y, x and y) |
DIPIO_PHM_HCV | HCV image (the first three planes are hue, chroma and value) |
DIPIO_PHM_HSV | HSV image (the first three planes are hue, saturation and value) |
DIPIO_PHM_DEFAULT | Same as DIPIO_PHM_GREYVALUE |
DIPIO_PHM_GENERIC | Anything can be coded in the channels; the same as DIPIO_PHM_CMYK |
Most file formats support only some of these.
This function uses libtiff (version 3.6.1 or later), which supports the TIFF specification revision 6.0. Copyright (c)1988-1997 Sam Leffler and Copyright (c)1991-1997 Silicon Graphics, Inc.
This function uses zlib (version 1.1.4 or later). Copyright (c)1995-2002 Jean-loup Gailly and Mark Adler
TIFF is a very flexible file format. We have to limit the types of images that can be read to the more common ones, and to the ones dipIO writes. These are the most obvious limitations:
Tiled images are not supported.
Only 1, 4, 8, 16 and 32 bits per pixel integer grayvalues are read, as well as 32-bit and 64-bit floating point.
Only 4 and 8 bits per pixel colourmapped images are read. Colourmapped images contain 16-bit gray-values: stretching of the display will be necessary.
Class Y images (YCbCr) and Log-compressed images (LogLuv or LogL) are not supported.
ImageRead, ImageReadColour, ImageWriteTIFF, ImageIsTIFF, Colour2Gray