HOME

TheInfoList



OR:

Silicon Graphics Image (SGI) or the RGB file format is the native raster
graphics file format An image file format is a file format for a digital image. There are many formats that can be used, such as JPEG, PNG, and GIF. Most formats up until 2022 were for storing 2D images, not 3D ones. The data stored in an image file format may be c ...
for
Silicon Graphics Silicon Graphics, Inc. (stylized as SiliconGraphics before 1999, later rebranded SGI, historically known as Silicon Graphics Computer Systems or SGCS) was an American high-performance computing manufacturer, producing computer hardware and soft ...
workstations. The format was invented by Paul Haeberli. It can be run-length encoded (RLE).
FFmpeg FFmpeg is a free and open-source software project consisting of a suite of libraries and programs for handling video, audio, and other multimedia files and streams. At its core is the command-line ffmpeg tool itself, designed for processing vide ...
and ImageMagick, among others, support this format.


Background

Common file extensions are: ;.sgi or .rgb: 3 colour channels ; .rgba: 3 colour channels and alpha ;.bw or .int: black and white ;.inta: black and white and alpha This format was originally developed for
IRIX IRIX (, ) is a discontinued operating system developed by Silicon Graphics (SGI) to run on the company's proprietary MIPS architecture, MIPS workstations and servers. It is based on UNIX System V with Berkeley Software Distribution, BSD extensio ...
. The master files of the '' SVT High Definition Multi Format Test Set'' are SGIs. Frame 200 of the ''ParkJoy'' sequence in this set (15722.sgi, 3840×2160, 47.4 MB) was used in
WebP WebP is a raster graphics file format developed by Google intended as a replacement for JPEG, PNG, and GIF file formats. It supports both lossy and lossless compression, as well as animation and alpha transparency. Google announced the WebP ...
comparisons.


Technical Details

SGI image format uses big endian order. The image data scans from left to right from bottom to top.


Header

File Signature/Magic Number Should equal 0x01 0xda for SGI file. Compression 0 if the file is uncompressed; 1 for RLE compression. Bytes Per Pixel Channel Value is 1 for 8 bits per channel ; 2 for 16 bits per channel. Dimension Value is 1 for 1 channel, 1 scanline image ; 2 for 1 channel, multiple scanlines image; 3 for multiple channels, multiple scanlines image (most common). X Size Scanline width in pixels. Y Size Number of scanlines in the image. Number Of Channels Number of channels in the image. Value is 1 for greyscale images; 3 for RGB; 4 for RGBA. SGI supports more than 4 channels. Minimum Pixel Value Smallest pixel value in all channels. Since SGI uses unsigned char or short types for channels, the smallest possible value is typically 0. Maximum pixel value Largest pixel value in all channels. Since SGI uses unsigned char or short types for channels, the largest possible value is typically 0xff for 8 bit/channel and 0xffff for 16 bit/channel. Dummy 4 bytes unused. Image name Image name, 80-byte (maximum 79 characters ≠ 0x00) C string. If the name is shorter than 79 characters, all subsequent bytes are 0x00 to fill the 80-byte space. Color Map ID SGI supports 4 types of color mapping: # 0x00 normal: image has 1 channel (greyscale), 3 channels (RGB) or 4 channels (RGBA). # 0x01 dithered: image has packed RGB. First 3 bits are for R channel, next 3 bits are G channel, and last 2 bits are for B channel. # 0x02 screen: image uses colormap. Pixel data is index in color map and image only have 1 channel. # 0x03 colormap: file only have data for one color map (can use for different image file). This file no have image data. Dummy 404 bytes. Typically unused. Scales the header to 512 bytes long.


Image Data

No Compression Image data starts at byte 512 in file. Data length can be calculated using the following: (X size) × (Y size) × (Num. of channels) × (Bytes per channel) The data is separated for each channel. For example, if an image uses RGBA, the first set of scanlines represents the R channel, the next set of scanlines are for the G channel, then B channel and, lastly, A channel. Therefore, each set of scanlines can be accessed directly via the following formula (where ''C'' = channel index): (X size) × (Y size) × (''C'' ÷ Num. of channels) × (Bytes per channel) RLE Compression Offset tables start at byte 512. Their length can be calculated with the following: (Y size) × (Num. of channels) × 4 bytes long Each unsigned int in a table represents an offset (from file start) to the start of the compressed data of each scanline in each channel. The data is separated for each channel's scanline. If an image has RGBA channels, the order stays R, G, B, and A. Next is the data length table which can also be calculated with the formula: (Y size) × (Num. of channels) × 4 bytes long This table holds the size of the compressed data (unsigned int) of each scanline. This size should equal the difference of numbers in the offset table. The last data block holds RLE compressed image data. If the number of bytes per channel is 1, the compressed data is of unsigned char type. Otherwise, if the number of bytes per channel is 2, the compressed data is of unsigned short type. The last byte of compressed scanline data has a value of 0. In either case of unsigned char or unsigned short, the lowest 7 bits will tell the count. If bit 8 is zero, the count is the number times copy value after count. If bit 8 is one, the count is number times copy series of values after count byte. For 2 bytes/channel image, count and value are unsigned short, and top byte of count always equal zero.


See also

* SGI IRIS


References

{{Silicon Graphics Graphics file formats