JPEG. కుదింపు అల్గోరిథం

మళ్ళీ హలో! నేను ఈ కథనాన్ని మే 2019లో వ్రాసినట్లు కనుగొన్నాను. ఇది ఇక్కడ WAVE మరియు JPEG గురించిన కథనాల శ్రేణి యొక్క కొనసాగింపు మొదటి. ఈ పబ్లికేషన్ ఇమేజ్ ఎన్‌కోడింగ్ అల్గారిథమ్ మరియు మొత్తం ఫార్మాట్ గురించిన సమాచారాన్ని కలిగి ఉంటుంది.

చిటికెడు చరిత్ర

ఒక టేబుల్ స్పూన్ వికీపీడియా కథనం:

JPEG (జాయింట్ ఫోటోగ్రాఫిక్ ఎక్స్‌పర్ట్స్ గ్రూప్) అనేది ఛాయాచిత్రాలు మరియు సారూప్య చిత్రాలను నిల్వ చేయడానికి ఉపయోగించే ప్రసిద్ధ రాస్టర్ గ్రాఫిక్స్ ఫార్మాట్‌లలో ఒకటి.

సమర్థవంతమైన ఇమేజ్ కంప్రెషన్ కోసం 1991లో జాయింట్ ఫోటోగ్రాఫిక్ నిపుణుల బృందం ఈ ప్రమాణాన్ని అభివృద్ధి చేసింది.

చిత్రాలు ముడి నుండి JPEGకి ఎలా వెళ్తాయి?

JPEG ఇమేజ్‌లు హఫ్ఫ్‌మన్ పద్ధతిని ఉపయోగించి ముడి డేటా కంప్రెస్ చేయబడతాయని కొందరు అనుకుంటారు, కానీ ఇది నిజం కాదు. కంప్రెషన్ నియంత్రణకు ముందు, డేటా చాలా దూరం ప్రయాణిస్తుంది.

మొదట, రంగు మోడల్ RGB నుండి YCbCrకి మార్చబడింది. దీని కోసం ప్రత్యేక అల్గోరిథం కూడా ఉంది - ఇక్కడ. Y తాకబడదు, ఎందుకంటే ఇది ప్రకాశానికి బాధ్యత వహిస్తుంది మరియు దాని మార్పు గమనించవచ్చు.

చిత్రంతో చేయవలసిన మొదటి విషయం "సన్నబడటం" (ఉప నమూనా). ఇది అర్థం చేసుకోవడం సులభం: పిక్సెల్‌ల 2x2 శ్రేణి తీసుకోబడింది, ఆపై Cb మరియు Cr తీసుకోబడతాయి - ఈ 4 పిక్సెల్‌లలోని ప్రతి YCbCr భాగాల సగటు విలువలు. కాబట్టి, మేము 6 బైట్లు గెలిచాము, 4 Y, 4 Cb, 4 Crకి బదులుగా మనకు 4 Y మరియు వాటిలో ప్రతిదానికి ఒకే Cb మరియు Cr లభించాయి (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). 2x2 స్కేల్‌లో కూడా, 2:1 కంప్రెషన్ రేషియోతో లాస్సీ కంప్రెషన్ ఘనమైనదిగా అనిపిస్తుంది. ఇది మొత్తం చిత్రానికి వర్తిస్తుంది. అందువలన - వారు సగం పరిమాణం పడిపోయింది. మరియు మేము మా రంగు అవగాహనకు ధన్యవాదాలు ఈ సాంకేతికతను ఉపయోగించవచ్చు. ఒక వ్యక్తి ప్రకాశంలో తేడాను సులభంగా గమనించవచ్చు, కానీ రంగులో కాదు, అది పిక్సెల్‌ల చిన్న బ్లాక్‌లో సగటున ఉంటే. సన్నబడటం ఒక లైన్‌లో, 4 పిక్సెల్‌లు అడ్డంగా మరియు నిలువుగా కూడా చేయవచ్చు. మొదటి ఎంపిక తరచుగా ఉపయోగించబడుతుంది. చిత్రం నాణ్యత ముఖ్యమైనది అయితే, డెసిమేషన్ అస్సలు నిర్వహించబడదు.
సన్నబడటానికి దృశ్యమాన ఉదాహరణ (Habr నన్ను gif చొప్పించడానికి అనుమతించలేదు) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

తయారీలో ప్రధాన భాగం

Dkp

ఇప్పుడు కష్టతరమైన మరియు అత్యంత అవసరమైన భాగం వస్తుంది. మొత్తం చిత్రం 8x8 బ్లాక్‌లుగా విభజించబడింది (రిజల్యూషన్ బ్లాక్ సైడ్ యొక్క మల్టిపుల్ కాకపోతే ఫిల్లింగ్ ఉపయోగించబడుతుంది).

ఇప్పుడు ప్రతి బ్లాక్‌కి వర్తించండి DCT (వివిక్త కొసైన్ రూపాంతరం). ఈ భాగంలో, అనవసరమైన ప్రతిదీ చిత్రం నుండి తీసివేయబడుతుంది. DCTని ఉపయోగించి, మీరు ఇచ్చిన బ్లాక్ (8×8) చిత్రం యొక్క ఏదైనా మార్పులేని భాగాన్ని వివరిస్తుందో లేదో అర్థం చేసుకోవాలి: ఆకాశం, గోడ; లేదా అది సంక్లిష్టమైన నిర్మాణాన్ని (జుట్టు, చిహ్నాలు, మొదలైనవి) కలిగి ఉంటుంది. సారూప్య రంగు యొక్క 64 పిక్సెల్‌లను కేవలం 1 ద్వారా వర్ణించవచ్చు, ఎందుకంటే బ్లాక్ పరిమాణం ఇప్పటికే తెలుసు. కుదింపు కోసం చాలా: 64 నుండి 1.

DCT బ్లాక్‌ను స్పెక్ట్రమ్‌గా మారుస్తుంది మరియు రీడింగ్‌లు తీవ్రంగా మారినప్పుడు, గుణకం సానుకూలంగా మారుతుంది మరియు పదునుగా పరివర్తన, అవుట్‌పుట్ ఎక్కువగా ఉంటుంది. గుణకం ఎక్కువగా ఉన్న చోట, చిత్రం రంగు మరియు ప్రకాశంలో స్పష్టమైన పరివర్తనలను చూపుతుంది, ఇక్కడ అది తక్కువగా ఉంటుంది - బ్లాక్‌లోని YCbCr భాగాల విలువలలో బలహీనమైన (మృదువైన) మార్పులు.

పరిమాణీకరణ

కుదింపు సెట్టింగ్‌లు ఇప్పటికే ఇక్కడ వర్తింపజేయబడ్డాయి. ప్రతి 8x8 మాత్రికలలోని ప్రతి గుణకం నిర్దిష్ట సంఖ్యతో విభజించబడింది. అన్ని మార్పులు చేసిన తర్వాత మీరు చిత్ర నాణ్యతను తగ్గించకపోతే, డివైజర్ ఒకటిగా ఉండాలి. ఈ ఫోటో ఆక్రమించిన మెమరీ మీకు చాలా ముఖ్యమైనది అయితే, డివైజర్ 1 కంటే ఎక్కువగా ఉంటుంది మరియు గుణకం గుండ్రంగా ఉంటుంది. ఇది చుట్టుముట్టిన తర్వాత మీరు తరచుగా చాలా సున్నాలతో ముగుస్తుంది.

మరింత ఎక్కువ కుదింపు యొక్క అవకాశాన్ని సృష్టించడానికి పరిమాణీకరణ జరుగుతుంది. y = sin(x) గ్రాఫ్‌ను పరిమాణీకరించే ఉదాహరణను ఉపయోగించి ఇది ఎలా ఉంటుందో ఇక్కడ ఉంది:

JPEG. కుదింపు అల్గోరిథం

కుదింపు

మొదట మనం జిగ్-జాగ్ నమూనాలో మాతృక ద్వారా వెళ్తాము:

JPEG. కుదింపు అల్గోరిథం

మేము సంఖ్యలతో ఒక డైమెన్షనల్ శ్రేణిని పొందుతాము. అందులో చాలా సున్నాలు ఉన్నాయని మనం చూస్తాము, వాటిని తొలగించవచ్చు. దీన్ని చేయడానికి, అనేక సున్నాల శ్రేణికి బదులుగా, మేము 1 సున్నాని నమోదు చేస్తాము మరియు దాని తర్వాత క్రమంలో వారి సంఖ్యను సూచించే సంఖ్య. ఈ విధంగా మీరు మొత్తం శ్రేణి పరిమాణంలో 1/3కి రీసెట్ చేయవచ్చు. ఆపై మేము హఫ్ఫ్‌మన్ పద్ధతిని ఉపయోగించి ఈ శ్రేణిని కుదించండి మరియు దానిని ఫైల్‌లోనే వ్రాస్తాము.

ఎక్కడ ఉపయోగించబడుతుంది

ప్రతిచోటా. PNG వలె, JPEG కెమెరాలు, OSలు (కంపెనీ లోగోలు, అప్లికేషన్ చిహ్నాలు, థంబ్‌నెయిల్‌లుగా) మరియు చిత్రాలను సమర్థవంతంగా నిల్వ చేయడానికి అవసరమైన అన్ని ప్రాంతాలలో ఉపయోగించబడుతుంది.

తీర్మానం

ప్రస్తుతానికి, JPEG గురించి జ్ఞానం ఇప్పుడు విద్యా ప్రయోజనాల కోసం మాత్రమే విలువైనది, ఎందుకంటే ఇది ఇప్పటికే ప్రతిచోటా నిర్మించబడింది మరియు పెద్ద సమూహాలచే ఆప్టిమైజ్ చేయబడింది, అయితే సైన్స్ యొక్క గ్రానైట్ ఇప్పటికీ రుచికరమైనది.

వర్గాలు

వికీపీడియాలో YCbCr గురించిన కథనం
JPEG పై వికీపీడియా కథనం
Pikabu పోస్ట్ నుండి PrEP గురించి కొంచెం
PrEP పై వికీపీడియా కథనం

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి