JPEG வடிவம் எவ்வாறு செயல்படுகிறது

JPEG படங்கள் நம் டிஜிட்டல் வாழ்வில் எங்கும் காணப்படுகின்றன, ஆனால் இந்த விழிப்புணர்வின் பின்னால் மனித கண்ணுக்கு புலப்படாத விவரங்களை அகற்றும் வழிமுறைகள் உள்ளன. இதன் விளைவாக மிகச் சிறிய கோப்பு அளவில் மிக உயர்ந்த காட்சித் தரம் உள்ளது - ஆனால் அது எப்படி சரியாக வேலை செய்கிறது? நம் கண்களுக்குத் தெரியாதவற்றைப் பார்ப்போம்!

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

ஒரு நண்பருக்கு புகைப்படத்தை அனுப்பும் திறனை எளிதாக எடுத்துக் கொள்ளலாம், மேலும் அவர்கள் எந்த சாதனம், உலாவி அல்லது இயக்க முறைமையைப் பயன்படுத்துகிறார்கள் என்பதைப் பற்றி கவலைப்பட வேண்டாம் - ஆனால் அது எப்போதும் இல்லை. 1980 களின் முற்பகுதியில், கணினிகள் டிஜிட்டல் படங்களைச் சேமித்து காண்பிக்க முடியும், ஆனால் இதைச் செய்வதற்கான சிறந்த வழி குறித்து பல போட்டி யோசனைகள் இருந்தன. நீங்கள் ஒரு கணினியிலிருந்து மற்றொரு கணினிக்கு படத்தை அனுப்ப முடியாது, அது வேலை செய்யும் என்று நம்புகிறேன்.

இந்த சிக்கலை தீர்க்க, உலகம் முழுவதிலுமிருந்து நிபுணர்கள் குழு 1986 இல் கூடியது.புகைப்பட நிபுணர்களின் கூட்டுக் குழு» (கூட்டு புகைப்பட நிபுணர்கள் குழு, JPEG), ஸ்விட்சர்லாந்தின் ஜெனீவாவை தலைமையிடமாகக் கொண்ட இரண்டு சர்வதேச தரநிலை அமைப்புகளான தரநிலைப்படுத்தலுக்கான சர்வதேச அமைப்பு (ISO) மற்றும் சர்வதேச மின் தொழில்நுட்ப ஆணையம் (IEC) ஆகியவற்றின் கூட்டு முயற்சியாக நிறுவப்பட்டது.

JPEG எனப்படும் மக்கள் குழு 1992 இல் JPEG டிஜிட்டல் பட சுருக்க தரநிலையை உருவாக்கியது. இணையத்தைப் பயன்படுத்திய எவரும் ஒருவேளை JPEG குறியிடப்பட்ட படங்களைச் சந்தித்திருக்கலாம். படங்களை குறியாக்க, அனுப்ப மற்றும் சேமிக்க இது மிகவும் பொதுவான வழியாகும். இணையப் பக்கங்கள் முதல் மின்னஞ்சல் வரை சமூக ஊடகங்கள் வரை, JPEG ஒரு நாளைக்கு பில்லியன் கணக்கான முறை பயன்படுத்தப்படுகிறது—ஒவ்வொரு முறையும் நாம் ஆன்லைனில் படத்தைப் பார்க்கும் அல்லது அனுப்பும் ஒவ்வொரு முறையும். JPEG இல்லாவிடில், இணையமானது வண்ணமயமானதாகவும், மெதுவாகவும், குறைவான பூனைப் படங்களையும் கொண்டிருக்கும்!

இந்தக் கட்டுரை JPEG படத்தை எப்படி டிகோட் செய்வது என்பது பற்றியது. வேறு வார்த்தைகளில் கூறுவதானால், கணினியில் சேமிக்கப்பட்ட சுருக்கப்பட்ட தரவை திரையில் தோன்றும் படமாக மாற்றுவதற்கு என்ன தேவை. நாம் ஒவ்வொரு நாளும் பயன்படுத்தும் தொழில்நுட்பத்தைப் புரிந்துகொள்வது முக்கியம் என்பதால் மட்டுமல்லாமல், சுருக்க நிலைகளைத் திறப்பதன் மூலம், உணர்தல் மற்றும் பார்வை மற்றும் நம் கண்கள் எந்தெந்த விவரங்களை மிகவும் உணர்திறன் கொண்டவை என்பதைப் பற்றி மேலும் அறிந்துகொள்வதால் இதை அறிந்து கொள்வது மதிப்பு.

கூடுதலாக, இந்த வழியில் படங்களுடன் விளையாடுவது மிகவும் சுவாரஸ்யமானது.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

JPEG க்குள் பார்க்கிறேன்

ஒரு கணினியில், அனைத்தும் பைனரி எண்களின் வரிசையாக சேமிக்கப்படும். பொதுவாக இந்த பிட்கள், பூஜ்ஜியங்கள் மற்றும் ஒன்று, பைட்டுகளை உருவாக்க எட்டு குழுக்களாக தொகுக்கப்படுகின்றன. நீங்கள் ஒரு கணினியில் ஒரு JPEG படத்தைத் திறக்கும்போது, ​​ஏதாவது (உலாவி, ஒரு இயக்க முறைமை, வேறு ஏதாவது) பைட்டுகளை டிகோட் செய்ய வேண்டும், அசல் படத்தைக் காண்பிக்கக்கூடிய வண்ணங்களின் பட்டியலாக மீட்டெடுக்க வேண்டும்.

இந்த இனிப்பை பதிவிறக்கம் செய்தால் ஒரு பூனையின் புகைப்படம் உரை எடிட்டரில் அதைத் திறக்கவும், நீங்கள் பொருத்தமற்ற எழுத்துக்களைக் காண்பீர்கள்.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது
விண்டோஸில் உள்ள நோட்பேட் போன்ற வழக்கமான டெக்ஸ்ட் எடிட்டர்கள் சேமித்த பிறகு பைனரி கோப்பை சிதைத்துவிடும் மற்றும் அது இனி JPEG வடிவமைப்பை திருப்திப்படுத்தாது என்பதால், கோப்பின் உள்ளடக்கங்களை ஆய்வு செய்ய நான் Notepad++ ஐப் பயன்படுத்துகிறேன்.

ஒரு படத்தை வேர்ட் ப்ராசசரில் திறப்பது கணினியை குழப்புகிறது, நீங்கள் கண்களைத் தேய்க்கும்போது உங்கள் மூளையைக் குழப்புவது போல, வண்ணப் புள்ளிகளைப் பார்க்கத் தொடங்குங்கள்!

நீங்கள் பார்க்கும் இந்த இடங்கள் என்று அழைக்கப்படுகின்றன பாஸ்பீன்ஸ், மற்றும் ஒரு ஒளி தூண்டுதலின் விளைவாகவோ அல்லது மனத்தால் உருவாக்கப்பட்ட மாயத்தோற்றத்தின் விளைவாகவோ அல்ல. பார்வை நரம்புகளில் ஏதேனும் மின் சமிக்ஞைகள் ஒளியைப் பற்றிய தகவல்களைத் தெரிவிக்கின்றன என்று உங்கள் மூளை நினைப்பதால் அவை நிகழ்கின்றன. மூளை இந்த அனுமானங்களைச் செய்ய வேண்டும், ஏனென்றால் ஒரு சமிக்ஞை என்பது ஒரு ஒலி, ஒரு பார்வை அல்லது வேறு ஏதாவது என்பதை அறிய வழி இல்லை. உடலில் உள்ள அனைத்து நரம்புகளும் ஒரே மாதிரியான மின் தூண்டுதல்களை கடத்துகின்றன. உங்கள் கண்களுக்கு அழுத்தம் கொடுப்பதன் மூலம், நீங்கள் பார்வையற்ற சிக்னல்களை அனுப்புகிறீர்கள், ஆனால் கண்ணின் ஏற்பிகளை செயல்படுத்துகிறீர்கள், அதை உங்கள் மூளை விளக்குகிறது - இந்த விஷயத்தில், தவறாக - காட்சியாக. அழுத்தத்தை நீங்கள் உண்மையில் பார்க்கலாம்!

கணினிகள் மூளைக்கு எவ்வளவு ஒத்ததாக இருக்கிறது என்பதைப் பற்றி சிந்திப்பது வேடிக்கையாக இருக்கிறது, ஆனால் தரவுகளின் அர்த்தம் - நரம்புகள் மூலம் உடல் வழியாக எடுத்துச் செல்லப்பட்டாலும் அல்லது கணினியில் சேமிக்கப்பட்டாலும் - அது எவ்வாறு விளக்கப்படுகிறது என்பதைப் பொறுத்தது என்பதை விளக்குவதற்கு இது ஒரு பயனுள்ள ஒப்புமையாகும். அனைத்து பைனரி தரவுகளும் XNUMXகள் மற்றும் XNUMX விகளால் ஆனது, எந்த வகையான தகவலையும் தெரிவிக்கக்கூடிய அடிப்படை கூறுகள். கோப்பு நீட்டிப்புகள் போன்ற துப்புகளைப் பயன்படுத்தி அவற்றை எவ்வாறு விளக்குவது என்பதை உங்கள் கணினி அடிக்கடி கண்டுபிடிக்கும். இப்போது நாம் அவற்றை உரையாக விளக்குமாறு கட்டாயப்படுத்துகிறோம், ஏனென்றால் உரை திருத்தி அதைத்தான் எதிர்பார்க்கிறார்.

JPEG ஐ டிகோட் செய்வது எப்படி என்பதைப் புரிந்து கொள்ள, அசல் சிக்னல்களை நாம் பார்க்க வேண்டும் - பைனரி தரவு. இதை ஹெக்ஸாடெசிமல் எடிட்டரைப் பயன்படுத்தி அல்லது நேரடியாகச் செய்யலாம் அசல் கட்டுரை வலைப்பக்கம்! ஒரு படம் உள்ளது, அதற்கு அடுத்ததாக உரை புலத்தில் அதன் அனைத்து பைட்டுகளும் (தலைப்பைத் தவிர), தசம வடிவத்தில் வழங்கப்படுகின்றன. நீங்கள் அவற்றை மாற்றலாம், மேலும் ஸ்கிரிப்ட் மீண்டும் குறியாக்கம் செய்து பறக்கும் போது புதிய படத்தை உருவாக்கும்.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

இந்த எடிட்டருடன் விளையாடுவதன் மூலம் நீங்கள் நிறைய கற்றுக்கொள்ளலாம். எடுத்துக்காட்டாக, பிக்சல்கள் எந்த வரிசையில் சேமிக்கப்படுகின்றன என்று சொல்ல முடியுமா?

இந்த எடுத்துக்காட்டில் உள்ள விசித்திரம் என்னவென்றால், சில எண்களை மாற்றுவது படத்தைப் பாதிக்காது, ஆனால், எடுத்துக்காட்டாக, முதல் வரியில் 17 என்ற எண்ணை 0 உடன் மாற்றினால், புகைப்படம் முற்றிலும் அழிந்துவிடும்!

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

வரி 7 இல் 1988 ஐ 254 என்ற எண்ணுடன் மாற்றுவது போன்ற பிற மாற்றங்கள் நிறத்தை மாற்றுகின்றன, ஆனால் அடுத்தடுத்த பிக்சல்கள் மட்டுமே.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

ஒருவேளை விசித்திரமான விஷயம் என்னவென்றால், சில எண்கள் நிறத்தை மட்டுமல்ல, படத்தின் வடிவத்தையும் மாற்றுகின்றன. நான் என்ன சொல்கிறேன் என்பதைப் பார்க்க, வரி 70 இல் உள்ள 12 ஐ 2 ஆக மாற்றி, படத்தின் மேல் வரிசையைப் பார்க்கவும்.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

நீங்கள் எந்த JPEG படத்தைப் பயன்படுத்தினாலும், பைட்டுகளைத் திருத்தும்போது இந்த மர்மமான சதுரங்க வடிவங்களை நீங்கள் எப்போதும் காணலாம்.

எடிட்டருடன் விளையாடும்போது, ​​இந்த பைட்டுகளிலிருந்து புகைப்படம் எவ்வாறு மீண்டும் உருவாக்கப்படுகிறது என்பதைப் புரிந்துகொள்வது கடினம், ஏனெனில் JPEG சுருக்கமானது மூன்று வெவ்வேறு தொழில்நுட்பங்களைக் கொண்டுள்ளது, இது நிலைகளில் வரிசையாகப் பயன்படுத்தப்படுகிறது. நாம் பார்க்கும் மர்மமான நடத்தையை வெளிக்கொணர, ஒவ்வொன்றையும் தனித்தனியாக படிப்போம்.

JPEG சுருக்கத்தின் மூன்று நிலைகள்:

  1. வண்ண துணை மாதிரி.
  2. தனித்த கொசைன் உருமாற்றம் மற்றும் மாதிரி.
  3. நீள குறியாக்கத்தை இயக்கவும், டெல்டா и ஹஃப்மேன்

சுருக்கத்தின் அளவைப் பற்றிய ஒரு யோசனையை உங்களுக்கு வழங்க, மேலே உள்ள படம் 79 எண்கள் அல்லது சுமார் 819 KB ஐக் குறிக்கிறது என்பதைக் கவனியுங்கள். நாம் அதை சுருக்காமல் சேமித்தால், ஒவ்வொரு பிக்சலுக்கும் மூன்று எண்கள் தேவைப்படும் - சிவப்பு, பச்சை மற்றும் நீல கூறுகளுக்கு. இது 79 எண்கள் அல்லது தோராயமாக இருக்கும். 917 KB. JPEG சுருக்கத்தின் விளைவாக, இறுதி கோப்பு 700 மடங்குக்கு மேல் குறைக்கப்பட்டது!

உண்மையில், இந்த படத்தை இன்னும் அதிகமாக சுருக்கலாம். கீழே இரண்டு படங்கள் அருகருகே உள்ளன - வலதுபுறத்தில் உள்ள புகைப்படம் 16 KB ஆக சுருக்கப்பட்டுள்ளது, அதாவது சுருக்கப்படாத பதிப்பை விட 57 மடங்கு சிறியது!

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

நீங்கள் கூர்ந்து கவனித்தால், இந்த படங்கள் ஒரே மாதிரியாக இல்லை என்பதை நீங்கள் காண்பீர்கள். அவை இரண்டும் JPEG சுருக்கத்துடன் கூடிய படங்கள், ஆனால் சரியானது அளவு மிகவும் சிறியது. இது கொஞ்சம் மோசமாகத் தெரிகிறது (பின்னணி வண்ண சதுரங்களைப் பாருங்கள்). அதனால்தான் JPEG ஆனது இழப்பு சுருக்கம் என்றும் அழைக்கப்படுகிறது; சுருக்க செயல்பாட்டின் போது, ​​படம் மாறுகிறது மற்றும் சில விவரங்களை இழக்கிறது.

1. வண்ண துணை மாதிரி

சுருக்கத்தின் முதல் நிலை மட்டுமே பயன்படுத்தப்பட்ட ஒரு படம் இங்கே உள்ளது.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது
(ஊடாடும் பதிப்பு - இல் அசல் கட்டுரைகள்). ஒரு எண்ணை அகற்றுவது அனைத்து வண்ணங்களையும் அழிக்கிறது. இருப்பினும், சரியாக ஆறு எண்கள் அகற்றப்பட்டால், அது படத்தில் எந்த விளைவையும் ஏற்படுத்தாது.

இப்போது எண்களை புரிந்துகொள்வது சற்று எளிதாக உள்ளது. இது கிட்டத்தட்ட எளிய வண்ணங்களின் பட்டியல் ஆகும், இதில் ஒவ்வொரு பைட்டும் சரியாக ஒரு பிக்சலை மாற்றுகிறது, ஆனால் அதே நேரத்தில் இது ஏற்கனவே சுருக்கப்படாத படத்தின் பாதி அளவு உள்ளது (இந்த குறைக்கப்பட்ட அளவில் இது சுமார் 300 KB எடுக்கும்). ஏன் என்று உங்களால் யூகிக்க முடிகிறதா?

இந்த எண்கள் நிலையான சிவப்பு, பச்சை மற்றும் நீல கூறுகளைக் குறிக்கவில்லை என்பதை நீங்கள் காணலாம், ஏனெனில் அனைத்து எண்களையும் பூஜ்ஜியங்களுடன் மாற்றினால், பச்சைப் படத்தைப் பெறுவோம் (வெள்ளைக்கு பதிலாக).

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

ஏனெனில் இந்த பைட்டுகள் Y (பிரகாசம்)

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

சிபி (உறவினர் நீலநிறம்),

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

மற்றும் Cr (உறவினர் சிவப்பு) படங்கள்.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

ஏன் RGB ஐ பயன்படுத்தக்கூடாது? எல்லாவற்றிற்கும் மேலாக, பெரும்பாலான நவீன திரைகள் இப்படித்தான் செயல்படுகின்றன. ஒவ்வொரு பிக்சலுக்கும் வெவ்வேறு செறிவுகளுடன் சிவப்பு, பச்சை மற்றும் நீலம் உட்பட எந்த நிறத்தையும் உங்கள் மானிட்டர் காட்டலாம். மூன்றையும் முழு பிரகாசத்தில் இயக்கினால் வெள்ளையும், அவற்றை அணைப்பதன் மூலம் கருப்பும் பெறப்படுகிறது.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

இதுவும் மனிதக் கண் எவ்வாறு செயல்படுகிறது என்பதைப் போன்றது. நம் கண்களில் உள்ள வண்ண ஏற்பிகள் அழைக்கப்படுகின்றன "கூம்புகள்“, மற்றும் மூன்று வகைகளாகப் பிரிக்கப்படுகின்றன, அவை ஒவ்வொன்றும் சிவப்பு, பச்சை அல்லது நீல நிறங்களுக்கு அதிக உணர்திறன் கொண்டவை [S-வகை கூம்புகள் ஊதா-நீலத்தில் உணர்திறன் கொண்டவை (ஆங்கில ஷார்ட் - ஷார்ட்-வேவ் ஸ்பெக்ட்ரம்), எம் -வகை - பச்சை-மஞ்சள் நிறத்தில் (ஆங்கில மீடியத்தில் இருந்து எம் - நடுத்தர அலை), மற்றும் எல்-வகை - மஞ்சள்-சிவப்பு (ஆங்கிலத்திலிருந்து எல் லாங் - நீண்ட அலை) நிறமாலையின் பகுதிகள். இந்த மூன்று வகையான கூம்புகள் (மற்றும் தண்டுகள், ஸ்பெக்ட்ரமின் மரகத பச்சை பகுதியில் உணர்திறன் கொண்டவை) இருப்பது ஒரு நபருக்கு வண்ண பார்வையை அளிக்கிறது. / தோராயமாக மொழிபெயர்ப்பு.]. குச்சிகளை, நமது கண்களில் உள்ள மற்றொரு வகை ஒளிச்சேர்க்கை, பிரகாசத்தில் ஏற்படும் மாற்றங்களைக் கண்டறியும் திறன் கொண்டது, ஆனால் வண்ணத்திற்கு அதிக உணர்திறன் கொண்டது. நமது கண்களில் சுமார் 120 மில்லியன் தண்டுகள் மற்றும் 6 மில்லியன் கூம்புகள் மட்டுமே உள்ளன.

அதனால்தான் நிறத்தில் ஏற்படும் மாற்றங்களை விட பிரகாசத்தில் ஏற்படும் மாற்றங்களைக் கண்டறிவதில் நம் கண்கள் சிறந்தவை. நீங்கள் பிரகாசத்திலிருந்து நிறத்தை பிரித்தால், நீங்கள் ஒரு சிறிய நிறத்தை அகற்றலாம், யாரும் எதையும் கவனிக்க மாட்டார்கள். குரோமா துணை மாதிரி என்பது ஒரு படத்தின் வண்ண கூறுகளை ஒளிர்வு கூறுகளை விட குறைந்த தெளிவுத்திறனில் குறிக்கும் செயல்முறையாகும். மேலே உள்ள எடுத்துக்காட்டில், ஒவ்வொரு பிக்சலிலும் சரியாக ஒரு Y கூறு உள்ளது, மேலும் நான்கு பிக்சல்கள் கொண்ட ஒவ்வொரு குழுவும் சரியாக ஒரு Cb மற்றும் ஒரு Cr கூறுகளைக் கொண்டுள்ளது. எனவே, படத்தில் அசல் விட நான்கு மடங்கு குறைவான வண்ணத் தகவல்கள் உள்ளன.

YCbCr வண்ண இடம் JPEG இல் மட்டும் பயன்படுத்தப்படவில்லை. இது முதலில் தொலைக்காட்சி நிகழ்ச்சிகளுக்காக 1938 இல் கண்டுபிடிக்கப்பட்டது. அனைவருக்கும் வண்ண டிவி இல்லை, எனவே வண்ணத்தையும் பிரகாசத்தையும் பிரிப்பது அனைவருக்கும் ஒரே சமிக்ஞையைப் பெற அனுமதித்தது, மேலும் வண்ணம் இல்லாத டிவிகள் பிரகாசத்தின் கூறுகளை மட்டுமே பயன்படுத்துகின்றன.

எனவே எடிட்டரிலிருந்து ஒரு எண்ணை அகற்றுவது அனைத்து வண்ணங்களையும் முற்றிலும் அழிக்கிறது. கூறுகள் Y Y Y Y Cb Cr வடிவத்தில் சேமிக்கப்படுகின்றன (உண்மையில், அந்த வரிசையில் அவசியமில்லை - சேமிப்பக வரிசை கோப்பு தலைப்பில் குறிப்பிடப்பட்டுள்ளது). முதல் எண்ணை அகற்றுவது Cb இன் முதல் மதிப்பை Y ஆகவும், Cr என்பது Cb ஆகவும் உணரப்படும், மேலும் பொதுவாக நீங்கள் படத்தின் அனைத்து வண்ணங்களையும் மாற்றும் ஒரு டோமினோ விளைவைப் பெறுவீர்கள்.

JPEG விவரக்குறிப்பு YCbCr ஐப் பயன்படுத்த உங்களை கட்டாயப்படுத்தாது. ஆனால் பெரும்பாலான கோப்புகள் இதைப் பயன்படுத்துகின்றன, ஏனெனில் இது RGB ஐ விட சிறந்த தரமிறக்கப்பட்ட படங்களை உருவாக்குகிறது. ஆனால் நீங்கள் என் சொல்லை ஏற்க வேண்டியதில்லை. RGB மற்றும் YCbCr இரண்டிலும் ஒவ்வொரு தனிப்பட்ட கூறுகளின் துணை மாதிரி எப்படி இருக்கும் என்பதை கீழே உள்ள அட்டவணையில் நீங்களே பாருங்கள்.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது
(ஊடாடும் பதிப்பு - இல் அசல் கட்டுரைகள்).

நீல நிறத்தை அகற்றுவது சிவப்பு அல்லது பச்சை நிறத்தைப் போல கவனிக்கத்தக்கது அல்ல. உங்கள் கண்களில் ஆறு மில்லியன் கூம்புகள் இருப்பதால், சுமார் 64% சிவப்பு நிறத்திற்கும், 32% பச்சை நிறத்திற்கும், 2% நீல நிறத்திற்கும் உணர்திறன் கொண்டவை.

Y கூறுகளின் (கீழே இடதுபுறம்) இறக்கம் சிறப்பாகக் காணப்படுகிறது. ஒரு சிறிய மாற்றம் கூட கவனிக்கத்தக்கது.

RGB இலிருந்து YCbCr க்கு ஒரு படத்தை மாற்றுவது கோப்பு அளவைக் குறைக்காது, ஆனால் அது அகற்றக்கூடிய குறைவான புலப்படும் விவரங்களைக் கண்டறிவதை எளிதாக்குகிறது. இரண்டாவது கட்டத்தில் இழப்பு சுருக்கம் ஏற்படுகிறது. இது மிகவும் சுருக்கக்கூடிய வடிவத்தில் தரவை வழங்குவதற்கான யோசனையை அடிப்படையாகக் கொண்டது.

2. தனித்த கொசைன் உருமாற்றம் மற்றும் மாதிரி

சுருக்கத்தின் இந்த நிலை, பெரும்பாலும், JPEG எதைப் பற்றியது. வண்ணங்களை YCbCr ஆக மாற்றிய பிறகு, கூறுகள் தனித்தனியாக சுருக்கப்படுகின்றன, எனவே நாம் Y கூறுகளில் மட்டுமே கவனம் செலுத்த முடியும். மேலும் இந்த லேயரைப் பயன்படுத்திய பிறகு Y கூறு பைட்டுகள் எப்படி இருக்கும் என்பது இங்கே.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது
(ஊடாடும் பதிப்பு - இல் அசல் கட்டுரைகள்). ஊடாடும் பதிப்பில், ஒரு பிக்சலைக் கிளிக் செய்வதன் மூலம், எடிட்டரைக் குறிக்கும் வரிக்கு உருட்டும். முடிவில் இருந்து எண்களை அகற்றவும் அல்லது குறிப்பிட்ட எண்ணில் சில பூஜ்ஜியங்களைச் சேர்க்கவும்.

முதல் பார்வையில், இது மிகவும் மோசமான சுருக்கம் போல் தெரிகிறது. ஒரு படத்தில் 100 பிக்சல்கள் உள்ளன, மேலும் அவற்றின் பிரகாசத்தை (Y- கூறுகள்) பிரதிநிதித்துவப்படுத்த 000 எண்கள் தேவை - இது எதையும் சுருக்காமல் இருப்பதை விட மோசமானது!

இருப்பினும், இந்த எண்களில் பெரும்பாலானவை பூஜ்ஜியமாகும் என்பதை நினைவில் கொள்க. மேலும், வரிகளின் முடிவில் உள்ள அனைத்து பூஜ்ஜியங்களையும் படத்தை மாற்றாமல் அகற்றலாம். இன்னும் 26 எண்கள் உள்ளன, இது கிட்டத்தட்ட 000 மடங்கு குறைவு!

இந்த நிலை சதுரங்க வடிவங்களின் ரகசியத்தைக் கொண்டுள்ளது. நாம் பார்த்த பிற விளைவுகளைப் போலன்றி, இந்த வடிவங்களின் தோற்றம் ஒரு தடுமாற்றம் அல்ல. அவை முழு உருவத்தின் கட்டுமானத் தொகுதிகள். எடிட்டரின் ஒவ்வொரு வரியும் சரியாக 64 எண்களைக் கொண்டுள்ளது, 64 தனித்துவமான வடிவங்களின் தீவிரத்தன்மைக்கு ஒத்த தனித்த கொசைன் டிரான்ஸ்ஃபார்ம் (DCT) குணகங்கள்.

இந்த வடிவங்கள் கொசைன் சதித்திட்டத்தின் அடிப்படையில் உருவாகின்றன. அவற்றில் சில எப்படி இருக்கும் என்பது இங்கே:

JPEG வடிவம் எவ்வாறு செயல்படுகிறது
8 முரண்பாடுகளில் 64

அனைத்து 64 வடிவங்களையும் காட்டும் படம் கீழே உள்ளது.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது
(ஊடாடும் பதிப்பு - இல் அசல் கட்டுரைகள்).

இந்த வடிவங்கள் குறிப்பாக முக்கியத்துவம் வாய்ந்தவை, ஏனெனில் அவை 8x8 படங்களின் அடிப்படையை உருவாக்குகின்றன. நேரியல் இயற்கணிதம் உங்களுக்குத் தெரியாவிட்டால், இந்த 8 வடிவங்களிலிருந்து எந்த 8x64 படத்தையும் உருவாக்க முடியும். DCT என்பது படங்களை 8x8 தொகுதிகளாகப் பிரித்து ஒவ்வொரு தொகுதியையும் இந்த 64 குணகங்களின் கலவையாக மாற்றும் செயல்முறையாகும்.

எந்த ஒரு படத்தையும் 64 குறிப்பிட்ட வடிவங்களைக் கொண்டு உருவாக்க முடியும் என்பது மந்திரம் போல் தெரிகிறது. இருப்பினும், இது பூமியில் உள்ள எந்த இடத்தையும் இரண்டு எண்களால் விவரிக்க முடியும் என்று சொல்வது ஒன்றே - அட்சரேகை மற்றும் தீர்க்கரேகை [அரைக்கோளங்களைக் குறிக்கும் / தோராயமாக. மொழிபெயர்ப்பு.]. பூமியின் மேற்பரப்பை இரு பரிமாணமாக நாம் அடிக்கடி நினைக்கிறோம், எனவே நமக்கு இரண்டு எண்கள் மட்டுமே தேவை. 8x8 படம் 64 பரிமாணங்களைக் கொண்டுள்ளது, எனவே நமக்கு 64 எண்கள் தேவை.

சுருக்கத்தின் அடிப்படையில் இது எவ்வாறு நமக்கு உதவுகிறது என்பது இன்னும் தெளிவாகத் தெரியவில்லை. 64x8 படத்தைப் பிரதிநிதித்துவப்படுத்த 8 எண்கள் தேவைப்பட்டால், 64 பிரகாசம் கூறுகளை சேமிப்பதை விட இது ஏன் சிறப்பாக இருக்கும்? நாங்கள் மூன்று RGB எண்களை மூன்று YCbCr எண்களாக மாற்றிய அதே காரணத்திற்காக இதைச் செய்கிறோம்: இது நுட்பமான விவரங்களை அகற்ற அனுமதிக்கிறது.

JPEG DCTஐ 8x8 தொகுதிகளுக்குப் பயன்படுத்துவதால், இந்த கட்டத்தில் என்ன விவரம் அகற்றப்பட்டது என்பதைப் பார்ப்பது கடினம். இருப்பினும், முழு படத்திற்கும் அதைப் பயன்படுத்துவதை யாரும் தடை செய்யவில்லை. முழு படத்திற்கும் பயன்படுத்தப்படும் Y கூறுக்கு DCT எப்படி இருக்கும் என்பது இங்கே:

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

60 க்கும் மேற்பட்ட எண்களை முடிவில் இருந்து அகற்ற முடியும்.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

இருப்பினும், முதல் ஐந்து எண்களை பூஜ்ஜியமாக்கினால், வித்தியாசம் தெளிவாகத் தெரியும்.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

தொடக்கத்தில் உள்ள எண்கள் படத்தில் குறைந்த அதிர்வெண் மாற்றங்களைக் குறிக்கின்றன, அதை நம் கண்கள் சிறப்பாக எடுத்துக் கொள்கின்றன. முடிவில் உள்ள எண்கள் அதிக அதிர்வெண்களில் ஏற்படும் மாற்றங்களைக் குறிப்பிடுவது மிகவும் கடினம். "கண்ணால் பார்க்க முடியாததைப் பார்க்க", முதல் 5000 எண்களை பூஜ்ஜியமாக்குவதன் மூலம் இந்த உயர் அதிர்வெண் விவரங்களைத் தனிமைப்படுத்தலாம்.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

பிக்சலில் இருந்து பிக்சலுக்கு மிகப்பெரிய மாற்றம் ஏற்படும் படத்தின் அனைத்து பகுதிகளையும் நாம் காண்கிறோம். பூனையின் கண்கள், விஸ்கர்ஸ், டெர்ரி போர்வை மற்றும் கீழ் இடது மூலையில் உள்ள நிழல்கள் தனித்து நிற்கின்றன. முதல் 10 எண்களை பூஜ்ஜியமாக்குவதன் மூலம் நீங்கள் மேலும் செல்லலாம்:

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

20 000:

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

40 000:

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

60 000:

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

இந்த உயர் அதிர்வெண் விவரங்கள் சுருக்க நிலையின் போது JPEG ஆல் அகற்றப்படும். நிறங்களை DCT குணகங்களாக மாற்றுவதில் எந்த இழப்பும் இல்லை. உயர் அதிர்வெண் அல்லது பூஜ்ஜியத்திற்கு அருகில் உள்ள மதிப்புகள் அகற்றப்படும் மாதிரி படிநிலையில் இழப்பு ஏற்படுகிறது. நீங்கள் JPEG சேமிப்பு தரத்தை குறைக்கும்போது, ​​நிரல் நீக்கப்பட்ட மதிப்புகளின் எண்ணிக்கையை அதிகரிக்கிறது, இது கோப்பு அளவைக் குறைக்கிறது, ஆனால் படத்தை மேலும் பிக்சலேட்டாக மாற்றுகிறது. அதனால்தான் முதல் பிரிவில் 57 மடங்கு சிறியதாக இருந்த படம் இப்படி இருந்தது. ஒவ்வொரு 8x8 தொகுதியும் உயர் தரமான பதிப்போடு ஒப்பிடும்போது மிகக் குறைவான DCT குணகங்களால் குறிப்பிடப்படுகிறது.

படங்களை படிப்படியாக ஸ்ட்ரீமிங் செய்வது போன்ற குளிர்ச்சியான விளைவை நீங்கள் உருவாக்கலாம். மேலும் மேலும் குணகங்கள் பதிவிறக்கம் செய்யப்படுவதால், நீங்கள் ஒரு மங்கலான படத்தைக் காட்டலாம்.

இங்கே, வேடிக்கைக்காக, நீங்கள் 24 எண்களைப் பயன்படுத்துகிறீர்கள்:

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

அல்லது 5000:

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

மிகவும் மங்கலானது, ஆனால் எப்படியோ அடையாளம் காணக்கூடியது!

3. நீள குறியாக்கம், டெல்டா மற்றும் ஹஃப்மேன் ஆகியவற்றை இயக்கவும்

இதுவரை, சுருக்கத்தின் அனைத்து நிலைகளும் இழக்கப்பட்டுள்ளன. கடைசி நிலை, மாறாக, இழப்புகள் இல்லாமல் தொடர்கிறது. இது தகவலை நீக்காது, ஆனால் இது கோப்பு அளவைக் கணிசமாகக் குறைக்கிறது.

தகவலைத் தூக்கி எறியாமல் எதையாவது சுருக்குவது எப்படி? 700 x 437 என்ற எளிய கருப்பு செவ்வகத்தை எப்படி விவரிப்போம் என்று கற்பனை செய்து பாருங்கள்.

JPEG இதற்கு 5000 எண்களைப் பயன்படுத்துகிறது, ஆனால் மிகச் சிறந்த முடிவுகளை அடைய முடியும். முடிந்தவரை சில பைட்டுகளில் அத்தகைய படத்தை விவரிக்கும் ஒரு குறியீட்டு திட்டத்தை உங்களால் கற்பனை செய்ய முடியுமா?

நான் கொண்டு வரக்கூடிய குறைந்தபட்ச திட்டம் நான்கைப் பயன்படுத்துகிறது: மூன்று ஒரு நிறத்தைக் குறிக்கவும், நான்காவது அந்த நிறத்தில் எத்தனை பிக்சல்கள் உள்ளன என்பதைக் குறிக்கவும். இந்த அமுக்கப்பட்ட வழியில் மீண்டும் மீண்டும் மதிப்புகளைக் குறிக்கும் யோசனை ரன்-லெந்த் குறியாக்கம் என்று அழைக்கப்படுகிறது. குறியிடப்பட்ட தரவை அதன் அசல் வடிவத்திற்கு மீட்டெடுக்க முடியும் என்பதால் இது இழப்பற்றது.

கருப்பு செவ்வகத்துடன் கூடிய JPEG கோப்பு 4 பைட்டுகளை விட பெரியது - DCT அளவில், 8x8 பிக்சல் தொகுதிகளுக்கு சுருக்கம் பயன்படுத்தப்படுகிறது என்பதை நினைவில் கொள்ளுங்கள். எனவே, குறைந்தபட்சம், ஒவ்வொரு 64 பிக்சல்களுக்கும் ஒரு DCT குணகம் தேவை. 63 பூஜ்ஜியங்களைத் தொடர்ந்து ஒரு DCT குணகத்தை சேமிப்பதற்குப் பதிலாக, ரன் நீளக் குறியாக்கம் ஒரு எண்ணைச் சேமித்து "மற்ற அனைத்தும் பூஜ்ஜியங்கள்" என்பதைக் குறிக்க அனுமதிக்கிறது.

டெல்டா குறியாக்கம் என்பது ஒரு நுட்பமாகும், இதில் ஒவ்வொரு பைட்டும் ஒரு முழுமையான மதிப்பைக் காட்டிலும் சில மதிப்பின் வேறுபாட்டைக் கொண்டுள்ளது. எனவே, சில பைட்டுகளைத் திருத்துவது மற்ற எல்லா பிக்சல்களின் நிறத்தையும் மாற்றுகிறது. உதாரணமாக, சேமிப்பதற்கு பதிலாக

12 13 14 XX XX XX XX XX XX

நாம் 12 இல் தொடங்கி, அடுத்த எண்ணைப் பெற எவ்வளவு சேர்க்க வேண்டும் அல்லது கழிக்க வேண்டும் என்பதைக் குறிப்பிடலாம். டெல்டா குறியீட்டில் இந்த வரிசை வடிவம் எடுக்கிறது:

12 1 1 0 0 -1 0 1

மாற்றப்பட்ட தரவு அசல் தரவை விட சிறியதாக இல்லை, ஆனால் அதை சுருக்குவது எளிது. ரன் நீள குறியாக்கத்திற்கு முன் டெல்டா குறியாக்கத்தைப் பயன்படுத்துவது இழப்பற்ற சுருக்கமாக இருக்கும்போது நிறைய உதவும்.

டெல்டா குறியீட்டு முறை 8x8 தொகுதிகளுக்கு வெளியே பயன்படுத்தப்படும் சில நுட்பங்களில் ஒன்றாகும். 64 டிசிடி குணகங்களில் ஒன்று நிலையான அலைச் செயல்பாடாகும் (திட நிறம்). இது லுமா கூறுகளுக்கான ஒவ்வொரு தொகுதியின் சராசரி பிரகாசம் அல்லது சிபி கூறுகளுக்கான சராசரி நீலத்தன்மை மற்றும் பலவற்றைக் குறிக்கிறது. ஒவ்வொரு DCT தொகுதியின் முதல் மதிப்பு DC மதிப்பு என அழைக்கப்படுகிறது, மேலும் ஒவ்வொரு DC மதிப்பும் முந்தைய மதிப்புகளுடன் டெல்டா குறியாக்கம் செய்யப்பட்டுள்ளது. எனவே, முதல் தொகுதியின் பிரகாசத்தை மாற்றுவது அனைத்து தொகுதிகளையும் பாதிக்கும்.

இறுதி மர்மம் உள்ளது: ஒருமையை மாற்றுவது எப்படி முழு படத்தையும் அழிக்கிறது? இதுவரை, சுருக்க நிலைகள் அத்தகைய பண்புகளைக் கொண்டிருக்கவில்லை. பதில் JPEG தலைப்பில் உள்ளது. முதல் 500 பைட்டுகள் படத்தைப் பற்றிய மெட்டாடேட்டாவைக் கொண்டிருக்கின்றன - அகலம், உயரம் போன்றவை, நாங்கள் இன்னும் அவற்றுடன் வேலை செய்யவில்லை.

தலைப்பு இல்லாமல் JPEG ஐ டிகோட் செய்வது கிட்டத்தட்ட சாத்தியமற்றது (அல்லது மிகவும் கடினம்). நான் படத்தை உங்களுக்கு விவரிக்க முயற்சிப்பது போல் தோன்றும், மேலும் எனது உணர்வை வெளிப்படுத்தும் வகையில் வார்த்தைகளை உருவாக்கத் தொடங்குகிறேன். விளக்கம் மிகவும் சுருக்கமாக இருக்கும், ஏனென்றால் நான் சொல்ல விரும்பும் அர்த்தத்துடன் சொற்களை என்னால் கண்டுபிடிக்க முடியும், ஆனால் மற்ற அனைவருக்கும் அவை அர்த்தமுள்ளதாக இருக்காது.

இது முட்டாள்தனமாகத் தெரிகிறது, ஆனால் அதுதான் நடக்கும். ஒவ்வொரு JPEG படமும் அதற்கேற்ற குறியீடுகளுடன் சுருக்கப்பட்டுள்ளது. குறியீட்டு அகராதி தலைப்பில் சேமிக்கப்பட்டுள்ளது. இந்த நுட்பம் ஹஃப்மேன் குறியீடு என்றும் சொல்லகராதி ஹஃப்மேன் அட்டவணை என்றும் அழைக்கப்படுகிறது. தலைப்பில், அட்டவணை இரண்டு பைட்டுகளால் குறிக்கப்பட்டுள்ளது - 255 மற்றும் பின்னர் 196. ஒவ்வொரு வண்ண கூறுகளும் அதன் சொந்த அட்டவணையைக் கொண்டிருக்கலாம்.

அட்டவணையில் மாற்றங்கள் எந்த படத்தையும் தீவிரமாக பாதிக்கும். 15 வது வரியை 1 ஆக மாற்றுவது ஒரு சிறந்த எடுத்துக்காட்டு.

JPEG வடிவம் எவ்வாறு செயல்படுகிறது

தனிப்பட்ட பிட்களை எவ்வாறு படிக்க வேண்டும் என்பதை அட்டவணைகள் குறிப்பிடுவதால் இது நிகழ்கிறது. இதுவரை நாம் தசம வடிவில் பைனரி எண்களுடன் மட்டுமே வேலை செய்துள்ளோம். ஆனால், ஒரு பைட்டில் எண் 1ஐ சேமித்து வைக்க வேண்டுமானால், அது 00000001 ஆக இருக்கும் என்ற உண்மையை இது எங்களிடமிருந்து மறைக்கிறது, ஏனெனில் ஒவ்வொரு பைட்டிலும் சரியாக எட்டு பிட்கள் இருக்க வேண்டும், அவற்றில் ஒன்று மட்டுமே தேவைப்பட்டாலும் கூட.

உங்களிடம் நிறைய சிறிய எண்கள் இருந்தால், இது ஒரு பெரிய இடத்தை வீணடிக்கும். ஹஃப்மேன் குறியீடு என்பது ஒவ்வொரு எண்ணும் எட்டு பிட்களை ஆக்கிரமிக்க வேண்டும் என்ற இந்த தேவையை தளர்த்த அனுமதிக்கும் ஒரு நுட்பமாகும். இதன் பொருள் நீங்கள் இரண்டு பைட்டுகளைக் கண்டால்:

234 115

பின்னர், ஹஃப்மேன் அட்டவணையைப் பொறுத்து, இவை மூன்று எண்களாக இருக்கலாம். அவற்றை பிரித்தெடுக்க, நீங்கள் முதலில் அவற்றை தனித்தனி பிட்களாக பிரிக்க வேண்டும்:

11101010 01110011

அவற்றை எவ்வாறு குழுவாக்குவது என்பதைக் கண்டுபிடிக்க அட்டவணையைப் பார்க்கிறோம். எடுத்துக்காட்டாக, இது முதல் ஆறு பிட்கள், (111010), அல்லது தசமத்தில் 58, அதைத் தொடர்ந்து ஐந்து பிட்கள் (10011), அல்லது 19, இறுதியாக கடைசி நான்கு பிட்கள் (0011), அல்லது 3.

எனவே, சுருக்கத்தின் இந்த கட்டத்தில் பைட்டுகளைப் புரிந்துகொள்வது மிகவும் கடினம். பைட்டுகள் தோன்றுவதைக் குறிக்கவில்லை. இந்த கட்டுரையில் அட்டவணையுடன் பணிபுரியும் விவரங்களுக்கு நான் செல்ல மாட்டேன், ஆனால் பொருட்கள் இந்த பிரச்சினையில் ஆன்லைனில் போதுமானது.

இந்த அறிவைக் கொண்டு நீங்கள் செய்யக்கூடிய ஒரு சுவாரஸ்யமான தந்திரம் JPEG இலிருந்து தலைப்பைப் பிரித்து தனித்தனியாக சேமிப்பது. உண்மையில், நீங்கள் மட்டுமே கோப்பைப் படிக்க முடியும் என்று மாறிவிடும். கோப்புகளை இன்னும் சிறியதாக மாற்ற ஃபேஸ்புக் இதைச் செய்கிறது.

வேறு என்ன செய்ய முடியும் என்பது ஹஃப்மேன் அட்டவணையை சிறிது மாற்றுவதுதான். மற்றவர்களுக்கு அது உடைந்த படம் போல இருக்கும். அதை சரிசெய்யும் மந்திர வழியும் உங்களுக்கு மட்டுமே தெரியும்.

சுருக்கமாகக் கூறுவோம்: எனவே JPEG ஐ டிகோட் செய்ய என்ன தேவை? அவசியம்:

  1. தலைப்பிலிருந்து ஹஃப்மேன் அட்டவணை(களை) பிரித்தெடுத்து பிட்களை டிகோட் செய்யவும்.
  2. ஒவ்வொரு 8x8 பிளாக்கிற்கும் ஒவ்வொரு வண்ணம் மற்றும் ஒளிர்வு கூறுகளுக்கான தனித்த கொசைன் டிரான்ஸ்ஃபார்ம் குணகங்களை பிரித்தெடுக்கவும், தலைகீழ் ரன்-நீளம் மற்றும் டெல்டா குறியாக்க மாற்றங்களைச் செய்கிறது.
  3. ஒவ்வொரு 8x8 தொகுதிக்கும் பிக்சல் மதிப்புகளைப் பெற குணகங்களின் அடிப்படையில் கொசைன்களை இணைக்கவும்.
  4. துணை மாதிரிகள் செய்யப்பட்டிருந்தால் வண்ண கூறுகளை அளவிடவும் (இந்த தகவல் தலைப்பில் உள்ளது).
  5. ஒவ்வொரு பிக்சலுக்கான YCbCr மதிப்புகளை RGBக்கு மாற்றவும்.
  6. படத்தை திரையில் காட்டு!

பூனையுடன் புகைப்படத்தை வெறுமனே பார்ப்பதற்கான தீவிர வேலை! இருப்பினும், இதில் நான் விரும்புவது என்னவென்றால், மனிதனை மையமாகக் கொண்ட JPEG தொழில்நுட்பம் எவ்வளவு என்பதைக் காட்டுகிறது. இது நமது உணர்வின் தனித்தன்மையை அடிப்படையாகக் கொண்டது, இது வழக்கமான தொழில்நுட்பங்களை விட மிகச் சிறந்த சுருக்கத்தை அடைய அனுமதிக்கிறது. இப்போது JPEG எவ்வாறு செயல்படுகிறது என்பதை நாம் புரிந்து கொண்டுள்ளோம், இந்த தொழில்நுட்பங்களை மற்ற பகுதிகளுக்கு எவ்வாறு மாற்றலாம் என்பதை நாம் கற்பனை செய்யலாம். எடுத்துக்காட்டாக, வீடியோவில் டெல்டா குறியாக்கம் கோப்பு அளவைக் கணிசமாகக் குறைக்கும், ஏனெனில் சட்டத்திலிருந்து சட்டத்திற்கு மாறாத முழு பகுதிகளும் பெரும்பாலும் உள்ளன (எடுத்துக்காட்டாக, பின்னணி).

கட்டுரையில் பயன்படுத்தப்பட்ட குறியீடு, திறந்திருக்கும், மேலும் படங்களை உங்கள் சொந்தமாக மாற்றுவது எப்படி என்பதற்கான வழிமுறைகளைக் கொண்டுள்ளது.

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

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