Aperio Viewer

Medical Education Technology APERIO VIEWERS Select the folder Connective Tissue for this example. Choose a slide, in this example, the Appendix slide. Click view ImageScope to Launch the client program, which you installed. Aperio viewer was very efficient in the presentation of the overview image, but in the Hospital (intranet) environment, the difference was only statistically significant (p = 0.05) when Aperio viewer was compared with the Olympus viewer. Aperio image scope 12.0.1. Aperio imagescope viewer. Aperio imagescope download. Install imagescope aperio. Imagescope free installation. Aperio imagescope windows 7.

  1. Aperio Slide Viewer
  2. Aperio Image Viewer
  3. Aperio Slide Viewer
Welcome to the BigTIFF version of the libtiff library
  • Sample BigTIFF images - including the world's first terapixel image!
  • Technical Details
  • Downloads
    • Source ZIP for libtiff 4.1 including libjpeg 6b and zlib 1.2.3
    • Source ZIP for libtiff 4.1 only
    • Static library ZIP of libtiff.lib 4.1 for MS Windows linked with libjpeg 6b and zlib 1.2.3
    • Source tar for libtiff 4.0.1 including libjpeg 6b and zlib 1.2.3
    • Source tar for libtiff 4.0.1 only

The libtiff library is an open-source cross-platform library which enables applications to read and write images stored in TIFF files. (TIFF = Tagged Image File Format.) The TIFF file format is a widely accepted standard, supported by many applications on a wide range of platforms due to its capabilities and flexibility. Please see the libtiff home page for more information about libtiff and to download source code, executable libraries, and documentation.

Until recently TIFF files were limited in size to 4GB. A new version of libtiff has been created which supports BigTIFF files - TIFF files which are larger than 4GB. The new version is backward-compatible with previous versions and in many cases applications will not have to change at all in order to read or write BigTIFF files. In other cases the modifications required will be minor.

Aperio dx viewer

Please note this is not an official release of libtiff. This version has been submitted for a future standard update. It was named version 4.0 since the most recent official version is 3.8.2 (on which these changes were based). A subsequent update to the library to reduce the memory footprint for processing large TIFF files has been named version 4.1. The actual version when officially released may be different.

Aperio's ScanScope slide scanning systems and Spectrum digital pathology information management software improve the efficiency and quality of pathology services for pathologists and other professionals. ScanScope scanners create a digital image of an entire microscope slide at giga-pixel resolution in minutes, with inherently superior image. Histology Viewer. The GTEx Tissue Image Library contains detailed tissue histology images collected from numerous different tissue types from nearly 1000 postmortem donors. All tissues underwent stringent pathology review for tissue acceptability and each file contains details including the type of fixative, the degree of autolysis, as well as.

There are more technical details below, but at the highest level the BigTIFF changes made to libtiff were quite simple. The TIFF file format internally uses 32-bit byte offsets. The largest offset which can be represented is 232 = 4GB, making that the upper limit of the file size which could be supported by the design. The BigTIFF modifications to libtiff consisted primarily of changing all internal byte offsets to 64-bits. A key goal was to maintain backward compatibility with existing applications and files to the largest extent possible.

BigTIFF files have a '.tif' or '.tiff' file extension just like ordinary TIFF files. A new version in the file header prevents programs which have not linked with the BigTIFF version of libtiff from processing BigTIFF files. The library has been modified so that programs writing TIFF files do not need to know or care when they reach a 4GB data size. The file format will smoothly change from a standard TIFF file (compatible with all existing programs) to a BigTIFF file (compatible with all programs linked with a new version of the libtiff library). Similarly, programs reading TIFF files do not need to know or care whether a file is a standard TIFF file or a BigTIFF file.

The basic BigTIFF design was first proposed in 2004 and refined in this discussion on the Aware Systems mailing list. Contributors to the design discussion included Lynn Quam, Frank Warmerdam, Chris Cox, Rob Tillaart, Dan Smith, Bob Freisenhahn, Andrey Kiselev, Phillip Crews, and Gerben Vos. We thank all those who came before us for creating libtiff and designing the BigTIFF enhancements.

These changes were made by Ole Eichhorn (ole.eichhorn@gmail.com) while at Aperio (www.aperio.com) and are donated to the public domain, in gratitude to Sam Leffler, Silicon Graphics, Joris Van Damme, Aware Systems, Frank Warmerdam, Andrey Kisley, Mike Welles, and all who have worked on libtiff over the years to provide such a great tool. These changes are published on an 'as is' basis and neither Ole Eichhorn nor Aperio make any warranty as to their fitness for any intended use.

A number of BigTIFF sample images have been made by stitching together copies of a digitized microscope slide. These images may be viewed in your web browser by clicking on the thumbnails below:

Aperio Viewer


Original image
73,042 x 62,633 pixels
Image data = 4.57Gp
File size = 575MB
(more details)


25 x original
365,210 x 313,165 pixels
Image data = 114.4Gp
File size = 14GB
(more details)


100 x original
730,420 x 626,330 pixels
Image data = 457.5Gp
File size = 56GBGB
(more details)


225 x original
1,095,630 x 939,495 pixels
Image data = 1.0Tp
File size = 126GB
(more details)

Each of these files is a pyramid TIFF file, that is, there are multiple images in each file stored at different resolutions to facilitate rapid zooming. The images have a tiled organization to facilitate rapid panning. Image data have been compressed with JPEG at quality 30 for an average compression ratio of 20:1. Please click on the 'more details' links to view the pyramid dimensions and other image parameters.

Aperio is digitizing pathology. We provide systems and services for digital pathology, a digital environment for the management and interpretation of pathology information that originates with the digitization of a glass slide.

Aperio's ScanScope slide scanning systems and Spectrum digital pathology information management software improve the efficiency and quality of pathology services for pathologists and other professionals. ScanScope scanners create a digital image of an entire microscope slide at giga-pixel resolution in minutes, with inherently superior image quality. The Spectrum software provides a consolidated view of relevant case information - anywhere, anytime - and with clinical and workflow tools to improve the quality and efficiency of pathology services.

Scanned microscope slide images are very large - with dimensions that routinely exceed 100,000 x 100,000 pixels. The TIFF standard is perfect for storing digital slides - it is an open standard supported by a large number of applications on a wide variety of platforms. Lossy compression technologies such as JPEG2000 and JPEG are needed to keep file sizes manageable, but even so the 4GB file size limit had been a problem. With BigTIFF support it is now possible to store very large digital slides as TIFF files. Aperio is a strong believer in open standards and we hope that with these enhancements TIFF will continue to be the standard for storing and managing very large images such as digital slides.

The library retains the capability of writing standard TIFF files, compatible with previous versions of the library and other existing software. Standard TIFF files contain 32-bit offsets to directories and image data. This limits the total size of a standard TIFF file to 4GB (2^32).

The library now has the capability of writing BigTIFF files, which contain 64-bit offsets to directories and image data. For a BigTIFF file there is no practical limit to the size of a file. The BigTIFF file format is described in detail here: http://www.awaresystems.be/imaging/tiff/bigtiff.html.

There are several places where the format of a BigTIFF file differs from a standard TIFF file:

  • Each TIFF file begins with a header. The header differs between standard TIFF and BigTIFF as follows:
    Standard TIFF
    00x4D4D constant
    20x002A version = standard TIFF
    4offset to first directory
    BigTIFF
    00x4D4D constant
    20x002B version = BigTIFF
    40x0008 bytesize of offsets
    60x0000 constant
    8offset to first directory
  • TIFF directories consist of a series of entries which specify data for an image. Each entry may contain the data itself or may contain an offset to the data which physically follow the directory. The directory format differs between standard TIFF and BigTIFF as follows:
    Standard TIFF
    0number of directory entries
    --- for each entry
    0tag identifying information for entry
    2data type of entry (for standard TIFF 14 types are defined, 0-13)
    4count of elements for entry
    4data itself (if <= 32-bits) or offset to data for entry
    --- after all entries
    2+n*12offset to next directory or zero
    BigTIFF
    0number of directory entries
    --- for each entry
    0tag identifying information for entry
    2data type of entry (for BigTIFF 17 types are defined, 0-13, 16-18)
    4count of elements for entry
    12data itself (if <= 64-bits) or offset to data for entry
    --- after all entries
    8+n*20offset to next directory or zero
  • For some image data the data themselves consist of file offsets (e.g. tile / strip data locations). In a standard TIFF file these offsets are 32-bit (for backward compatibility, 16-bit offsets are also supported). In a BigTIFF file these offsets may be 64-bit values. Two new data types have been defined for 64-bit integers (TIFF_LONG8 and TIFF_SLONG8).
  • Finally, there is a special case of subimage directories. For any given directory, one or more subsequent directories may be designated as subimages. Subimage directory offsets are stored as 32-bits in standard TIFF files, and in BigTIFF files are 64-bit values. A new data type has been defined for 64-bit IFD offsets (TIFF_IFD8).

When a file is opened for reading the TIFF version in the file header is used to determine whether the file is a standard TIFF (uses 32-bit offsets) or BigTIFF (uses 64-bit offsets). In either case 64-bit offsets are used in internal data structures.

When a file is written it is initially unknown whether it will have to be a BigTIFF (if the total size is less than 2^32, there is no reason to make it a BigTIFF file). The library begins by writing a standard TIFF file with 32-bit offsets. It leaves 8 extra bytes of space after the file header in case the file will need to become a BigTIFF file, but otherwise the processing is identical to before. Internally the library will use 64-bit offsets but externally the file will contain 32-bit offsets.

Image data are written to the file as before, with no change. All internal data offsets are 64-bit and all I/O routines have been modified to use 64-bit file offsets; files larger than 2^32 bytes are supported seamlessly.

When a directory is written, if the file is not already in BigTIFF format, note is made whether the directory will be located beyond 2^32 from the start of the file. If so, the file is converted into a BigTIFF file.

The following things are done to convert from standard TIFF to BigTIFF at this point:

  • A new file header is written with the BigTIFF format.
  • Each of the directories which have already been written into the file are rewritten as BigTIFF directories. A new chain of directories is established beginning with a 64-bit offset in the file header. Image data are left in place, only the directories are rewritten. The old 32-bit directories are left as dead space in the file.
  • If a directory contains subdirectories, the subdirectory offsets are updated with 64-bit values to point to the rewritten directories.

After this point, all directories are written with the BigTIFF format, with 64-bit data offsets, 64-bit strip/tile offsets, etc. Subdirectory offsets are written as 64-bit values, and the pointers linking each directory to the next use 64-bit offsets.

The general technique was to leave all data structures and types alone with the exception of offsets within the file. All file offsets are stored internally and processed in the TIFF objects as toff_t (unsigned 64-bit) values.

The library was originally designed to keep tables with file block offsets and lengths in memory. A subsequent update to the BigTIFF version of the library modified this logic to manage block tables in segments. Now only fixed portions of the block tables are kept in memory, paged in and out from the TIFF file on disk; this enables files of any size whatsoever to be processed.

The majority of the API to the TIFF object has remained unchanged. The main change is that the toff_t data type used by some API functions for file offsets was a 32-bit integer, and it has been changed to a 64-bit integer. The API functions which use file offsets are infrequently used so many applications will not require any changes. Applications which use the API functions involving file offsets will require recompilation and may require minor changes to handle 64-bit values for file offsets.

It is possible for a program to use the TIFFSetField and TIFFGetField API functions to access subdirectory offsets. The TIFFTAG_SUBIFD tag formerly used 32-bit values, and now uses 64-bit values for subdirectory offsets. Applications which use TIFFTAG_SUBIFD will require recompilation and may require minor changes to handle 64-bit offsets.

Aperio Slide Viewer

The TIFFOpen function supports two new *optional* modes:

  • '4': force reading and writing standard TIFF file. On input if file is BigTIFF an error is reported. On output if file reaches 2^32 in size, an error is reported.
  • '8': force reading and writing BigTIFF file. On input if file is standard TIFF an error is reported. On output file will be forced to use the BigTIFF format, regardless of size.

A new TIFFIsBigTIFF function has been added which returns whether the current file is a BigTIFF.

The source code has been modified and tested on Win32 (MS and Intel compiler), on Linux (RedHat), and on Mac OS X. Other platform-specific code has not been modified or tested.

The tiffinfo tool which is provided with libtiff has been updated to display file information for both standard TIFF and BigTIFF files. The other tools which are provided with libtiff have not been tested or updated.

Aperio Image Viewer

DateVersionDescription
4/01/20074.0Initial support for BigTIFF, based on official 3.8.2 release.
4/24/20074.0.1Updates to error handling; return GetLastError (Windows) or errno (Linux) in I/O error messages.
3/21/20084.0.2Unix compatibility updates; support Windows 64 under MS Visual Studio 2005
12/18/20114.1Reduce memory footprint by implementing segmented access to block tables; 64-bit support; compatibilty with MS Visual Studio 2010
HEADERS ---- 4.0 ---- tiff.h - define int64 and uint64 data type - redefine TIFFheader as union of standard and BigTIFF formats - redefine TIFFDirEntry as union of standard and BigTIFF forms - define TIFF_LONG8, TIFF_SLONG8, TIFF_IFD8 64-bit data types tiffconf.h - HAVE_INT64 macro (use '__int64' if set, else 'long long') tiffio.h - redefine toff_t data type - define new API functions: TIFFIsBigTIFF TIFFSwabLongLong TIFFSwabArrayOfLongLong tiffiop.h - eliminate typeshift and typemask - define new tif_flags: TIFF_ISBIGTIFF this is a BigTIFF file TIFF_NOBIGTIFF do not process BigTIFF files (error instead) - define new macros: isBigTIFF whether this is a BigTIFF file noBigTIFF whether BigTIFF files are prevented isBigOff whether offset is > 2^32 - define macros to access to directory offset in header TIFFGetHdrDirOff, TIFFSetHdrDirOff - define macros to access directory counts in IFDs TIFFGetDirCnt, TIFFSetDirCnt, TIFFSwabDirCnt, TIFFDirCntLen - define macros to access directory offsets for IFDs TIFFGetDirOff, TIFFSetDirOff, TIFFSwabDirOff, TIFFDirOffLen - define macros to access directory entry data TDIREntryLen, TDIREntryNext TDIRGetEntryCount, TDIRSetEntryCount, TDIRSwabEntryCount TDIRAddrEntryOff, TDIRGetEntryOff, TDIRSetEntryOff, TDIRSwabEntryOff, TDIREntryOffLen - add prototype for _TIFFsetLong8Array tifvers.h - update version to 4.0.0 (20070401) tif_dir.h - remove TIFFInsertData and TIFFExtractData macros ---- 4.1 ---- tiffiop.h - add prototypes for _TIFFGetOffset, _TIFFGetByteCount, _TIFFSetOffset, _TIFFFlushOffsets(TIFF*), _TIFFSetByteCount, _TIFFFlushByteCounts tifvers.h - update version to 4.1.0 (20111201) tif_dir.h - define STRIPBUFMAX macro for size of offsets and byte counts arrays - define new td_strip... data in TIFFDirectory for offsets and byte counts arrays CODE ---- 4.0 ---- tif_dir.c - implement _TIFFsetLong8Array - add 32/64-bit logic for TIFFTAG_SUBIFD - update TIFFAdvanceDirectory, TIFFNumberOfDirectories, TIFFSetDirectory, and TIFFUnlinkDirectory to use macros to access directory chain - Implement TIFFSetSubDirectoryB and TIFFCurrentDirOffsetB functions tif_dirinfo.c - add TIFF_LONG8 variation for TIFFTAG_STRIPOFFSETS - add TIFF_LONG8 variation for TIFFTAG_STRIPBYTECOUNTS - add TIFF_LONG8 and TIFF_IFD8 variations for TIFFTAG_SUBIFD - update TIFFDataWidth and _TIFFDataSize to support 64-bit types tif_dirread.c - update TIFFReadDirectory to use macros to access header fields and directory entries. Also support more than two types for tag. - add 32-bit/64-bit logic for TIFFTAG_SUBIFD - replace TIFFExtractData with TIFFFetch<x>Array calls - update TIFFReadCustomDirectory to use macros to access header fields and directory entries. - replace TIFFFetchStripThing with TIFFFetchByteCounts and TIFFetchOffsets - implement TIFFFetchLong8Array - support 64-bit data types in TIFFFetchData - update TIFFFetch<x>Array functions to support 64-bit data in BigTIFF entries tif_dirwrite.c - update _TIFFWriteDirectory to use macros to access header fields and directory entries. Also support 32-bit or 64-bit stripe/tile offsets. - replace TIFFInsertData with TIFFWrite<x>Array calls - implement TIFFWriteLong8Array - support 64-bit data types in TIFFWriteData - update TIFFWrite<x>Array functions to support 64-bit data in BigTIFF entries - update TIFFRewriteDirectory to use macros to access directory chain - update TIFFLinkDirectory to use macros to access directory chain - implement local TIFFMakeBigTIFF function (convert directories, etc) tif_ojpeg.c - use macro for directory entry length (ugly code in here!) tif_open.c - eliminate use of typemask and typeshift tables - update TIFFClientOpen to support BigTIFF header - support '4' mode to explicitly prevent reading and writing BigTIFF files - support '8' mode to explicitly force reading and writing BigTIFF files - read/write standard or BigTIFF header as required - implement TIFFIsBigTIFF tif_print.c - replace cascading if with switch (!) - support 64-bit data types - support 64-bit directory and file offsets - format stripe/tile offset array as 64-bit toff_t - format SUBIFD array as 64-bit toff_t tif_swab.c - add TIFFSwabLong8 routine - add TIFFSwabArrayOfLong8 routine tif_unix.c - modify Unix API calls to use 64-bit offsets everywhere tif_win32.c - modify Windows API calls to use 64-bit offsets everywhere tif_write.c - modify TIFFSetupStrips and TIFFGrowStrips for 64-bit offsets ---- 4.1 ---- tif_dir.c - initialize new td_strip... data in TIFFDirectory from strip/tile tags tif_dirread.c - setup td_strip... data during tag processing - only check for sorted offsets and byte counts if not read only - use _TIFFGetOffset and _TIFFGetByteCount instead of accessing arrays - change EstimateStripByteCounts for new td_strip... data - implement _TIFFGetOffset and _TIFFSetOffset tif_dirwrite.c - call _TIFFFlushOffsets and _TIFFFlushByteCounts prior to writing directory - set strip/tiole tags from new td_strip... data - implement _TIFFSetOffset, _TIFFFlushOffsets, _TIFFSetByteCount, _TIFFFlushByteCounts tif_ojpeg.c - (deprecated) use _TIFFGetOffset, _TIFFGetByteCount tif_print.c - use _TIFFGetOffset, _TIFFGetByteCount tif_read.c - use _TIFFGetOffset, _TIFFGetByteCount tif_strip.c - use _TIFFGetOffset, _TIFFGetByteCount tif_write.c - use _TIFFGetOffset, _TIFFGetByteCount, _TIFFSetOffset, _TIFFSetByteCount - modify TIFFSetupStrips to defer initialization to _TIFFGetOffset and _TIFFGetByteCount - check offsets and byte counts array locations when growing strip/tile </x></x></x></x>

Aperio Slide Viewer