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 பிக்சல்கள் கிடைமட்டமாகவும் செங்குத்தாகவும் மெல்லியதாக மாற்றலாம். முதல் விருப்பம் அடிக்கடி பயன்படுத்தப்படுகிறது. படத்தின் தரம் முக்கியமானது என்றால், டெசிமேஷன் செய்யப்படுவதில்லை.
மெலிந்து போவதற்கான ஒரு காட்சி விளக்கம் (ஹப்ர் என்னை gif ஐச் செருக அனுமதிக்கவில்லை) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

தயாரிப்பின் முக்கிய பகுதி

PREP

இப்போது கடினமான மற்றும் மிகவும் தேவையான பகுதி வருகிறது. முழுப் படமும் 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 பற்றிய விக்கிபீடியா கட்டுரை
பிகாபு இடுகையிலிருந்து PrEP பற்றி கொஞ்சம்
PrEP பற்றிய விக்கிபீடியா கட்டுரை

ஆதாரம்: www.habr.com

கருத்தைச் சேர்