మళ్ళీ నమస్కారం! మే 2019లో వ్రాసిన ఈ వ్యాసాన్ని నేను కనుగొన్నాను. ఇది WAVE మరియు JPEG గురించిన వ్యాసాల శ్రేణికి కొనసాగింపు. ఇక్కడ ఈ ప్రచురణలో ఇమేజ్ ఎన్కోడింగ్ అల్గోరిథం మరియు సాధారణంగా ఆ ఫార్మాట్ గురించిన సమాచారం ఉంటుంది.
కొద్దిపాటి చరిత్ర
వికీపీడియా వ్యాసం నుండి ఒక టేబుల్ స్పూన్:
JPEG (జాయింట్ ఫోటోగ్రాఫిక్ ఎక్స్పర్ట్స్ గ్రూప్) అనేది ఫోటోగ్రాఫిక్ మరియు అలాంటి చిత్రాలను నిల్వ చేయడానికి ఉపయోగించే ప్రముఖ రాస్టర్ గ్రాఫిక్ ఫార్మాట్లలో ఒకటి.
ఈ ప్రమాణాన్ని 1991లో సమర్థవంతమైన ఇమేజ్ కంప్రెషన్ కోసం జాయింట్ ఫోటోగ్రాఫిక్ ఎక్స్పర్ట్స్ గ్రూప్ అభివృద్ధి చేసింది.
రా నుండి JPEGకి ఇమేజ్లు ప్రయాణించే మార్గం ఏమిటి?
JPEG చిత్రాలు హఫ్ఫ్మన్ పద్ధతిని ఉపయోగించి సంపీడనం చేయబడిన ముడి డేటా అని కొంతమంది అనుకుంటారు, కానీ ఇది నిజం కాదు. ఆ డేటా సంపీడనం చెందడానికి ముందు ఒక సుదీర్ఘ ప్రక్రియకు లోనవుతుంది.
మొదటగా, కలర్ మోడల్ను RGB నుండి YCbCrకి మారుస్తారు. దీనికోసం ఒక ప్రత్యేకమైన అల్గోరిథం కూడా ఉంది— Y కీని మార్చలేదు, ఎందుకంటే అది ప్రకాశానికి బాధ్యత వహిస్తుంది మరియు దానిలో మార్పు స్పష్టంగా కనిపిస్తుంది.
వారు ఆ చిత్రంతో చేసే మొదటి పని ఏమిటంటే పలుచబడటం (సబ్శాంప్లింగ్). ఇది అర్థం చేసుకోవడం సులభం: మీరు పిక్సెల్ల యొక్క 2x2 శ్రేణిని తీసుకుంటారు, ఆపై ఈ 4 పిక్సెల్ల యొక్క YCbCr భాగాలలో ప్రతిదాని సగటు విలువలైన Cb మరియు Cr లను తీసుకుంటారు. కాబట్టి, మేము 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 పిక్సెల్స్ చొప్పున కూడా చేయవచ్చు. మొదటి పద్ధతిని ఎక్కువగా ఉపయోగిస్తారు. ఇమేజ్ నాణ్యత ముఖ్యమైతే, థిన్నింగ్ అస్సలు చేయరు.
జుట్టు పల్చబడటాన్ని దృశ్యమానంగా వివరించే చిత్రం (GIFను చేర్చడానికి Habr నన్ను అనుమతించలేదు)
తయారీలో ప్రధాన భాగం
డిసిటి
ఇప్పుడు అత్యంత కష్టమైన మరియు అవసరమైన భాగం వస్తుంది. మొత్తం చిత్రాన్ని 8x8 బ్లాక్లుగా విభజించాలి (రిజల్యూషన్ బ్లాక్ సైజుకు గుణకం కాకపోతే ప్యాడింగ్ ఉపయోగించబడుతుంది).
ఇప్పుడు ప్రతి బ్లాక్కు వర్తింపజేయండి DCT (డిస్క్రీట్ కోసైన్ ట్రాన్స్ఫార్మ్)ఈ విభాగంలో, చిత్రం నుండి అన్ని అనవసరమైన అంశాలు తొలగించబడతాయి. DCTని ఉపయోగించి, ఇచ్చిన బ్లాక్ (8x8) చిత్రం యొక్క ఏకరీతి భాగాన్ని (ఉదాహరణకు ఆకాశం, గోడ) వివరిస్తుందా; లేదా అది సంక్లిష్టమైన నిర్మాణాన్ని (జుట్టు, చిహ్నాలు మొదలైనవి) కలిగి ఉందా అని మనం నిర్ధారించాలి. బ్లాక్ పరిమాణం ఇప్పటికే తెలిసినందున, ఒకే రంగులో ఉన్న 64 పిక్సెల్లను కేవలం ఒక్కదానితోనే వివరించవచ్చని అనుకోవడం సహేతుకం. అదే కుదింపు నిష్పత్తి: 64కి 1.
DCT బ్లాక్ను స్పెక్ట్రమ్గా మారుస్తుంది, మరియు రీడింగ్లు వేగంగా మారే చోట, గుణకం ధనాత్మకంగా మారుతుంది, మరియు మార్పు ఎంత వేగంగా ఉంటే, అవుట్పుట్ అంత ఎక్కువగా ఉంటుంది. గుణకం ఎక్కువగా ఉన్న చోట, చిత్రం రంగు మరియు ప్రకాశంలో స్పష్టమైన మార్పులను చూపుతుంది; అది తక్కువగా ఉన్న చోట, బ్లాక్లోని YCbCr భాగాల విలువలలో సూక్ష్మమైన (సున్నితమైన) మార్పులు కనిపిస్తాయి.
క్వాంటైజేషన్
ఇక్కడ కంప్రెషన్ సెట్టింగ్లు వర్తింపజేయబడతాయి. ప్రతి 8x8 మ్యాట్రిక్స్లోని ప్రతి కోఎఫిషియంట్ను ఒక నిర్దిష్ట సంఖ్యతో భాగించబడుతుంది. అన్ని మార్పుల తర్వాత మీరు చిత్ర నాణ్యతను మరింత తగ్గించకూడదనుకుంటే, భాజకం ఒకటిగా ఉండాలి. మీకు ఫోటో యొక్క మెమరీ ఫుట్ప్రింట్ మరింత ముఖ్యమైనది అయితే, భాజకం ఒకటి కంటే ఎక్కువగా ఉంటుంది మరియు భాగఫలం రౌండ్ చేయబడుతుంది. దీని అర్థం, రౌండింగ్ తరచుగా చాలా సున్నాలకు దారితీస్తుంది.
మరింత ఎక్కువ కుదింపును సాధ్యం చేయడానికి క్వాంటైజేషన్ ఉపయోగించబడుతుంది. క్వాంటైజ్ చేయబడిన గ్రాఫ్ y = sin(x)ను ఉపయోగించి ఇది ఈ విధంగా కనిపిస్తుంది:

కుదింపు
మొదట, మనం మ్యాట్రిక్స్ను జిగ్-జాగ్ పద్ధతిలో పరిశీలిస్తాము:

మనకు సంఖ్యలతో కూడిన ఒక ఏకమితీయ శ్రేణి లభిస్తుంది. అందులో చాలా సున్నాలు ఉన్నాయని మనం గమనిస్తాము, వాటిని తొలగించవచ్చు. ఇలా చేయడానికి, అనేక సున్నాల శ్రేణికి బదులుగా, ఒకే సున్నాను రాసి, దాని తర్వాత ఆ శ్రేణిలో దాని సంఖ్యను సూచించే సంఖ్యను రాస్తాము. ఈ విధంగా, మనం మొత్తం శ్రేణి పరిమాణాన్ని 1/3 వంతుకు తగ్గించవచ్చు. ఆ తర్వాత, హఫ్ఫ్మన్ పద్ధతిని ఉపయోగించి ఈ శ్రేణిని కుదించి, ఫైల్లోనే రాస్తాము.
ఎక్కడ ఉపయోగించబడుతుంది
ప్రతిచోటా. PNG లాగే, JPEG కూడా కెమెరాలలో, OSలలో (కంపెనీ లోగోలు, యాప్ ఐకాన్లు, థంబ్నెయిల్లుగా), మరియు చిత్రాలను సమర్థవంతంగా నిల్వ చేయాల్సిన ఇతర ప్రదేశాలలో ఉపయోగించబడుతుంది.
తీర్మానం
ప్రస్తుతానికి, JPEG గురించిన జ్ఞానం కేవలం విద్యా ప్రయోజనాలకు మాత్రమే విలువైనది, ఎందుకంటే ఇది ఇప్పటికే ప్రతిదానిలోనూ పొందుపరచబడి, పెద్ద సమూహాలచే మెరుగుపరచబడింది, కానీ విజ్ఞాన శాస్త్రమనే గ్రానైట్ ఇప్పటికీ రుచికరమైనదే.
వర్గాలు
మూలం: www.habr.com
