[XBUP]XBUP - Dokumentace: Formát obrázku

Úvod

Tento dokument je součástí dokumentace projektu eXtensible Binary Universal Protocol. Obsahuje popis formátu pro bitmapová data.

O úroveň výše

Obsah

1. Popis
2. Bitmapa
  2.1. Pixelová plocha
  2.2. Rovina odrazu a pohlcení
  2.3. Bodový poměr
  2.4. Frekvenční mapa
  2.5. Paleta
  2.6. Pole vlastností pixelů
    2.6.1. Pole RGB hodnot
3. Zahrnutí existujících formátů
  3.1. Formát PNG
  3.2. Formát TIFF

1. Popis

Obrázová data ve formě bitmapového obrázku patří mezi data ukládaná tradičně pomocí binárních formátů. Bitmapa je obvykle dvourozměrné pole pixelů, které určují hodnotu barev pro jednotlivé čtvercové či obdelníkové plochy.

Pokud se podíváme více do hloubky, představuje hodnota barvy intenzitu světelných paprsků v normou definovaných částech spektra elektromagnetického záření, v případě běžných obrázků vnímatelných buňkami sítnice lidského oka. Může se také jednat o bitmapu určující jiné části elektromagnetického spektra či jiné fyzikální i nefyzikální veličiny. Příkladem může být retgenový či infračervený snímek, spektrální rozklad, hustota obyvatel na čtvereční metr a podobně.

Pro první variantu bude definován klasický bitmapový obrázek s RGB paletou, který bude později rozšířen o vyjádření fyzikálního významu pomocí transformací a sémantických informací a rozšířen o možnost obecnějšího použití.

1.1. Bitmapový obrázek

Základem bitmapového obrázku je bitmapa. Ta je definována jako konečná dvojrozměrná matice pixelů. Pixel je základní jednotka obrazové informace, která vyjadřuje intenzitu daného paprsku procházejícího/odraženého plochou pixelu. Pro určení vlastností elektromagnetického záření ve viditelném spektru se používá několik druhů

1.x. Přidelený index katalogu

Jednotlivým formátům jsou přidělovány adresy umístění v katalogu.

2. Bitmapa

Bitmapa je blok, který specifikuje, že jeho data představují bitmapový obrázek. Ten pak obsahuje data, které definují barvy.

Obrázek

2.1. Pixelová plocha

Pixelová plocha je rovinné plátno rodělené na obdelníkové pixely. Základní informací je rozměr plátna uvedený jako počet pixelů v souřadnicích. Na této ploše se pak může nacházet nějaký viditelný objekt.

Blok RGBBitmap/PixelPlane

UBENatural - XSize - rozměr plochy X
UBENatural - YSize - rozměr plochy Y
UBPointer - ObjectLink
UBPointer - PixelRation
..

2.2. Bitmapa

Jednou z možných položek je bitmapa

Blok RGBBitmap/ItemBitmap

UBNumber - BitsPerPixel
UBPointer - PixelColorMap
UBNatural - Width
UBNatural - Height
UBIngeter - PositionX
UBInteger - PositionY
UBPointer - Orientation

2.3. Bodový poměr

Bodový poměr určuje velikost jednoho pixelu vzhledem k reálném prostoru ať už pro zobrazení na obrazovce, tiskárně nebo jiném výstupním zařízení. V současné době se používá stále ještě větší množství jednotek, ať už je to např. metr, palec nebo jejich různá odvození.

Blok bude definován až po stanovení bloků a jednotek pro vzdálenost.

2.4. Frekvenční mapa

Tento blok určuje způsob interpretace jednoho stupně a výšky základní frekvence, především pomocí základních fyzikálních jednotek. Cílem je umožnit ukládání bitmapových obrázků i například pro infračervené či rentgenové snímky a jejich automatickou transformaci do viditelné části spektra dle potřeby. Bude dostupné později, až po deklaraci fyzikálních bloků.

2.5. Paleta

Paleta je součástí komprimačního přístupu, který indexům pixelů přiřazuje barvu z tabulky.

Jedná se v podstatě o pole trojic čísel RGB případně později dalších možných hodnot.

V případě obrázků v true-color barevné hloubce se hodnoty pixelů přímo interpretují jako trojice RGB.

2.5.1. Výchozí paleta

Jedna z možných palet slouží pro přímou interpretaci bitových hodnot pixelů jakožto RGB, respektive RGBA hodnoty. Jedná se o tři, respektive čtyři osmibitové hodnoty, tedy červenou, zelenou, modrou a případně alfa kanál. Jedná se o variantu frekvenční mapy.

Blok RGBPalette/DefaultRGBPalette

Blok RGBPalette/DefaultRGBAPalette

Blok RGBPalette/DefaultGScalePalette

Blok RGBPalette/DefaultGScaleAPalette

2.5.2. Indexová paleta

Další možnou variantou je definice palety pomocí tabulky RGB hodnot, přičemž položky bitmapy jsou vyhodnoceny jako indexy do této tabulky.

Blok RGBPalette/RGBPaletteList

UBPointerList RGBIndexes

Uvedené seznamy pak odkazují následující položky:

Blok RGBPalette/RGBPaletteValue

UBRatio Red
UBRatio Green
UBRatio Blue
UBRatio Aplha

2.5.3. Tabulková paleta

Tato paleta je komprimací předchozí varianty.

Blok RGBPalette/RGBPaletteTable

UBNatural IndexCount
UBPointer PaletteData

Ukazatel PaletteData odkazuje datový blok v němž je posloupnost RGBA hodnot reprezentující jednotlivé údaje palety.

2.6. Pole vlastností pixelů

Vlastnosti jednotlivých pixelů jsou definovány pomocí binárního pole, které představuje kompresi vlnových vlastností pomocí volitelného algoritmu. Tím může být například RGB, CMYK, YUI, nebo gray-scale. Navíc i samotné toto datové pole může být dále kompresováno pomocí dalšího algoritmu, ať už ztrátovéno, nebo neztrátového.

2.6.1. Pole RGB hodnot

Příkladem uvedeného pole je pole trojic RGB hodnot o bajtových rozsažích. Osmice bitů vyjadřuje intenzitu vlnové délky ve výsledném světle daného pixelu. 0 - pro nulový podíl, 255 - maximální intenzita.

2.2. Rovina odrazu a pohlcení

Tato rovina je použitelná především pro opticky zobrazitelná data. Jedná se o trinární funkci, která vrací dvě reálné hodnoty v intervalu <0,1>, které určují indexy odrazu a pohlcení. Tři vstupní parametry určují souřadnice a frekvenci. Fyzikální význam je rovina která záření o frekvenci F dopadající do bodu (X,Y) pod libovolným úhlem rozdělí na tři části, a to na část, která projde, část která se odrazí a část, která je pohlcena (absorbována).

- Verze 0: Standard AbsorbingPlane
Tato základní forma používá pouze několik základních vlastností:

UBNatural - RatioIndex
UBNatural - FrequencyMapIndex

3. Zahrnutí existujících formátů

Tato kapitola se snaží uvést vlastnosti existujících bitmapových formátů a způsob reprezentace ekvivalentních vlastností v protokolu XBUP.

3.1. Formát PNG

Portable Network Graphic je dobře dokumentovaný formát bez licenčních omezení, navržený pro široké použití na internetu. Disponuje kvalitní bezstrátovou kompresí a je vhodný pro proudové zpracování. Používá rozšiřitelnou blokovou strukturu a pevné kódování celých čísel s endianitou dle "Network Byte Order".

3.1.1. Kritické bloky PNG

Kritické bloky se musí pro získání obrázku vždy zpracovat. Jsou to následující:

3.1.1.1. PNG Image Header

IHDR blok je povinně umístěn na začátku každého PNG obrázku. Má následující hodnoty:

Width: 4 bytes
Height: 4 bytes
Bit depth: 1 byte
Color type: 1 byte
Compression method: 1 byte
Filter method: 1 byte
Interlace method: 1 byte

Tento blok je řešen následujícím způsobem:
Width, Height jsou reprezentovány pomocí bloku Pixelová rovina.
Bit depth je realizována pomocí FrequencyMapIndex.
Color type má v PNG následující významné bity:
1 - palette used
2 - color used
3 - alpha channel used

Platné hodnoty jsou 0, 2, 3, 4, 6.

3.1.2. Pomocné bloky PNG

Následující bloky nejsou esenciální součástí obrázku, ale mohou být ignorovány, ačkoliv mohou mít na zobrazení vliv.

Poslední tři uvedené bloky používají následující standardní klíčová slova pro textové položky a spadají do bloků informací o vzniku dokumentu.

Title - Short (one line) title or caption for image
Author - Name of image's creator
Description - Description of image (possibly long)
Copyright - Copyright notice
Creation Time - Time of original image creation
Software - Software used to create the image
Disclaimer - Legal disclaimer
Warning - Warning of nature of content
Source - Device used to create the image
Comment - Miscellaneous comment; conversion from GIF comment

Todo: Compresion/Filter/Interlace jsou mutátory, viz. později...

PLTE Palette
Viz. frekvenční mapa

IDAT Image data
Representováno jako normální datový blok

Blok: Standard Palette Bitmap

4. Reference


Homepage: http://xbup.sf.net
License: GNU Free Documentation License (FDL)
Latest update: 2008-08-28