OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 16.04.2024, 20:51

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 171 ]  Přejít na stránku 1, 2, 3, 4, 5 ... 12  Další
Autor Zpráva
 Předmět příspěvku: Konverter do Atari palety
PříspěvekNapsal: 06.12.2013, 19:38 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 23:38
Příspěvky: 541
Bydliště: Praha
Has thanked: 393 times
Been thanked: 122 times
Pokouším se naprogramovat malou aplikaci, která umožní snadno přepracovávat grafiku do pixelové Atari podoby. Je to v podstatě konverter do Atari barev, ale nedaří se mi doladit identifikaci barvy z 32-bit hloubky.

Zatím nejosvědčenější - ale přitom špatný - je tento výpočet:

Každá Atari barva z 256 dostane přidělené číslo výpočtem R^3+G^2+B. Barva, která je pak zjištěná z 32-bit hloubky, se vypočte stejně a hledá se k ní nejbližší číslo z té palety Atari barev. Když se najde, zobrazí to přesně tu barvu z palety Atari. A tak pořád dokola.

Příklad:
R=64
G=26
B=2

64^3+26^2+2=262822

Ve většině případů se barva strefí, ale právě tím, že díky mocninám vznikají velké propady mezi nima, vybere to občas tu nesprávnou (i když matematicky nejbližší). Myslel jsem si, že to bude fungovat, ale nefunguje.

Tady jsou první výsledky. Např. takhle zatím dopadá konverze ze ZX do Atari:

Příloha:
konverze1.png
konverze1.png [ 20.36 KiB | Zobrazeno 13167 krát ]


A takhle dopadla třeba fotka:

Příloha:
konverze2.png
konverze2.png [ 33.41 KiB | Zobrazeno 13167 krát ]


Nenapadá někoho, jak to udělat? :roll:

_________________
https://zxretrosoft.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 06.12.2013, 20:22 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
nemas nejak chybnu v tom generovani prevodnej palety?

osobne by som ju skor ukradol z emulatora ako tento. alebo si to opilsal od niekoho kdo to uz vypocital. A potom povodny obrazok prehodil do 24 bit rozlisenia a hladal najblizsie z toho

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 06.12.2013, 20:41 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:40
Příspěvky: 1923
Bydliště: Olomouc
Has thanked: 897 times
Been thanked: 693 times
ono to s paletou na 8bit Atari neni jednoduche. Problem je, ze se lisi paleta i na strojich z ruznych regionu. Plnych 256 barev ma pouze NTSC verze. PAL verze ma jednu sadu 16 odstinu 2x a SECAM verze ma barev jeste min.

Ani v emulatorech neni s paletami uplne jasno. Mam pocit, ze jedna z nich vznikla dokonce merenim hodnot z realneho Atari. Uplne na 100% ale podle me neni ani jedna.

Takze se obavam, ze to takhle nespocitas. Asi bude dobre nacist si nekterou z palet a vyzkouset to. Kazdopadne budes muset brat v potaz i region.

_________________
www.krupkaj.cz ~ www.atariportal.cz ~ jaysoft.atari.org
:busybee:


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 06.12.2013, 20:49 
Offline
Profík

Registrován: 27.07.2013, 13:24
Příspěvky: 903
Has thanked: 25 times
Been thanked: 125 times
100% jediná správná paleta asi nebude nikdy, když stačí pohnout tím trimrem u GTIA a všechny barvy se posunou.

Ale teď nevím, jestli psát další konvertor není zbytečné, když už existují i takové, co nejen, že přímo generují Atari paletu, ale i DL s různými triky a prokládanými režimy.

_________________
Atari 600XL, 800XL/XE, 130XE, ST, STE, MegaST, 7800, JaguarCD, Commodore C64, Amiga 500/Plus, 1200, CDTV, Sinclair QL + GC, Sharp MZ800, Sord M5, CPC 6128, Spectravideo SVI X'Press, Sony HB-750, Philips CDi 370, Ohio Scientific Challenger, Eureka.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 06.12.2013, 20:50 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 23:38
Příspěvky: 541
Bydliště: Praha
Has thanked: 393 times
Been thanked: 122 times
ctirad píše:
Ale teď nevím, jestli psát další konvertor není zbytečné, když už existují i takové, co nejen, že přímo generují Atari paletu, ale i DL s různými triky a prokládanými režimy.


Odkaz prosím.

_________________
https://zxretrosoft.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 06.12.2013, 20:53 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 23:38
Příspěvky: 541
Bydliště: Praha
Has thanked: 393 times
Been thanked: 122 times
No, to je všechno pravda, ale berte to teď, prosím, jako programátorský příklad.

Paletu jsem našel tuhle a podle ní jsem to dělal (nevím už kde jsem ji stáhl).
Příloha:
atari-256-colour-palette.png
atari-256-colour-palette.png [ 4.68 KiB | Zobrazeno 13145 krát ]


Tak, a otázka zní: Mám 16777216 barev na jedné straně a 256 barev na straně druhé. Jak jinak (než jsem to udělal já, viz výše) to naprogramovat, aby každá z těch 16777216 barev se vešla do nějaké množiny oněch 256 barev.

Tj. každá množina 256 barev musí zastupovat všech 65536 barev v nejbližším okruhu.

_________________
https://zxretrosoft.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 07.12.2013, 13:30 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 23:38
Příspěvky: 541
Bydliště: Praha
Has thanked: 393 times
Been thanked: 122 times
Už jsem docela blízko, záleží na tom, jak definujete těch 65536 barev v nejbližším okruhu. Zatím to mám jen lineárně a už je to slušně blízko:
Příloha:
konverze3.PNG
konverze3.PNG [ 20.41 KiB | Zobrazeno 13106 krát ]


Čísla u cyklů jsou definice řádek barev z palety Atari:

Kód:
'1
For i=1 To 16
  pal(i)=i*1.1184e6-1.118e6
Next i
'2
For i=17 To 32
  pal(i)=i*3816.6-56659.2
Next i
'3
For i=33 To 48
  pal(i)=i*111832.866-3.421e6
Next i
'4
For i=49 To 64
  pal(i)=i*272240.4-1.254e7
Next i
'5
For i=65 To 80
  pal(i)=i*28.2-1719
Next i
'6
For i=81 To 96
  pal(i)=i*2.3265e6-1.856e8
Next i
'7
For i=97 To 112
  pal(i)=i*45137.266-3.669e7
Next i
'8
For i=113 To 128
  pal(i)=i*930611.2-1.024e8
Next i
'9
For i=129 To 144
  pal(i)=i*491254.4-5.544e7
Next i
'10
For i=145 To 160
  pal(i)=i*723129.8-9.894e7
Next i
'11
For i=161 To 176
  pal(i)=i*232397.866-2.413e7 'i*728341.2-1.114e8
Next i
'12
For i=177 To 192
  pal(i)=i*3123.2-5.343e5
Next i
'13
For i=193 To 208
  pal(i)=i*154815.666-2.986e7
Next i
'14
For i=209 To 224
  pal(i)=i*7830.6-1.622e6
Next i
'15
For i=225 To 240
  pal(i)=i*168047.6-3.72e7
Next i
'16
For i=241 To 256
  pal(i)=i*246503.466-5.926e7
Next i


Světle modrá se musí nastavit citlivěji, protože je vlastně hodně příbuzná s bílou, tak to v té škále zatím supluje bílá.

_________________
https://zxretrosoft.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 07.12.2013, 13:40 
Offline
Profík

Registrován: 27.07.2013, 13:24
Příspěvky: 903
Has thanked: 25 times
Been thanked: 125 times
Jeden z těch converterů je tady: https://github.com/ilmenit/RastaConverter

Ale jsou určitě ještě alespoň dva. Bohužel nejsem grafik, takže nemám detailní přehled.

Co se týče samotných barev, ten algoritmus by se měl opírat o nějaké kvantizační tabulky pro "nearest color" sestavené na základě lidského vnímání obrazu. A taky spíš než v RGB by to mělo pracovat odděleně s jasovou a barvovou složkou, protože oko je daleko víc citlivé na změny jasu než na barvy. Ono udělat to dobře bude celá věda.

_________________
Atari 600XL, 800XL/XE, 130XE, ST, STE, MegaST, 7800, JaguarCD, Commodore C64, Amiga 500/Plus, 1200, CDTV, Sinclair QL + GC, Sharp MZ800, Sord M5, CPC 6128, Spectravideo SVI X'Press, Sony HB-750, Philips CDi 370, Ohio Scientific Challenger, Eureka.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 07.12.2013, 13:48 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 23:38
Příspěvky: 541
Bydliště: Praha
Has thanked: 393 times
Been thanked: 122 times
ctirad píše:
Co se týče samotných barev, ten algoritmus by se měl opírat o nějaké kvantizační tabulky pro "nearest color" sestavené na základě lidského vnímání obrazu. A taky spíš než v RGB by to mělo pracovat odděleně s jasovou a barvovou složkou, protože oko je daleko víc citlivé na změny jasu než na barvy. Ono udělat to dobře bude celá věda.


jj, to je pravda, tohle je fakt hodně složitý a mělo by to pracovat s tím lidským vnímáním. Celá řada těchto věcí se nicméně dá suplovat třeba logaritmickou regresí (já to mám prostě jen lineárně) nebo nějakou složitější rovnicí (excel umožňuje sestavit automaticky rovnici až na šestou!). Je ale fakt, že by to bylo hrozně práce s nejistým výsledkem, nevím, zda by i složitější rovnice postihla třeba rozdíl mezi světle růžovou a světle modrou, velmi blízké barvy, které lidské oko vnímá ale naprosto rozdílně.

_________________
https://zxretrosoft.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 07.12.2013, 14:19 
Offline
Profík

Registrován: 27.07.2013, 13:24
Příspěvky: 903
Has thanked: 25 times
Been thanked: 125 times
Já myslím, že to bez ohledu a matematický aparát, když člověk nemá tabulku, kde jsou barvy seřazené opravdu podle toho jak je vnímá člověk a ne podle toho, jak jsou naindexované v nějaké paletě, tak se nikam nedostane. Možná by opravdu stačilo pracovat v YUV prostoru, ale nejsem odborník. jenom jsem kdysi studoval principy ztrátových kompresí audio/video a tohle je tomu dost podobné.

V té souvislosti mě napadlo, že by bylo vymachrované překlopit to celé FFT a pracovat s těmi koeficienty, jako jpeg. Pak by se dal vygenerovat třeba z 320x200x16barev obrázek 160x200x8 barev nebo tak něco, který by vypadal mnohem lépe než když se zkonvertuje paleta a pak ještě zmrší rozlišení. Ale to už je trochu jiný level.

_________________
Atari 600XL, 800XL/XE, 130XE, ST, STE, MegaST, 7800, JaguarCD, Commodore C64, Amiga 500/Plus, 1200, CDTV, Sinclair QL + GC, Sharp MZ800, Sord M5, CPC 6128, Spectravideo SVI X'Press, Sony HB-750, Philips CDi 370, Ohio Scientific Challenger, Eureka.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 07.12.2013, 14:36 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 23:38
Příspěvky: 541
Bydliště: Praha
Has thanked: 393 times
Been thanked: 122 times
ctirad píše:
V té souvislosti mě napadlo, že by bylo vymachrované překlopit to celé FFT a pracovat s těmi koeficienty, jako jpeg. Pak by se dal vygenerovat třeba z 320x200x16barev obrázek 160x200x8 barev nebo tak něco, který by vypadal mnohem lépe než když se zkonvertuje paleta a pak ještě zmrší rozlišení. Ale to už je trochu jiný level.


Tohle mi ale přece jen přijde snadnější, než když teď to musím konvertovat z 32bit hloubky. Tady už je dost omezený počet barev a změna toho rozlišení by se taky dala dopočítat. Ale možná se pletu.

Mám to zkusit?

_________________
https://zxretrosoft.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 07.12.2013, 14:47 
Offline
Kecálek
Uživatelský avatar

Registrován: 06.08.2013, 10:49
Příspěvky: 220
Bydliště: Praha
Has thanked: 232 times
Been thanked: 67 times
Tohle mi vyhodil Gimp prostým převodem z RGB do indexed. Paletu jsem vyrobil z toho příspěvku z 19.53.


Přílohy:
konverze-gimp.PNG
konverze-gimp.PNG [ 5.18 KiB | Zobrazeno 13090 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 07.12.2013, 15:04 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 23:38
Příspěvky: 541
Bydliště: Praha
Has thanked: 393 times
Been thanked: 122 times
Jo, to je super, já nějak tuším, že to jde snadno v nějakém vymakaném programu. Ale podstata toho byla umět to co nejjednodušeji naprogramovat. Protože ve chvíli, kdy bys to uměl dobře naprogramovat, by se otevřely nové možnosti - třeba udělat něco takového na přímo na Atari nebo na C64. Případně si přesprajtovat celou hru.

_________________
https://zxretrosoft.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 07.12.2013, 15:47 
Offline
Kecálek
Uživatelský avatar

Registrován: 06.08.2013, 10:49
Příspěvky: 220
Bydliště: Praha
Has thanked: 232 times
Been thanked: 67 times
Tou 32bitovou hloubkou myslíš R,G,B,alfa po osmi bitech, nebo jen RGB s nějakou větší bitovou hloubkou? Jestli je to i s alfou, tak ta by se pro účely oldcompů stejně ignorovala, ne?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Konverter do Atari palety
PříspěvekNapsal: 07.12.2013, 15:48 
Offline
Radil
Uživatelský avatar

Registrován: 12.05.2013, 23:38
Příspěvky: 541
Bydliště: Praha
Has thanked: 393 times
Been thanked: 122 times
mop píše:
Tou 32bitovou hloubkou myslíš R,G,B,alfa po osmi bitech, nebo jen RGB s nějakou větší bitovou hloubkou? Jestli je to i s alfou, tak ta by se pro účely oldcompů stejně ignorovala, ne?


jj, přesně tak, stejně by se ignorovala, takže jde jen o RGB, ne RGBA.

_________________
https://zxretrosoft.cz/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 171 ]  Přejít na stránku 1, 2, 3, 4, 5 ... 12  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz