Názory k článku
Programujeme JPEG: transformace a podvzorkování barev
21. 12. 2006 12:46
Nový
Re: obrázek
celé vlákno
Hmm, že by to v těch 80. letech scanovali rovnou do jpg?
21. 12. 2006 17:26
Nový
Re: obrázek
celé vlákno
:-)
Praveze s tim originalnim obrazkem jsou nejake problemy, mam dojem, ze se nemuze obnovit postup, jakym zpusobem byl naskenovan, jake se pouzily A/D prevodniky (linearita, sum) apod. U obrazku pouzivaneho jako jisty "etalon" je to trosku usmevne.
Na vyse uvedene adrese je normalni sken, ktery si kdokoli muze udelat, kdyz si v knihovne vyhleda prislusne cislo Playboye (i tyto veci nektere knihovny schranuji :-). Take se (snad) jeste nenasel originalni fotograficky snimek, takze to vsechno jsou pouze odvozene obrazky. Staci si na Googlu v sekci "obrazky" vyhledat Lenna a vyleze nekolik variant, ktere se lisi kontrastem, gamma korekci a ja nevim cim jeste.
Praveze s tim originalnim obrazkem jsou nejake problemy, mam dojem, ze se nemuze obnovit postup, jakym zpusobem byl naskenovan, jake se pouzily A/D prevodniky (linearita, sum) apod. U obrazku pouzivaneho jako jisty "etalon" je to trosku usmevne.
Na vyse uvedene adrese je normalni sken, ktery si kdokoli muze udelat, kdyz si v knihovne vyhleda prislusne cislo Playboye (i tyto veci nektere knihovny schranuji :-). Take se (snad) jeste nenasel originalni fotograficky snimek, takze to vsechno jsou pouze odvozene obrazky. Staci si na Googlu v sekci "obrazky" vyhledat Lenna a vyleze nekolik variant, ktere se lisi kontrastem, gamma korekci a ja nevim cim jeste.
21. 12. 2006 11:55
Nový
tesim
celé vlákno
super, tesim sa z tohoto serialu, aj ked ma viac zaujima dalsia cast ;-)
Clock (neregistrovaný)
21. 12. 2006 13:22
Nový
YCbCr?
celé vlákno
Ja jsem psal dekoder JPEGu do Linkse a jestli se dobre pamatuju, z JPEGu neleze YCbCr jak se tu snazi autor naznacit, ale Y'CbCr. Ono YCbCr by ani nemelo smysl protoze by pak zaokrouhlovaci chyby byly vyrazne videt na tmavych partiich a nevyrazne na bilych - takhle se to rozlozi rovnomerne.
Kdyz si nekdo bude podle tohohle clanku myslet ze z JPEGu jde YCbCr a napise podle toho software, tak ten software bude zobrazovat JPEGy vyblite jakoby v mlze.
Nema smysl to ani narychlo konvertovat nejakou 8-bitovou gamma korekci protoze se pak udelaj v tmavsich partiich schodovite prouzky na barevnych prechodech kvuli degradaci barevneho rozliseni.
Kdyz si nekdo bude podle tohohle clanku myslet ze z JPEGu jde YCbCr a napise podle toho software, tak ten software bude zobrazovat JPEGy vyblite jakoby v mlze.
Nema smysl to ani narychlo konvertovat nejakou 8-bitovou gamma korekci protoze se pak udelaj v tmavsich partiich schodovite prouzky na barevnych prechodech kvuli degradaci barevneho rozliseni.
21. 12. 2006 13:38
Nový
Re: YCbCr?
celé vlákno
Kdyz se mrknete na ten druhy demonstracni priklad, tak je patrne, ze jsou tam pouzity oba typy prevodu, jak RGB->YCbCr, tak i YCbCr->RGB. K zadnym chybam tam nedochazi (samozrejme pri velikosti bloku 1x1 pixel). Slozka Y se zadnym zpusobem nemeni, podvzorkovavaji se pouze Cb a Cr.
Ale mozna mate ma mysli "matematicke" Y'CbCr, kde se slozka Y' opravdu koriguje pomoci gamma faktoru a navic plati, ze ma rozsah pouze <16,235>, coz neni "nas" pripad, protoze zde ma Y plny rozsah <0,255>.
Klasicka analogova Y'CbCr pouziva jine konstanty a rozsahy jsou:
Y lezi v [0,1]
Cb lezi v [-0.5, 0.5]
Cr lezi v [-0.5, 0.5]
Takovy barvovy model se nekdy oznacuje spis jako YPbPr
Ale mozna mate ma mysli "matematicke" Y'CbCr, kde se slozka Y' opravdu koriguje pomoci gamma faktoru a navic plati, ze ma rozsah pouze <16,235>, coz neni "nas" pripad, protoze zde ma Y plny rozsah <0,255>.
Klasicka analogova Y'CbCr pouziva jine konstanty a rozsahy jsou:
Y lezi v [0,1]
Cb lezi v [-0.5, 0.5]
Cr lezi v [-0.5, 0.5]
Takovy barvovy model se nekdy oznacuje spis jako YPbPr
21. 12. 2006 13:40
Nový
Re: YCbCr?
celé vlákno
Jeste vysledky rychleho hledani:
http://en.wikipedia.org/wiki/YCbCr
uplne dole je cast tykajici se JPEGu.
http://en.wikipedia.org/wiki/YCbCr
uplne dole je cast tykajici se JPEGu.
uživatel si přál zůstat v anonymitě
21. 12. 2006 15:41
Nový
Re: YCbCr?
celé vlákno
Jasne OK, YCbCr je luma a chroma (gamma korigovane hodnoty vzhledem k fyzikalnimu poctu fotonu). Problem je ale, ze RGB -> YCbCr transformace se neda delat takhle jednoduse - to je jako predpoklada, ze (a+b)^n=a^n+b^n. Je potreba to RGB nejdriv prevyst do fotometricky reprezentace (umocnit na 2.2), v tom pak udelat to podvzorkovani 2x2, a pak to zase prevyst na YCbCr umocnenim na 0.45
Kdyz maji sousedni pixely podobnou barvu, moc chyby tim nevznika. Kdyz maji ale rozdilnou, vznika chyba:
http://en.wikipedia.org/wiki/Image:Color-bars-vegas-dv.gif
Na rozhrani mezi zelenou a fialovou je pruh sedozelene, ktery je tmavsi nez jak ta zelena i ta fialova - neni mozne aby kdyz mame jasy (luma) rekneme 0.3 a 0.4, aby jejich zprumerovanim vzniklo 0.2
"Chroma subsampling deviates from color science in that the luma and chroma components are formed as a weighted sum of gamma-corrected (tristimulus) R'G'B' components instead of linear (tristimulus) RGB components. As a result, luminance and color detail are not completely independent of one another. There is some "bleeding" of luminance and color information between the luma and chroma components. The error is greatest for highly-saturated colors and can be somewhat noticeable in between the magenta and green bars of a color bars test pattern (that has chroma subsampling applied). This engineering approximation (by reversing the order of operations between gamma correction and forming the weighted sum) allows color subsampling to be more easily implemented."
Sice se to zda rychlejsi na implementaci, ale to se da zase nahnat tim, ze misto C++ nebo Javy budeme psat v C, jako jsem to udelal v Linksu - v Linksu se pocita vsechno ve 48-bitovym fotometrickym prostoru, vzdycky se ditheruje, a jeste je to jeden z nejrychlejsich prohlizecu, ve srovnani s temi zbylymi co to pocitaj ve 24 bitech a na gammu a takovyhle veci vetsinou kaslou.
Kdyz maji sousedni pixely podobnou barvu, moc chyby tim nevznika. Kdyz maji ale rozdilnou, vznika chyba:
http://en.wikipedia.org/wiki/Image:Color-bars-vegas-dv.gif
Na rozhrani mezi zelenou a fialovou je pruh sedozelene, ktery je tmavsi nez jak ta zelena i ta fialova - neni mozne aby kdyz mame jasy (luma) rekneme 0.3 a 0.4, aby jejich zprumerovanim vzniklo 0.2
"Chroma subsampling deviates from color science in that the luma and chroma components are formed as a weighted sum of gamma-corrected (tristimulus) R'G'B' components instead of linear (tristimulus) RGB components. As a result, luminance and color detail are not completely independent of one another. There is some "bleeding" of luminance and color information between the luma and chroma components. The error is greatest for highly-saturated colors and can be somewhat noticeable in between the magenta and green bars of a color bars test pattern (that has chroma subsampling applied). This engineering approximation (by reversing the order of operations between gamma correction and forming the weighted sum) allows color subsampling to be more easily implemented."
Sice se to zda rychlejsi na implementaci, ale to se da zase nahnat tim, ze misto C++ nebo Javy budeme psat v C, jako jsem to udelal v Linksu - v Linksu se pocita vsechno ve 48-bitovym fotometrickym prostoru, vzdycky se ditheruje, a jeste je to jeden z nejrychlejsich prohlizecu, ve srovnani s temi zbylymi co to pocitaj ve 24 bitech a na gammu a takovyhle veci vetsinou kaslou.
21. 12. 2006 15:58
Nový
Re: YCbCr?
celé vláknoJasne, tu nesmyslnost pri scitani (prumerovani) beru, pri nekterych kontrastnich prechodech (zejmena barev na opacne strane spektra) se ta chyba vizualne projevi. Asi by se tedy misto RGB melo psat sRGB, kdyz uz se teda Microsoft se zbytkem sveta dohodl na γ=2.2. Nejsem si vsak zdaleka jisty, jestli tuto korekci provadi vsechny kodery a dekodery JPEGu, neni k dispozici nejaky testovaci obrazek - takova ta typicka dvojice s ditherovanymi prechody?
Clock (neregistrovaný)
21. 12. 2006 15:52
Nový
Clanek vyvracejici tyto bludy
celé vlákno
Tyto bludy Y'CbCr YCbCb luma luminance chroma chrominance gama negama hodinky holinky hlavne ze oboji se natahuje co tu autor prezentuje jsou
velmi rozsirene i v autoritativnich publikacich. v JPEGu neni YCbCr, ale Y'CbCr. Kdo chce v tom mit jasne a rozeznat blud od reality, at si precte Charles Poynton's YUV and Luminance Harmful:
http://poynton.com/PDFs/YUV_and_luminance_harmful.pdf
velmi rozsirene i v autoritativnich publikacich. v JPEGu neni YCbCr, ale Y'CbCr. Kdo chce v tom mit jasne a rozeznat blud od reality, at si precte Charles Poynton's YUV and Luminance Harmful:
http://poynton.com/PDFs/YUV_and_luminance_harmful.pdf
21. 12. 2006 16:29
Nový
Re: Clanek vyvracejici tyto bludy
celé vlákno
Ten clanek jsem si se zajmem precetl (sice si cement s betonem u nas IMHO splete malo lidi, ale v US se ta slova asi pouzivaji s trosku jinym vyznamem).
Ale porad nechapu, co to ma spolecneho s vysvetlovanim prevodu RGB do YCbCr, subsamplingem Cb, Cr a naopak. Ze zrovinka na masinach IBM neni RGB rovno sRGB? Dobre, RGB musi byt pred vstupem gamma korigovane, ale na uvadenem a vysvetlovanem principu se prece vubec nic nemeni. Se slovicky si hrat nemusime, "luma" ani "luminance" se u nas moc neujalo.
Ale porad nechapu, co to ma spolecneho s vysvetlovanim prevodu RGB do YCbCr, subsamplingem Cb, Cr a naopak. Ze zrovinka na masinach IBM neni RGB rovno sRGB? Dobre, RGB musi byt pred vstupem gamma korigovane, ale na uvadenem a vysvetlovanem principu se prece vubec nic nemeni. Se slovicky si hrat nemusime, "luma" ani "luminance" se u nas moc neujalo.
tapír Alfons (neregistrovaný)
21. 12. 2006 19:11
Nový
Re: Clanek vyvracejici tyto bludy
celé vlákno
Nojó clock, ten ditheruje i ve 24b barvách, aby mu nějaký bitík informace náhodou nezůstal nevyjádřen.. Prostě "YCbCr" nemá to samé Y jako CIE, já bych mu to odkýval a dál se v tom nerýpal. Stejnak tak 90% dnešního software při ukládání vezme RGB rastr a nablije ho do jpegliby, takže nejvěrnější podobu originálního RGB dostaneme nikoliv studiem kolorimetrie, ale použitím jpegliby.. ;-P
21. 12. 2006 17:45
Nový
Re: Clanek vyvracejici tyto bludy
celé vlákno
Zajimave je, ze stejny autor v jinem clanku (o Gamma korekci, dohledatelne pres Wikipedii) pise:
"More significantly, there is a huge installed base of encoding and
decoding equipment that assumes image coding similar or identical to
that of video. The installed base includes roughly 1,300,000,000 television
receivers, 400,000,000 VCRs, 250,000,000 camcorders, and
300,000,000 desktop computers. These devices are all, in effect, wired
to directly reproduce R’G’B’ signals encoded according to Rec. 709.
Any proposal for a new encoder transfer function would compromise
the interchange of images among these systems."
Takze podle techto slov ve skutecnosti prevadime opravdu uz gamma-korigovane barevne slozky, i kdyz hodnota gamma-korekce tak, jak jste ji pouzil v predchozich prispevcich, je docela zajimavy (proste nastavime "natvrdo" 2.2). Ta hodnota 2.2 je uvedena proto, ze se pouziva v NTSC?
"More significantly, there is a huge installed base of encoding and
decoding equipment that assumes image coding similar or identical to
that of video. The installed base includes roughly 1,300,000,000 television
receivers, 400,000,000 VCRs, 250,000,000 camcorders, and
300,000,000 desktop computers. These devices are all, in effect, wired
to directly reproduce R’G’B’ signals encoded according to Rec. 709.
Any proposal for a new encoder transfer function would compromise
the interchange of images among these systems."
Takze podle techto slov ve skutecnosti prevadime opravdu uz gamma-korigovane barevne slozky, i kdyz hodnota gamma-korekce tak, jak jste ji pouzil v predchozich prispevcich, je docela zajimavy (proste nastavime "natvrdo" 2.2). Ta hodnota 2.2 je uvedena proto, ze se pouziva v NTSC?
21. 12. 2006 18:19
Nový
Re: Clanek vyvracejici tyto bludy
celé vlákno
I v oficialni specifikaci JPEGu: "JPEG File Interchange Format Version 1.02" maji tentyz "blud" :-), takze bacha na to.
Clock (neregistrovaný)
22. 12. 2006 15:19
Nový
Re: Clanek vyvracejici tyto bludy
celé vlákno
Od nejakyho JPEG komitetu od zelenyho stolu me ani neprekvapuje, ze tomu rozumej jak kozel petrzeli. Ale treba v takovym PNG co bylo navrhovany kompetentnima hackerama, tam takovy nesmysly nejsou.
Stejnak MP3 vs. Ogg Vorbis - z MP3 mi praska lebka, Ogg Vorbis muzu poslouchat i na 64kbps (v nejhorsim i na 32kbps).
Stejnak MP3 vs. Ogg Vorbis - z MP3 mi praska lebka, Ogg Vorbis muzu poslouchat i na 64kbps (v nejhorsim i na 32kbps).
dgx (neregistrovaný)
26. 12. 2006 18:27
Nový
Re: Clanek vyvracejici tyto bludy
celé vlákno
Nejspíš byste mohl téma doplnit o nové a podstatné informace, ale půjde to jen stěží, vyjadřujete-li se jako arogantní kokot.
abcd (neregistrovaný)
5. 1. 2007 0:09
Nový
Co znamenaji tyto subsampling moznosti?
celé vlákno
V PaintShopPro je pri ukladani do JPG moznost vybrat nasledujici:
Chroma subsampling: YCbCr 1x1 1x1 1x1 (none) YCbCr 2x1 1x1 1x1 YCbCr 1x2 1x1 1x1 YCbCr 2x2 1x1 1x1 YCbCr 2x2 2x1 2x1 YCbCr 4x2 1x1 1x1 YCbCr 2x4 1x1 1x1 YCbCr 4x1 1x1 1x1 YCbCr 1x4 1x1 1x1 YCbCr 4x1 2x1 2x1 YCbCr 1x4 1x2 1x2 YCbCr 4x4 2x2 2x2Nejak jsem z toho mimo, to jako ze se u posledni moznosti bere jas jen z 1/16 pixelu, nebo co? Muze mi prosim nekdo vysvetlit, co ty moznosti znamenaji (v helpu nic neni)? Diky.

