Håll-och-ändra-läge

Den Hold-And-Modifiera-läge (HAM-läge) är ett visningsläge av grafik styrkretsar av den Amiga plattform för att visa 12- bitars och 18-bitars bilder med endast 6 eller 8 bitar per bildpunkt . En speciell hårdvaruimplementerad datakomprimering används för att spara minnesbandbredd.

Om det finns en CaMg bit i en IFF bildfil , kan det här läget identifieras vid den 11: e bit.

Det finns två varianter av HAM -läget:

  • HAM- eller HAM6 -bilder kan visa 4096 färger och använda sex bitar per pixel och en färgpalett med 16 färger.
  • HAM8-läget introducerades med Amiga 4000 och Amiga 1200 och erbjuder en mycket bra, fotoliknande bildkvalitet med bara åtta bitar per pixel och en grundpalett med 64 färger. I det här läget kan nästan lika många färger från 24-bitars spektrum visas som passar i chip-RAM (minus den första pixelkolumnen) och som bildupplösningen tillåter.

Färgen på en pixel i HAM-läge kan vara valfri färg på 12-bitars färgpalett för HAM6 eller 24-bitars färgpalett för HAM8. Alternativt kan pixelns färg direkt till vänster antas, varigenom en av de tre färgkomponenterna i RGB -färgutrymmet (rött, grönt, blått) sätts till ett nytt värde. Kantfärgen antas på bildens vänstra sida (färgindex 0 på färgpaletten). Obs: Videomaskinvaran börjar inte med den första pixeln i ett bitplan , utan bara med den första synliga pixeln, vilket gör en (oattraktiv) skillnad i hårdvaruscrollning (virtuell eller överdimensionerad skärm).

Denna process harmoniserar med egenskaperna hos tv -signaler (FBAS) så att den förlorade datakomprimeringen inte leder till kvalitetsminskning.

I HAM -bildfiler lagras pixeldata i BODY -delen som en kod, som är uppdelad i läget och de återstående bitarna. Den kodning av de pixlar motsvarar det format som används av videomaskinvaran.

läge menande
00 Index i färgpaletten
01 Ändring i den blå komponenten
10 Ändring av den röda komponenten
11 Förändring av den gröna komponenten

Om en pixel inte representerar en färg på paletten (läge 00) kan endast det nya värdet för ett av de tre RGB -värdena anges. De andra två värdena är desamma som i föregående pixel. Om pixeln är den första på en bildrad, antas den föregående pixeln vara en RGB -triplett (0, 0, 0) (till skillnad från videohårdvaran, se ovan).

Lägesformat och databitar för en pixel i HAM6 -läge:

543210
00wxyz – Farbindex wxyz in eine 16 Einträge lange Basisfarbenpalette
01wxyz – Behalte den Farbwert des vorherigen Pixels, aber setze die (obersten) vier Bit von Blau auf wxyz
10wxyz – Behalte den Farbwert des vorherigen Pixels, aber setze die (obersten) vier Bit von Rot auf wxyz
11wxyz – Behalte den Farbwert des vorherigen Pixels, aber setze die (obersten) vier Bit von Grün auf wxyz

En HAM -bild kan inte avkodas direkt till en bild med 256 färger eller färre utan att först göra en färgreducering. För att få full kvalitet behöver du minst en 12-bitars bild.

Om du vill konvertera en bild som finns i 256 eller fler färger till en HAM -bild, letar du först efter den optimala grundpaletten för denna bild, med vilken så många punkter i bilden som möjligt kan visas direkt eller med endast mindre avvikelser. När baspaletten väl har bestämts går man igenom bilden rad för rad och optimerar för varje pixel om den bäst kan representeras av en av de grundläggande palettfärgerna eller, ännu bättre, av en HAM -modifiering av föregående pixel (en av de tre RGB -färgkomponenterna till önskad värdeuppsättning). Utvärderingen utförs genom att beräkna avståndet i 3D -färgutrymmet mellan bildpixeln och respektive bas eller HAM -kandidat. Detta är så allmänt sant för både HAM6 och HAM8.

Antalet databitar är fyra för standard HAM6 och sex för HAM8. Antalet bitplan i BMHD -delen är sex eller åtta. Om en HAM-bild ska visas som en 24-bitars bild, bör databitarna (fyra eller sex) expanderas till åtta bitar. Det maximala värdet bör konverteras till 255 med åtta bitar per RGB -kanal.

Lägesformat och databitar för en pixel i HAM8 -läge:

76543210
00uvwxyz – Farbindex uvwxyz in eine 64 Einträge lange Basisfarbenpalette
01uvwxyz – Behalte den Farbwert des vorherigen Pixels, aber setze die obersten sechs Bit von Blau auf uvwxyz
10uvwxyz – Behalte den Farbwert des vorherigen Pixels, aber setze die obersten sechs Bit von Rot auf uvwxyz
11uvwxyz – Behalte den Farbwert des vorherigen Pixels, aber setze die obersten sechs Bit von Grün auf uvwxyz

HAM8-bilder måste konverteras till 24-bitars bilder för att behålla full bildkvalitet på icke-Amiga-system.

För att verkligen kunna visa alla färger på 24-bitars paletten i HAM8-läge måste de 64 färgerna i grundpaletten förtilldelas på ett sådant sätt att de 64 möjliga kombinationerna av de lägsta två bitarna av alla färgkomponenter täcks exakt. Sedan kan du använda HAM-mekanismen för att nå alla färger i 24-bitars paletten från dessa grundläggande färger. Antalet färger som kan visas samtidigt begränsas bara av storleken på chipets RAM -minne . Den senare är två megabyte, så att du kan visa cirka 2 miljoner olika färger på en HAM8 -bild. (Olika andra belopp går från chipet RAM, för Workbench och olika datastrukturerna för det operativsystem som måste vara i chippet RAM.)

syn

Det har länge varit föremål för diskussion att ersätta detta HAM -läge, som är baserat på RGB -färgrepresentation, med ett motsvarande läge baserat på HSV -färgutrymmet (nyans, mättnad, ljusstyrka), från vilket man har ännu högre komprimeringsalternativ och / eller ännu mer lovade bättre bildkvalitet. HAM -läget är dock inte längre nödvändigt på nuvarande datorer på grund av de lägre RAM -priserna och den snabbare grafikhårdvaran, så att dessa överväganden hittills inte har lett till en praktisk implementering .

Se även