JPEG algoritmi bo'yicha to'liq qo'llanma: uning tamoyillari, qo'llanilishi, afzalliklari va kamchiliklari. JPEG siqish va raqamli tasvirlashga ta'sirini bilib oling.
Tasvirni siqish: JPEG algoritmining sirlarini ochish
Bugungi raqamli dunyoda tasvirlar hamma joyda. Ijtimoiy tarmoqlardan tortib veb-saytlar va mobil ilovalargacha, vizual kontent aloqa va axborot almashishda hal qiluvchi rol o'ynaydi. Biroq, yuqori aniqlikdagi tasvirlar sezilarli darajada saqlash joyi va o'tkazuvchanlikni talab qilishi mumkin, bu esa yuklanish vaqtining sekinlashishiga va saqlash xarajatlarining oshishiga olib keladi. Aynan shu yerda tasvirni siqish texnikasi yordamga keladi. Mavjud bo'lgan turli xil tasvirni siqish usullari orasida JPEG algoritmi eng keng tarqalgan va tan olingan standartlardan biri sifatida ajralib turadi. Ushbu maqola JPEG algoritmini, uning asosiy tamoyillarini, qo'llanilishini, afzalliklari va kamchiliklarini tushunish uchun to'liq qo'llanmani taqdim etadi.
Tasvirni siqish nima?
Tasvirni siqish - bu tasvir fayli hajmini uning vizual sifatini sezilarli darajada pasaytirmasdan kamaytirish jarayonidir. Maqsad, tasvirning qabul qilinadigan darajadagi ishonchliligini saqlab qolgan holda saqlash joyi va o'tkazuvchanlik talablarini minimallashtirishdir. Tasvirni siqish texnikasini keng ma'noda ikki toifaga bo'lish mumkin:
- Yo'qotishsiz siqish: Ushbu usullar tasvirdagi barcha asl ma'lumotlarni saqlaydi. Siqilgan tasvir ochilganda, u asl tasvir bilan bir xil bo'ladi. Yo'qotishsiz siqish tibbiy tasvirlar yoki arxiv hujjatlari kabi har bir detalni saqlash muhim bo'lgan tasvirlar uchun javob beradi. Bunga PNG va GIF misol bo'ladi.
- Yo'qotishli siqish: Ushbu usullar yuqori siqish nisbatlariga erishish uchun ba'zi tasvir ma'lumotlarini qurbon qiladi. Ochilgan tasvir asl nusxasi bilan bir xil emas, lekin ma'lumotlarning yo'qolishi ko'pincha inson ko'zi uchun sezilmaydi. Yo'qotishli siqish veb-saytlardagi fotosuratlar kabi kichikroq fayl hajmi evaziga ba'zi bir buzilishlar qabul qilinadigan tasvirlar uchun javob beradi. JPEG yo'qotishli siqishning yorqin namunasidir.
JPEG algoritmi bilan tanishuv
JPEG (Joint Photographic Experts Group - Birlashgan Fotografiya Ekspertlari Guruhi) - bu raqamli tasvirlar uchun keng qo'llaniladigan yo'qotishli siqish algoritmidir. U 1992-yilda standartlashtirilgan va o'shandan beri fotografik tasvirlarni saqlash va almashish uchun asosiy formatga aylangan. JPEG algoritmi inson ko'rish xususiyatlaridan foydalanib, qabul qilinadigan tasvir sifatini saqlagan holda yuqori siqish nisbatlariga erishadi. U inson ko'zi uchun kamroq seziladigan ma'lumotlarni, masalan, yuqori chastotali detallar va ranglarning nozik o'zgarishlarini olib tashlash orqali ishlaydi.
JPEG algoritmi yagona algoritm emas, balki bir qator texnika va variantlardan iborat. Eng keng tarqalgan ishlash rejimi - bu asosiy JPEG bo'lib, u o'zining asosiy transformatsiyasi sifatida Diskret Kosinus Transformatsiyasidan (DKT) foydalanadi. Ushbu qo'llanmada biz asosiy JPEG ga e'tibor qaratamiz.
JPEG algoritmining asosiy bosqichlari
JPEG algoritmi quyida keltirilgan bir nechta asosiy bosqichlarni o'z ichiga oladi:
1. Ranglar fazosini o'zgartirish
JPEG algoritmidagi birinchi qadam tasvirni asl ranglar fazosidan (masalan, RGB) YCbCr deb nomlangan boshqa ranglar fazosiga o'zgartirishdir. Bu ranglar fazosi tasvirni uchta komponentga ajratadi:
- Y (Yorqinlik): Tasvirning yorqinligi yoki intensivligini ifodalaydi.
- Cb (Xrominantlik Moviy): Moviy komponent va yorqinlik o'rtasidagi farqni ifodalaydi.
- Cr (Xrominantlik Qizil): Qizil komponent va yorqinlik o'rtasidagi farqni ifodalaydi.
Ushbu o'zgartirishning sababi shundaki, inson ko'zi xrominantlik (rang) o'zgarishlariga qaraganda yorqinlik (brightness) o'zgarishlariga ko'proq sezgir. Ushbu komponentlarni ajratish orqali, JPEG algoritmi qabul qilingan tasvir sifati uchun muhim bo'lgan yorqinlik ma'lumotlarini saqlashga ustuvor ahamiyat berishi mumkin.
Misol: Smartfon yordamida olingan raqamli fotosurat odatda RGB ranglar fazosida saqlanadi. JPEG algoritmi keyingi siqish bosqichlariga o'tishdan oldin bu tasvirni avval YCbCr ga o'zgartiradi.
2. Xroma subsamplingi (Chroma Subsampling)
YCbCr ranglar fazosiga o'zgartirilgandan so'ng, JPEG algoritmi odatda xroma subsamplingini (chrominance subsampling deb ham ataladi) amalga oshiradi. Bu usul ba'zi rang ma'lumotlarini o'rtachalashtirish yoki olib tashlash orqali xrominantlik komponentlarini (Cb va Cr) ifodalovchi ma'lumotlar miqdorini kamaytiradi. Inson ko'zi rang o'zgarishlariga kamroq sezgir bo'lgani uchun, bu jarayon qabul qilingan tasvir sifatiga sezilarli ta'sir qilmasdan fayl hajmini sezilarli darajada kamaytirishi mumkin.
Keng tarqalgan xroma subsampling nisbatlariga 4:4:4 (subsampling yo'q), 4:2:2 (gorizontal subsampling) va 4:2:0 (gorizontal va vertikal subsampling) kiradi. 4:2:0 nisbati har to'rtta yorqinlik namunasi uchun ikkita Cb namunasi va ikkita Cr namunasi mavjudligini anglatadi. Bu xrominantlik ma'lumotlari miqdorining 50% ga kamayishiga olib keladi.
Misol: Yuqori aniqlikdagi tasvir maksimal rang ishonchliligini saqlab qolish uchun 4:4:4 xroma subsamplingidan foydalanishi mumkin. Biroq, veb tasvirlar uchun tasvir sifati va fayl hajmi o'rtasidagi yaxshiroq muvozanatga erishish uchun ko'pincha 4:2:0 subsampling ishlatiladi.
3. Bloklarga bo'lish
JPEG algoritmi tasvirni 8x8 pikselli bloklarga ajratadi. Keyin har bir blok mustaqil ravishda qayta ishlanadi. Ushbu bloklarga asoslangan yondashuv parallel ishlov berish imkonini beradi va keyingi bosqich bo'lgan Diskret Kosinus Transformatsiyasini (DKT) hisoblashni soddalashtiradi.
Misol: 640x480 pikselli tasvir 4800 ta 8x8 pikselli bloklarga bo'linadi (640/8 * 480/8 = 80 * 60 = 4800).
4. Diskret Kosinus Transformatsiyasi (DKT)
Diskret Kosinus Transformatsiyasi (DKT) - bu har bir 8x8 pikselli blokni fazoviy sohadan chastota sohasiga o'zgartiradigan matematik transformatsiyadir. Chastota sohasida har bir blok 64 ta DKT koeffitsientlari to'plami bilan ifodalanadi, ular turli fazoviy chastotalarning amplitudasini aks ettiradi.
DKT signal energiyasining ko'p qismini bir nechta past chastotali koeffitsientlarga jamlash xususiyatiga ega. Buning sababi, tabiiy tasvirlar silliq o'zgarishlar va rang hamda intensivlikdagi asta-sekin o'zgarishlarga ega bo'ladi. O'tkir qirralar va mayda detallarni ifodalovchi yuqori chastotali koeffitsientlar odatda kichikroq amplitudaga ega bo'ladi.
Misol: Silliq gradientni o'z ichiga olgan 8x8 blokni ko'rib chiqing. DKT qo'llanilgandan so'ng, DC komponentiga (o'rtacha qiymat) mos keladigan koeffitsient katta bo'ladi, yuqori chastotalarga mos keladigan koeffitsientlar esa nolga yaqin bo'ladi.
5. Kvantlash
Kvantlash - bu JPEG algoritmidagi yuqori siqish nisbatlariga erishish uchun eng muhim qadamdir. U har bir DKT koeffitsientini kvantlash qiymatiga bo'lish va natijani eng yaqin butun songa yaxlitlashni o'z ichiga oladi. Kvantlash qiymatlari JPEG algoritmining muhim parametri bo'lgan kvantlash jadvalida ko'rsatilgan. Turli xil siqish darajalari va tasvir sifatiga erishish uchun turli xil kvantlash jadvallaridan foydalanish mumkin.
Kvantlash jarayoni DKT koeffitsientlarida mavjud bo'lgan ba'zi ma'lumotlarni olib tashlash orqali yo'qotishga olib keladi. Inson ko'zi uchun kamroq seziladigan yuqori chastotali koeffitsientlar odatda past chastotali koeffitsientlarga qaraganda tajovuzkorroq kvantlanadi (ya'ni, kattaroq qiymatlarga bo'linadi). Bu yuqori chastotali koeffitsientlarning ko'prog'i nolga aylanishiga olib keladi, bu esa siqishga hissa qo'shadi.
Misol: Qiymati 10 bo'lgan koeffitsient 5 kvantlash qiymati bilan kvantlanishi mumkin, natijada kvantlangan qiymat 2 bo'ladi (10/5 = 2). Qiymati 2 bo'lgan koeffitsient 10 kvantlash qiymati bilan kvantlanishi mumkin, natijada kvantlangan qiymat 0 bo'ladi (2/10 = 0.2, 0 ga yaxlitlanadi). Bu kichikroq qiymatlarning nolga teng bo'lish ehtimoli yuqori ekanligini va bu siqishga olib kelishini ko'rsatadi.
6. Entropiya kodlash
Kvantlashdan so'ng, kvantlangan DKT koeffitsientlari entropiya kodlash usullari yordamida yanada siqiladi. Entropiya kodlash - bu ma'lumotlarni yanada samaraliroq ifodalash uchun ularning statistik xususiyatlaridan foydalanadigan yo'qotishsiz siqish usulidir. JPEG algoritmi odatda ikkita entropiya kodlash usulidan foydalanadi:
- Ketma-ketlik uzunligi bo'yicha kodlash (RLE): RLE har bir 8x8 blok ichidagi kvantlangan DKT koeffitsientlari ketma-ketligini siqish uchun ishlatiladi. DKT koeffitsientlari odatda zig-zag tartibida joylashtiriladi, bu esa nol qiymatli koeffitsientlarni bir guruhga to'playdi. RLE uzun nol ketma-ketliklarini bitta qiymat sifatida kodlaydi, bu esa ma'lumotlar miqdorini sezilarli darajada kamaytiradi.
- Xaffman kodlashi: Xaffman kodlashi - bu tez-tez uchraydigan belgilarga qisqaroq kodlar va kam uchraydigan belgilarga uzunroq kodlar beradigan o'zgaruvchan uzunlikdagi kodlash sxemasidir. JPEG algoritmi Xaffman kodlashidan ham DC koeffitsientlarini (har bir blokdagi birinchi koeffitsient) ham AC koeffitsientlarini (qolgan koeffitsientlar) kodlash uchun foydalanadi.
Misol: Kvantlangan DKT koeffitsientlari ketma-ketligini ko'rib chiqing: [10, 5, 0, 0, 0, 0, 0, -2, 0, 0, ...]. RLE bu ketma-ketlikni [10, 5, (0, 5), -2, (0, 2), ...] sifatida kodlashi mumkin, bunda (0, 5) 5 ta nol ketma-ketligini ifodalaydi.
JPEG dekodlash jarayoni
JPEG dekodlash jarayoni kodlash jarayonining teskarisidir. U quyidagi bosqichlarni o'z ichiga oladi:
- Entropiya dekodlash: Entropiya bilan kodlangan ma'lumotlar Xaffman dekodlashi va Ketma-ketlik uzunligi bo'yicha dekodlash yordamida kvantlangan DKT koeffitsientlarini tiklash uchun dekodlanadi.
- Dekvantlash: Kvantlangan DKT koeffitsientlari asl DKT koeffitsientlarini taxmin qilish uchun kvantlash jadvalidagi mos keladigan kvantlash qiymatlariga ko'paytiriladi.
- Teskari Diskret Kosinus Transformatsiyasi (TDKT): TDKT har bir 8x8 DKT koeffitsientlari blokiga ularni fazoviy sohaga qaytarish uchun qo'llaniladi, natijada tiklangan piksel qiymatlari hosil bo'ladi.
- Xroma yuqori diskretlash (Chroma Upsampling): Agar kodlash paytida xroma subsamplingi ishlatilgan bo'lsa, xrominantlik komponentlari asl aniqligiga qaytariladi.
- Ranglar fazosini o'zgartirish: Tasvir YCbCr ranglar fazosidan asl ranglar fazosiga (masalan, RGB) qaytariladi.
JPEG algoritmining afzalliklari
JPEG algoritmi uning keng tarqalishiga hissa qo'shgan bir qancha afzalliklarga ega:
- Yuqori siqish nisbatlari: JPEG, ayniqsa silliq gradientli va kamroq keskin detallarga ega tasvirlar uchun yuqori siqish nisbatlariga erisha oladi. Bu kichikroq fayl hajmini ta'minlaydi, bu esa saqlash joyi va o'tkazuvchanlik talablarini kamaytiradi.
- Sozlanuvchan sifat: Siqish darajasini tasvir sifati va fayl hajmi o'rtasidagi muvozanatni nazorat qilish uchun sozlash mumkin. Bu foydalanuvchilarga o'zlarining ehtiyojlariga mos keladigan siqish darajasini tanlash imkonini beradi.
- Keng moslik: JPEG deyarli barcha tasvir ko'ruvchilar, muharrirlar va veb-brauzerlar tomonidan qo'llab-quvvatlanadi. Bu uni juda ko'p qirrali va qulay formatga aylantiradi.
- Progressiv JPEG: Progressiv JPEG - bu JPEG algoritmining bir varianti bo'lib, u tasvir yuklanayotganda uni bosqichma-bosqich ko'rsatishga imkon beradi. Bu, ayniqsa, katta yoki sekin ulanish orqali yuklanayotgan tasvirlar uchun yaxshiroq foydalanuvchi tajribasini ta'minlaydi.
JPEG algoritmining kamchiliklari
Afzalliklariga qaramay, JPEG algoritmining ba'zi kamchiliklari ham mavjud:
- Yo'qotishli siqish: JPEG yo'qotishli siqish algoritmi bo'lib, bu siqish jarayonida ba'zi tasvir ma'lumotlari yo'qolishini anglatadi. Bu, ayniqsa, yuqori siqish nisbatlarida tasvir sifatining pasayishiga olib kelishi mumkin.
- Blokli artefaktlar: Yuqori siqish nisbatlarida JPEG algoritmining bloklarga asoslangan ishlovi ko'rinadigan blokli artefaktlarga olib kelishi mumkin, ular tasvirda sezilarli kvadrat bloklar sifatida paydo bo'ladi. Bu artefaktlar, ayniqsa, silliq gradientli joylarda seziladi.
- Matn va chiziqli san'at uchun samarasiz: JPEG matn, chiziqli san'at yoki keskin qirralarni o'z ichiga olgan tasvirlarni siqish uchun unchalik mos emas. Bunday turdagi tasvirlar ko'pincha JPEG algoritmi tomonidan olib tashlanadigan yuqori chastotali detallarni o'z ichiga oladi, bu esa xira yoki buzilgan ko'rinishga olib keladi.
- Bir necha tahrirlash sikllari uchun mos emas: JPEG yo'qotishli bo'lgani uchun JPEG tasvirini qayta-qayta tahrirlash va qayta saqlash sifatning kumulyativ yo'qolishiga olib keladi. Bir nechta tahrirlash sikllarini talab qiladigan tasvirlar uchun PNG yoki TIFF kabi yo'qotishsiz formatdan foydalanish yaxshiroqdir.
JPEG algoritmining qo'llanilishi
JPEG algoritmi keng ko'lamli ilovalarda qo'llaniladi, jumladan:
- Veb tasvirlar: JPEG - vebdagi tasvirlar uchun eng keng tarqalgan format. Uning yuqori siqish nisbatlari sahifalarni yuklash vaqtini qisqartirish va o'tkazuvchanlik sarfini minimallashtirish uchun ideal qiladi.
- Raqamli fotografiya: Aksariyat raqamli kameralar fotosuratlarni saqlash uchun standart format sifatida JPEG dan foydalanadi. Bu xotira kartasida juda ko'p tasvir sifatini yo'qotmasdan ko'p sonli tasvirlarni saqlash imkonini beradi.
- Ijtimoiy tarmoqlar: Facebook, Instagram va Twitter kabi ijtimoiy media platformalari foydalanuvchi tomonidan yuklangan tasvirlarni siqish va saqlash uchun JPEG dan foydalanadi.
- Tasvirlarni arxivlash: Yo'qotishli tabiati tufayli muhim tasvirlarni uzoq muddatli arxivlash uchun ideal bo'lmasa-da, JPEG ko'pincha saqlash joyi asosiy muammo bo'lgan va sifatning biroz pasayishi qabul qilinadigan tasvirlarni arxivlash uchun ishlatiladi.
- Video siqish: JPEG, shuningdek, Motion JPEG (MJPEG) kabi ba'zi video siqish standartlari uchun asos sifatida ishlatiladi.
JPEG alternativlari va kelajakdagi tendensiyalar
JPEG dominant format bo'lib qolayotgan bo'lsa-da, so'nggi yillarda yaxshilangan unumdorlik va xususiyatlarni taklif qiluvchi bir nechta muqobil tasvir siqish algoritmlari paydo bo'ldi:
- JPEG 2000: JPEG 2000 - bu asl JPEG algoritmidan bir necha afzalliklarni taklif qiluvchi yangi tasvir siqish standarti, jumladan, yaxshiroq siqish nisbatlari, yo'qotishsiz siqishni qo'llab-quvvatlash va yuqori chastotali detallarni yaxshiroq boshqarish. Biroq, JPEG 2000 yuqori hisoblash murakkabligi va litsenziyalash muammolari tufayli JPEG kabi keng tarqalishga erisha olmadi.
- WebP: WebP - Google tomonidan ishlab chiqilgan tasvir formati bo'lib, u ham yo'qotishsiz, ham yo'qotishli siqishni taklif etadi. WebP odatda JPEG ga qaraganda yaxshiroq siqish nisbatlarini ta'minlaydi, shu bilan birga taqqoslanadigan yoki yaxshiroq tasvir sifatini saqlaydi. U vebda tobora ko'proq foydalanilmoqda va aksariyat zamonaviy brauzerlar tomonidan qo'llab-quvvatlanadi.
- HEIF (High Efficiency Image File Format): HEIF - bu yuqori samarali video kodlash (HEVC) siqish standartidan foydalanadigan tasvirlar va videolar uchun konteyner formatidir. HEIF ajoyib siqish samaradorligini taklif etadi va animatsiya, shaffoflik va chuqurlik ma'lumotlari kabi keng ko'lamli xususiyatlarni qo'llab-quvvatlaydi. U Apple'ning iOS qurilmalarida qo'llaniladi va tobora ko'proq qabul qilinmoqda.
- AVIF (AV1 Image File Format): AVIF - bu AV1 video kodekiga asoslangan tasvir formatidir. U JPEG ga qaraganda ancha yaxshi siqishni ta'minlaydi, shu bilan birga taqqoslanadigan yoki yaxshiroq tasvir sifatini taklif etadi. AVIF ochiq manbali tabiati va yirik texnologiya kompaniyalari tomonidan qo'llab-quvvatlanishi tufayli mashhurlik kasb etmoqda.
Tasvirni siqish kelajagi yuqori sifatli tasvirlar va videolarga bo'lgan talabning ortib borishi, shuningdek, saqlash joyi va o'tkazuvchanlik sarfini kamaytirish zarurati bilan belgilanadi. WebP, HEIF va AVIF kabi yangi siqish algoritmlari eskirgan JPEG standartiga nisbatan yaxshilangan unumdorlik va xususiyatlarni taklif qilib, raqamli landshaftda yanada muhim rol o'ynashga tayyor. Biroq, JPEG ning keng tarqalgan mosligi uning ko'p yillar davomida dolzarbligini saqlab qolishini ta'minlaydi.
Xulosa
JPEG algoritmi o'nlab yillar davomida raqamli tasvirlashning tamal toshi bo'lib kelgan. Uning qabul qilinadigan tasvir sifatini saqlab qolgan holda yuqori siqish nisbatlariga erishish qobiliyati uni fotografik tasvirlarni saqlash va almashish uchun dominant formatga aylantirdi. JPEG algoritmining tamoyillari va cheklovlarini tushunish raqamli tasvirlar bilan ishlaydigan har bir kishi uchun muhimdir, xoh ular fotosuratchilar, veb-dasturchilar yoki grafik dizaynerlar bo'lsin. Yangi tasvir siqish algoritmlari paydo bo'layotgan bo'lsa-da, JPEG ning merosi va keng tarqalgan mosligi uning raqamli dunyoda doimiy ahamiyatini ta'minlaydi.
JPEG algoritmining nozikliklarini tushunib, siz tasvirni siqish bo'yicha ongli qarorlar qabul qilishingiz va tasvirlaringizni turli ilovalar uchun optimallashtirishingiz mumkin, bunda tasvir sifati, fayl hajmi va moslikni muvozanatlab, eng yaxshi natijalarga erishasiz.