1/17
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Wat zijn “Raster Images”? En wat is nog een andere manier om afbeeldingen te beschrijven?
Raster image:
meeste multimedia → content op raster display / device (LCD, OLED …)
rasters komen ook veel voor in input devices voor images
meest gebruikte manier op afbeeldingen op te slaan en te verwerken
device-independent beschrijving van de weertegeven afbeelding
scherm resolutie meestal anders dan image resolutie
display devices approximeren de ideale afbeelding
Vector image:
Contain descriptions of shapes and/or areas of color bounded by lines or curves
geen referentie naar een of andere pixel grid
instructies voor display ipv de pixels zelf
these images are resolution-independent
moeten rasterized worden voordat ze gedisplayed kunnen worden (SVG)
Raster devices: Displays (2 mogelijkheden)
transmissive: liquid crystal display
Use a backlight that goes through the ‘pixel array’
backlight dat licht zend door de pixel array
liquid crystal
onder spanning de polarisatie roteren
aantal licht dat erdoor kan aanpassen: 0° → 90°
emissive: light-emitting diode (LED) display
Directly emit controllable amounts of light,
met verschillende intensities, afhankelijk van de stroom
light-emitting diodes based (inorganic or organic semiconductors)
3 onafhankelijk bestuurbare subpixels
Raster devices: Hardcopy (2 mogelijkheden)
Ink-jet Printers (binary)
print head contains liquid ink carrying pigment
can be sprayed in very small drops under electronic control (binary)
resolution determined by the ‘dot’ density (e.g., 1200 dots per inch (dpi)) high resolutions are desirable to avoid ‘staircase effects’ or aliasing (use of dithering (see later))
Continuous Tone Printing (Laser printing)
Thermal dye transfer process
donor ribbon met gekleurde inkt
print head containing a linear array of heating elements
higher temperatures cause more dye to be transferred
varying amounts of dye can be deposited at each ‘pixel’
resolution determined by pixel density (e.g., 300 pixels per inch (ppi))
Hoge resoluties zijn wenselijk om tussentinten te simuleren door puntpatronen met variërende dichtheid te printen (zogenaamde halftonen).
Leg Dithering en ordered dithering uit. (Raster devices stuk)
stappen
Dithering
dithering wordt gebruikt om patronen van puntjes te berekenen zodat pixel waarden (0-255) overeenkomen met patronen die meer gevuld (meer punten) zijn voor donkere pixel waarden
→ printen met 1-bit printer
het patroon simuleert hoe lichte/donkere tinten ontstaan door meer of minder stipjes, net als bij klassieke halftoondruk
hierdoor wordt de grootte van de foto veel groter
iedere pixel door een 4×4 array van punten
2^4 keer groter
stappen
ramap de image values in [0, 255] into the new range (bv [0,4]) by integer dividing
als pixel waarde = 4 (“white”) → print niets in een 2×2 area
pixel waarde = 0 (“back”') → print de 4 dots
Ordered Dithering
gebruikt een vaste dither matrix
oplossen van probleem dat image size veel groter wordt
4×4 maakt de image 4² = 16 keer groter
An "ordered dither" consists of turning on the printer output bit for a pixel if the intensity level is smaller than the particular matrix element just at that pixel position
de matrix over de afbeelding / pixels schuiven
zie voorbeeld in cursus p21
Raster Devices: Input devices
Digital cameras
Each pixel of the sensor measures the light energy falling on it (CCD or CMOS sensor technology)
‘Pixels’ are allowed to see only red, green or blue light
via color filters, e.g., (Bayer) mosaic
via separate pixel arrays or layers of arrays (e.g. 3-CCD/3-CMOS)
laten image processing software de missende waarden invullen
Images and pixels
algemeen:
waarom
wat is een pixel
pixel values:
hoe opgeslagen
wat is clipping
wat is banding/quantization
monitor intensities and gamma
wat betekent gamma correctie hier specifiek?
Images and pixels:
voor berekeningen op computer → gemakkelijke abstractie dat onafhankelijk is van de specifics van een apparaat
kunnen gebruiken om te redeneren over hoe de waarden van fotos te produceren
A pixel value is a local average of the color of the image, and it is called a point sample of the image
The idea of images as sampled representations of functions is a core aspect in image signal processing (strongly related to sampling theory)
Pixel values:
conceptueel: fotos = array van floating point nummers → 1/pixel voor grayscale + 3 voor kleur
kan zo gedaan worden als precisie / range of vales nodig zijn
hdr (high dynamic range): images met floating point nummers
ldr (low dynamic range): fotos opgeslaan met integers
However, devices always have a finite maximum, so intensity values are bounded, say [0,1]
Storage is important, so for we typically choose a number of bits
e.g., 8 bit: 256 different intensity levels
clipping: intensities brighter than the maximum are clipped to the maximum
banding/quantization: abrupt changes in intensity levels or color due to low precision encoding and rounding pixel values to nearest representable value
monitor intensities / gamma
monitor intensities and gamma
alle moderne monitors nemen de digitale input voor de waarde van een pixel en zetten dit om naar en intensiteit level
Monitors are nonlinear with respect to input (!)
input: 0, 0.5, and 1 for three pixels
displayed intensities might be 0, 0.25, 1
tonen donkere waarden te donker
zorgen dat wat zien overeenkomt met wat bedoeld is
benaderde karakterisatie van deze niet-lineariteit wordt gedaan door een gamma waarde zodat:
Gamma can be derived visually
de waarde = de gamme als gerasteriseerd zwart / wit op scherm is
even veel zwarte blokken als witte
Once we know gamma, we can gamma correct our input so that a value of a = 0.5 is displayed with intensity halfway between black and white:
Leg kort RGB color space uit. (Komt nog aanbod in H3)
RGB color space is displayed by mixing 3 primary colors/lights
Common practice to use 8 bit per color channel
24-bit color images (see later)
256 intensity levels per primary light/color
gamma correction applied to each color channel separately
note: verschil scherm en papier:
Wat is Alpha Compositing (kort)?
combineren van een voorgrond en een achtergrond foto (volledig / deels transparante pixels)
bvb png met transparante background over andere foto plaatsen.
Alpha (α) = mate van transparantie (0 = volledig transparant, 1 = ondoorzichtig)
Kleurcombinatieformule:
c = α · cf + (1 − α) · cb
→ cf = kleur voorgrond, cb = achtergrond
Toepassing bij bijv. schaduwen, glas, antialiased randen
Wordt opgeslagen als:
apart alfakanaal (masker)
RGBA-afbeelding (bv. PNG met 4 × 8-bit = 32 bits per pixel)
alpha mask / trasparency mask: waarden voor de pixels in een image kunnen worden opgeslaan als een aparte grayscale image
misvattingen
nietlineariteit van een CRT-monitor is een fout
de niet-lineariteit komt juist overeen met hoe ons oog gevoelig is voor licht, het zorgt ervoor dat de CRT visueel gelijkmatig reageert
geen fout maar eigenschap
gamma-correctie er is om die CRT-non-linearity recht te trekken
gamma correctie wordt gebruikt om licht- of kleurwaarden zo te coderen dat ze optimaal passen in een beperkt aantal bits, met behoud van hoe wij dat visueel waarnemen,
codering niet compensatie
Image Storage
noem enkele populaire formaten en verklaar kort (5)
leg volgende soorten x-bit images uit
1-bit grayscale images
8-bit grayscale images
24-bit color Images
multispectral images
higher bit-depth images
populaire formaten:
BMP: bitmap raster image format
8-bit GIF: one of the first important formats
historical connection to the WWW and HTML markup language
first image type recognized by web browsers
‘revival’ of this rather old format on social media
JPEG: currently the most important common file format
PNG: most popular lossless image format
TIFF: flexible file format due to the addition of tags
can actually contain different types of data representations and/or compression schemes
x-bit images:
1-bit grayscale images
Each pixel is stored as a single bit (0 or 1), so also referred to as binary image
Such an image is also called a 1-bit monochrome image since it contains no color
8-bit Grayscale Images
Each pixel is usually stored as a byte (a value between 0 to 255)
When an image is printed, the basic strategy of dithering is used
24-bit Color Images
In a 24-bit color image, each pixel is represented by three bytes, usually representing RGB. (256x256x256 possible combined colors)
An important point: many 24-bit color images are actually stored as 32-bit images, with the extra byte of data for each pixel used to store an alpha value representing special effect information (e.g., transparency).
Each color channel can be visualized as a grayscale image
multispectral images
using special cameras that view more than just three colors
invisible light, higher-dimensional medial images, satellite imaging
images called multispectral (> 3 colors) or hyperspectral (many image planes)
Higher bit-depth images
More information about the scene can be gained by using more accuracy by using higher pixel depths
more bit for color channel values
higher range and/or more precision
High Dynamic Range (HDR)
HVS covers 10-14 stops (f-stops – related to contrast ratio (log2)) up to 20 or more with adaptation
SDR is around 8 f-stops
Medical images often require 16-bit grayscales
Paletted images
8-bit color images
Color look up tabels (LUT’s)
wat?
wat heeft dithering hier mee te maken?
8-Bit Color Images: Paletted Images
veel systemen maken gebruik van 8 bits (256 kleuren) voor kleur informatie bij het maken van een scherm image
gebruiken lookup table to store color information.
ze slaan geen kleuren op, maar een set bytes
bytes = index in een tabel met 3-byte waarden die de kleur voor een pixel specifieren
Color Look-up Tables (LUTs)
The idea is to store only the index, or code value, for each pixel. Then, e.g., if a pixel stores the value 25, the meaning is to go to row 25 in a color look-up table (LUT).
Als exact 23 pixels de RGB-waarde (45, 200, 91) hebben, dan sla je de waarde 23 op in een driedimensionale array, op de plek met index [45, 200, 91].
color dithering is vaak nodig omdat je met een CLUT werkt en dus niet direct de gewenste kleur kan tonen: → kleuren mengen door slimme pixel patronen →lijken er meer kleuren dan dat je uit je lut kan halen
geven grote opslag voordelen om 8-bit fotos op te slaan ipv 24-bit
However, what if there are more than 256 distinct colors in the original?
wat als meer dan 256 verschillende kleuren zijn in het origineel
color dithering → aantal bits dat de foto gebruikt verminderen maar zelfde uitzien (gebruikt minder kleuren)
Hoe stel je een Color look-up tabel op? (3 manieren)
uniform quantization
popularity-based approach
median-cut
uniform quantization:
De meest eenvoudige manier om 8-bit look-up kleuren te maken uit 24-bit kleuren is door de RGB-kubus in gelijke stukken te verdelen in elke dimensie.
Popularity-based approach (populariteitsgebaseerde aanpak)
Lijkt op uniforme kwantisatie, maar vaak met kleinere kubussen.
Median-cut algorithm:
simple solution that provides better quality (not a single algorithm, but rather a set/family/type of approaches)
partitioning schema dat de bits op de plekken zet waar ze het meest nodig / clustered zijn
Levert beste kwaliteit van de drie.
uniform quantization
De meest eenvoudige manier om 8-bit look-up kleuren te maken uit 24-bit kleuren is door de RGB-kubus in gelijke stukken te verdelen in elke dimensie.
De centra van de gevormde kubussen worden de ingangen in de color LUT
Door RGB-bereiken 0..255 te schalen naar kleinere bereiken, krijg je 8-bit codes.
Omdat mensen gevoeliger zijn voor R en G dan voor B:
verklein je het R- en G-bereik van 0..255 naar een 3-bit bereik 0..7;
verklein je het B-bereik naar een 2-bit bereik 0..3, samen 8 bits totaal.
Om R en G te verkleinen, deel je simpelweg de R- of G-bytewaarde door (256/8)=32 en neem je het geheel getal.
Elk pixel in het beeld wordt dan vervangen door zijn 8-bit index, en de color LUT gebruikt die index om de volledige 24-bit kleur te genereren.
probleem: color banding
kleurbereik sterk beperkt:
24-bit → ~16 miljoen kleuren
8-bit LUT → maar 256 kleuren
Daardoor vallen veel subtiele overgangen (bijv. in schaduwen of lucht) weg → je ziet abrupte sprongen tussen kleurzones → color banding.
Popularity-based approach
Popularity-based approach (populariteitsgebaseerde aanpak)
Lijkt op uniforme kwantisatie, maar vaak met kleinere kubussen.
De 256 (bij 8-bit) meest gevulde kubussen worden behouden in de LUT (bijvoorbeeld één kleur per kubus).
Als een niet-lege kubus niet geselecteerd is, wordt zijn index gemapt naar de dichtstbijzijnde in de LUT (bijvoorbeeld op basis van Euclidische afstand).
Banding is nog steeds aanwezig, maar minder erg.De popularity-based approach (populariteitsgebaseerde aanpak) is een methode om een color lookup table (LUT) op te bouwen voor het beperken van het aantal kleuren in een afbeelding. Hieronder leg ik het helder en stap voor stap uit:
Wat is het doel?
We willen een afbeelding hercoderen met bijvoorbeeld slechts 256 kleuren (zoals bij 8-bit afbeeldingen), terwijl het origineel veel meer kleuren heeft. Dat doen we via een LUT.
Hoe werkt de popularity-based approach?
Verdeel de kleurruimte in kleine blokjes (kubussen)
De kleurruimte (bijvoorbeeld RGB) wordt opgedeeld in een 3D-raster van kleine kubussen. Elke kubus bevat een aantal kleuren die “bij elkaar in de buurt” liggen.
Tel hoeveel kleuren er in elke kubus voorkomen
Je scant de afbeelding en houdt bij hoeveel keer er een kleur voorkomt in elk van die kubussen.
Kies de 256 meest populaire kubussen
Je selecteert de 256 kubussen met de meeste kleuren erin. Uit elke van deze kubussen kies je dan één representatieve kleur (vaak het gemiddelde of de meest voorkomende kleur in die kubus). Deze vormen je LUT.
Voor kleuren die niet in de top-256 vallen
Als een kleur in de afbeelding in een kubus valt die niet geselecteerd is, dan wordt die kleur toegewezen aan de dichtstbijzijnde kleur in de LUT (bijvoorbeeld via Euclidische afstand in RGB-ruimte).
Voordelen:
Simpel en efficiënt.
Werkt goed bij beelden met veel herhaling van bepaalde kleuren.
Nadelen:
Banding (abrupte kleurovergangen) kan nog steeds voorkomen, maar is minder erg dan bij uniforme kwantisatie.
Kan kleuren met lage frequentie volledig negeren, zelfs als ze visueel belangrijk zijn.
Laat me weten als je ook een visueel voorbeeld of pseudocode wil.
Median-cut algorithm
Median-cut algorithm: simple solution that provides better quality (not a single algorithm, but rather a set/family/type of approaches)
sort the byte values of a color channel and find their median;
values smaller than the median are labelled with a “0” bit
values larger than the median are labelled with a “1” bit
This type of scheme will concentrate bits where they most need to differentiate between high populations of close colors
One can most easily visualize finding the median by using a histogram showing counts at position 0..255.
Figure shows a histogram of the R byte values for the forestfire.bmp image along with the median of these values, shown as a vertical line
More detailed overview of (a possible) Median-cut algorithm
Find the smallest box that contains all the colors in the image
Sort the enclosed colors along the longest dimension
de byte waarden van 1 kanaal, kan gekozen worden op verschillende manieren, variantie / …
Split the box into two regions at the median of the sorted list
waarden < median = 0
waarden > median = 1
Repeat two previous steps until the original space is divided into the desired number of regions (cf. number of target bits)
For every box, pick the representative color (e.g., mean of R, G, and B)
For every pixel in the (original) image: replace pixel value by the LUT code corresponding to the ‘nearest’ representative color
Levert beste kwaliteit van de drie.
Wat is GIF? Bespreek GIF file format (figuur).
GIF (= Graphics Interchange Format)
- GIF-standaard: (We bekijken de GIF-standaard omdat ze zo simpel is! maar toch veel algemene elementen bevat.)
- Beperkt tot (maximaal) 8-bit (max 256) kleurenbeelden, wat weliswaar aanvaardbare kleurenbeelden oplevert, maar het best geschikt is voor beelden met weinig verschillende kleuren (bijv. grafieken of tekeningen).
- GIF-standaard ondersteunt interlacing — opeenvolgende weergave van pixels in breed verspreide rijen via een 4-pas weergaveproces.
- GIF bestaat eigenlijk in twee smaken:
○ GIF87a: de originele specificatie.
○ GIF89a: de latere versie. Ondersteunt eenvoudige animatie via een Graphics Control Extension-blok in de data, biedt eenvoudige controle over vertragingstijd, een transparantie-index, enz.
screen descriptor
comprises een set attributen die gelijk is voor iedere file
color map
de color lookup table waarin de kleuren opgeslaan zijn
de lengte = 2^(pixel + 1) zoals gegeven in de screen descriptor
image descriptor
blok met info over één beeld in de GIF
Bevat o.a.:
linksboven x, y positie
breedte, hoogte
flags (zoals local color table aanwezig, interlaced, etc.)
Het vjertelt hoe en waar dat beeld moet getoond worden binnen het canvas.
Bespreek kort enkele andere image formaten:
jpeg
png
tiff
JPEG
The most important current standard for image compression
The human vision system has some specific limitations and JPEG takes advantage of these to achieve high rates of compression
JPEG allows the user to set a desired level of quality, or compression ratio (input divided by output)
voorbeeld dia 67-68
PNG – Portable Network Graphics
Meant to supersede the GIF standard
extends it in important ways
Special features of PNG files include:
Support for up to 48 bits of color information — a large increase (i.e., up to 16 bit per color channel).
Files may contain gamma-correction information for correct display of color images, as well as alpha-channel information
TIFF - Tagged Image File Format
Support for attachment of additional information (referred to as “tags”) provides a great deal of flexibility
the most important tag is a format signifier: what type of compression etc. is in use in the stored image.
TIFF can store many different types of image: 1-bit, grayscale, 8-bit color, 24-bit RGB, etc.
TIFF was originally a lossless format but now a JPEG tag allows one to opt for JPEG compression.
the TIFF format was developed by the Aldus Corporation in the 1980's and was later supported by Microsoft.
Wat is S3 Texture Compression?
S3 Texture Compression (S3TC) – DXT1Wat is het?
S3TC is een groep compressie-algoritmes ontwikkeld door S3 Graphics om texturen efficiënt te comprimeren voor hardwareversnelde 3D-graphics.
Voordeel: snelle random access tot individuele pixels (texels)
Gevolg: ideaal voor real-time rendering, want enkel zichtbare delen van de textuur moeten ingelezen worden
lossy → kwaliteit is goed gng
LUT-gebaseerde compressie
Rendering 3D Graphics (context)
Een 3D-model bestaat uit geometrie (mesh) en texturen
Texturen worden op het model geprojecteerd via UV-coördinaten
Efficiënte opslag en toegang tot texturen zijn cruciaal voor performantie
Hoe werkt DXT1?
Kernidee: elk blok van 4×4 pixels (16 texels) → 64 bits gecomprimeerde data
Inhoud van een blok:
Twee 16-bit kleurenwaarden (RGB 5:6:5) → c₀ en c₁
Eén 4×4 lookup table van 2 bits per pixel → 32 bits
Kleurinterpolatie:
Als c₀ > c₁:
c₂ = (2/3)·c₀ + (1/3)·c₁
c₃ = (1/3)·c₀ + (2/3)·c₁
Als c₀ ≤ c₁:
c₂ = (1/2)·c₀ + (1/2)·c₁
c₃ = transparant
Per pixel wordt een index (0–3) uit de LUT gehaald → bepaalt of de pixel c₀, c₁, c₂ of c₃ krijgt.
Toy Example
De getoonde blokken illustreren hoe blokken met felle kleuren worden vereenvoudigd in DXT1, waarbij sommige overgangen worden afgevlakt of details verloren gaan, maar de algemene kleurstructuur behouden blijft.
Laat weten als je dit wil in schema- of bulletvorm voor notities.