Kumaha format JPEG jalan

Gambar JPEG aya ubiquitous dina kahirupan digital urang, tapi di balik veneer kasadaran ieu algoritma nu miceun detil nu teu katempo ku panon manusa. Hasilna mangrupikeun kualitas visual anu paling luhur dina ukuran file pangleutikna - tapi kumaha persisna sadayana tiasa dianggo? Hayu urang tingali naon anu henteu katingali ku panon urang!

Kumaha format JPEG jalan

Gampang pikeun nganggap kamampuan ngirim poto ka réréncangan sareng henteu hariwang ngeunaan alat naon, browser atanapi sistem operasi anu aranjeunna anggo - tapi éta henteu salawasna. Dina awal taun 1980-an, komputer bisa nyimpen jeung mintonkeun gambar digital, tapi aya loba pamanggih competing ngeunaan cara pangalusna pikeun ngalakukeun ieu. Anjeun teu bisa ngan ngirim hiji gambar ti hiji komputer ka nu sejen tur miharep éta bakal jalan.

Pikeun ngajawab masalah ieu, hiji panitia ahli ti sakuliah dunya dirakit dina 1986 disebut "Grup Gabungan Para Ahli Fotografi» (Joint Photographic Experts Group, JPEG), diadegkeun salaku usaha babarengan antara International Organization for Standardization (ISO) jeung International Electrotechnical Commission (IEC), dua organisasi standar internasional anu kantor pusatna di Jenéwa, Swiss.

Sakelompok jalma anu disebut JPEG nyiptakeun standar komprési gambar digital JPEG dina 1992. Saha waé anu parantos nganggo Internét sigana parantos mendakan gambar anu disandikeun JPEG. Ieu mangrupikeun cara anu paling umum pikeun encode, ngirim sareng nyimpen gambar. Tina halaman wéb dugi ka email ka média sosial, JPEG dianggo milyaran kali sadinten-ampir unggal waktos urang ningali gambar online atanapi ngirimkeunana. Tanpa JPEG, wéb bakal janten kirang warni, langkung laun, sareng sigana langkung sakedik gambar ucing!

Tulisan ieu ngeunaan kumaha cara nga-decode gambar JPEG. Dina basa sejen, naon anu diperlukeun pikeun ngarobah data dikomprés disimpen dina komputer kana hiji gambar nu nembongan dina layar. Ieu kedah terang, sanés ngan ukur pentingna ngartos téknologi anu kami anggo unggal dinten, tapi ogé ku cara muka konci tingkat komprési, urang langkung seueur diajar ngeunaan persépsi sareng visi, sareng rinci naon anu paling sénsitip kana panon urang.

Sajaba ti éta, maén kalawan gambar ku cara ieu pisan metot.

Kumaha format JPEG jalan

Ningali jero JPEG

Dina komputer, sagalana disimpen salaku runtuyan angka binér. Biasana bit ieu, nol sareng hiji, dikelompokkeun dina grup dalapan pikeun ngadamel bait. Lamun anjeun muka gambar JPEG dina komputer, hiji hal (browser, sistem operasi, hal sejenna) kudu decode bait, malikkeun gambar aslina salaku daptar kelir nu bisa ditampilkeun.

Upami anjeun ngaunduh amis ieu poto ucing sareng buka dina pangropéa téksu, anjeun bakal ningali sakumpulan karakter anu teu koheren.

Kumaha format JPEG jalan
Di dieu kuring nganggo Notepad ++ pikeun nguji eusi file, sabab pangropéa téksu biasa sapertos Notepad dina Windows bakal ngaruksak file binér saatos disimpen sareng éta moal nyugemakeun format JPEG.

Muka gambar dina prosesor kecap ngabingungkeun komputer, sapertos anjeun ngabingungkeun uteuk nalika anjeun ngagosok panon sareng mimiti ningali bintik-bintik warna!

bintik ieu nu katingali katelah phosphenes, sarta lain hasil tina stimulus cahaya atawa halusinasi dihasilkeun ku pikiran. Éta lumangsung kusabab uteuk anjeun nyangka yén sinyal listrik dina saraf optik ngirimkeun inpormasi ngeunaan cahaya. Otak kedah ngadamel asumsi ieu kusabab teu aya jalan pikeun terang naha sinyal mangrupikeun sora, visi, atanapi anu sanés. Sadaya saraf dina awak ngirimkeun impuls listrik anu sami. Ku nerapkeun tekanan kana panon anjeun, anjeun ngirim sinyal nu teu visual, tapi ngaktipkeun reséptor panon, nu otak anjeun interprets - dina hal ieu, salah - salaku hal visual. Anjeun sacara harfiah tiasa ningali tekanan!

Lucuna mun dipikir kumaha komputer sarupa otak, tapi oge analogi mangpaat pikeun ngagambarkeun sabaraha harti data-naha dibawa ngaliwatan awak ku saraf atawa disimpen dina komputer-gumantung kana interpretasi na. Sakabéh data binér diwangun ku XNUMXs jeung XNUMXs, komponén dasar nu bisa nepikeun informasi nanaon. Komputer anjeun sering terang kumaha napsirkeunana nganggo petunjuk sapertos ekstensi file. Ayeuna urang maksakeun pikeun napsirkeunana salaku téks, sabab éta anu diarepkeun ku pangropéa téksu.

Pikeun ngartos kumaha carana nga-decode JPEG, urang kedah ningali sinyal asli sorangan - data binér. Ieu tiasa dilakukeun nganggo redaktur heksadesimal, atanapi langsung halaman wéb artikel asli! Aya hiji gambar, gigireun nu dina widang téks sadayana bait na (iwal lulugu), dibere dina bentuk decimal. Anjeun tiasa ngarobah éta, sarta naskah bakal ulang encode sarta ngahasilkeun gambar anyar dina laleur nu.

Kumaha format JPEG jalan

Anjeun tiasa diajar seueur ngan ku maén sareng éditor ieu. Contona, anjeun tiasa ngabejaan naon urutan piksel disimpen dina?

Anu aneh ngeunaan conto ieu nyaéta yén ngarobih sababaraha nomer henteu mangaruhan gambar, tapi, contona, upami anjeun ngagentos nomer 17 sareng 0 dina garis kahiji, potona bakal ancur!

Kumaha format JPEG jalan

Parobihan anu sanés, sapertos ngagentos 7 on line 1988 sareng nomer 254, ngarobih warna, tapi ngan ukur piksel anu salajengna.

Kumaha format JPEG jalan

Panginten anu paling anéh nyaéta sababaraha nomer anu robih henteu ngan ukur warna, tapi ogé bentuk gambar. Ngarobah 70 dina garis 12 ka 2 jeung kasampak di baris luhur gambar pikeun nempo naon atuh hartina.

Kumaha format JPEG jalan

Sareng naon waé gambar JPEG anu anjeun anggo, anjeun bakal salawasna mendakan pola catur misterius ieu nalika ngédit bait.

Nalika maén sareng pangropéa, sesah ngartos kumaha poto didamel deui tina bait ieu, sabab komprési JPEG diwangun ku tilu téknologi anu béda, dilarapkeun sacara berurutan dina tingkat. Urang bakal diajar masing-masing sacara misah pikeun mendakan paripolah misterius anu urang tingali.

Tilu tingkat komprési JPEG:

  1. Subsampling warna.
  2. Transformasi kosinus diskrit sareng sampling.
  3. Ngajalankeun encoding panjang, délta и Huffman

Pikeun masihan anjeun ide ngeunaan gedéna komprési, perhatikeun yén gambar di luhur ngagambarkeun 79 angka, atanapi sakitar 819 KB. Lamun urang nyimpen eta tanpa komprési, unggal piksel bakal merlukeun tilu angka - pikeun komponén beureum, héjo sarta bulao. Ieu bakal jumlahna 79 angka, atawa approx. 917 KB. Salaku hasil tina komprési JPEG, file final diréduksi ku leuwih ti 700 kali!

Kanyataanna, gambar ieu tiasa dikomprés langkung seueur. Di handap ieu aya dua gambar sisi-demi - poto di katuhu geus dikomprés nepi ka 16 KB, nyaeta, 57 kali leuwih leutik batan versi uncompressed!

Kumaha format JPEG jalan

Upami anjeun ningali taliti, anjeun bakal ningali yén gambar-gambar ieu henteu idéntik. Duanana nyaéta gambar sareng komprési JPEG, tapi anu leres langkung alit dina volume. Éta ogé katingalina rada parah (tingali kotak warna latar tukang). Éta sababna JPEG disebut ogé komprési lossy; Salila prosés komprési, gambar robah sarta leungit sababaraha rinci.

1. Warna subsampling

Ieu gambar anu ngan ukur tingkat komprési anu diterapkeun.

Kumaha format JPEG jalan
(Vérsi interaktif - di aslina artikel). Nyoplokkeun hiji angka ngancurkeun sakabéh kelir. Sanajan kitu, lamun persis genep angka dihapus, éta ampir euweuh pangaruh dina gambar.

Ayeuna angka-angkana rada gampang di-decipher. Ieu ampir daptar kelir basajan, nu unggal bait robah persis hiji piksel, tapi dina waktos anu sareng eta geus satengah ukuran gambar uncompressed (anu bakal nyandak nepi ka 300 KB dina ukuran ngurangan ieu). Naha anjeun tiasa nebak naha?

Anjeun tiasa ningali yén angka-angka ieu henteu ngawakilan komponén beureum, héjo, sareng biru standar, sabab upami urang ngagentos sadaya nomer sareng nol, urang bakal nampi gambar héjo (tinimbang bodas).

Kumaha format JPEG jalan

Ieu kusabab bait ieu nangtung pikeun Y (kacaangan),

Kumaha format JPEG jalan

Cb (relatif biruang),

Kumaha format JPEG jalan

jeung Cr (relatif redness) gambar.

Kumaha format JPEG jalan

Naha henteu nganggo RGB? Barina ogé, ieu téh kumaha paling layar modern jalan. Monitor anjeun tiasa ningalikeun warna naon waé, kalebet beureum, héjo sareng biru, kalayan inténsitas anu béda pikeun tiap piksel. Bodas dimeunangkeun ku cara ngahurungkeun tiluanana dina kacaangan pinuh, sarta hideung ku cara mareuman.

Kumaha format JPEG jalan

Ieu ogé pisan sarupa kumaha panon manusa jalan. Reséptor warna dina panon urang disebut ".congcot", sarta dibagi kana tilu jenis, nu masing-masing leuwih sénsitip boh beureum, héjo, atawa bulao kelir [S-tipe congcot sénsitip dina Violet-biru (S ti Inggris Short - spéktrum gelombang pondok), M -type - dina héjo-konéng (M ti Inggris Medium - sedeng-gelombang), sarta L-tipe - dina konéng-beureum (L ti Inggris Long - long-gelombang) bagian spéktrum. Ayana tilu jenis ieu congcot (jeung rod, nu sénsitip dina bagian héjo Empang spéktrum) méré hiji jalma visi warna. / kira-kira. tarjamah.]. Batang, tipe séjén photoreceptor dina panon urang, sanggup ngadeteksi parobahan kacaangan, tapi leuwih sénsitip kana warna. Panon urang boga kira 120 juta rod sarta ngan 6 juta congcot.

Éta sababna panon urang langkung saé pikeun ngadeteksi parobahan kacaangan tibatan parobahan warna. Upami anjeun misahkeun warna tina kacaangan, anjeun tiasa ngahapus warna sakedik sareng teu aya anu bakal perhatikeun nanaon. Chroma subsampling nyaéta prosés ngagambarkeun komponén warna gambar dina résolusi nu leuwih handap ti komponén luminance. Dina conto di luhur, unggal piksel boga persis hiji komponén Y, sarta unggal grup individu opat piksel boga persis hiji Cb na hiji komponén Cr. Ku alatan éta, gambar ngandung informasi warna opat kali kirang ti aslina.

Rohangan warna YCbCr digunakeun lain ngan dina JPEG. Ieu mimitina nimukeun dina 1938 pikeun program televisi. Henteu sadayana gaduh TV warna, janten misahkeun warna sareng kacaangan ngamungkinkeun sadayana nampi sinyal anu sami, sareng TV tanpa warna ngan ukur nganggo komponén kacaangan.

Janten ngahapus hiji nomer tina éditor lengkep ngarusak sadaya warna. Komponén disimpen dina bentuk YYYY Cb Cr (kanyataanna, teu merta dina urutan éta - urutan gudang dieusian dina lulugu file). Nyoplokkeun angka kahiji bakal ngabalukarkeun nilai mimiti Cb bisa katarima salaku Y, Cr salaku Cb, sarta sacara umum anjeun bakal boga pangaruh domino nu pindah sadaya kelir dina gambar.

Spésifikasi JPEG henteu maksa anjeun nganggo YCbCr. Tapi sabagéan ageung file nganggo éta sabab ngahasilkeun gambar anu langkung saé tibatan RGB. Tapi anjeun henteu kedah nyandak kecap kuring pikeun éta. Tempo sorangan dina tabel di handap naon subsampling unggal komponén individu bakal kasampak kawas duanana RGB na YCbCr.

Kumaha format JPEG jalan
(Vérsi interaktif - di aslina artikel).

Ngaleungitkeun biru henteu katingali sapertos beureum atanapi héjo. Éta kusabab genep juta kerucut dina panon anjeun, sakitar 64% sénsitip kana beureum, 32% héjo sareng 2% bulao.

The downsampling sahiji komponén Y (kénca handap) pangalusna ditempo. Malah parobahan leutik téh noticeable.

Ngarobih gambar tina RGB ka YCbCr henteu ngirangan ukuran file, tapi ngagampangkeun milarian detil anu kirang katingali anu tiasa dihapus. Komprési lossy lumangsung dina tahap kadua. Éta dumasar kana ide pikeun nampilkeun data dina bentuk anu langkung tiasa dikomprés.

2. Transformasi kosinus diskrit jeung sampling

Tingkat komprési ieu, sabagéan ageung, naon waé JPEG. Saatos ngarobah warna kana YCbCr, komponén anu dikomprés individual, ku kituna urang lajeng bisa konsentrasi dina ngan komponén Y. Sarta di dieu Kang naon bait komponén Y kasampak kawas sanggeus nerapkeun lapisan ieu.

Kumaha format JPEG jalan
(Vérsi interaktif - di aslina artikel). Dina versi interaktif, ngaklik hiji piksel ngagulung redaktur ka garis nu ngagambarkeun eta. Coba miceun angka ti tungtung atawa tambahkeun sababaraha nol kana angka nu tangtu.

Dina glance kahiji, eta Sigana mah komprési pisan goréng. Aya 100 piksel dina hiji gambar, jeung nu diperlukeun 000 angka pikeun ngagambarkeun kacaangan maranéhanana (Y-komponén) - éta leuwih goreng ti compressing nanaon pisan!

Nanging, perhatikeun yén kalolobaan nomer ieu nol. Leuwih ti éta, sakabéh éta nol dina tungtung garis bisa dihapus tanpa ngarobah gambar. Aya ngeunaan 26 angka ditinggalkeun, sarta ieu ampir 000 kali kirang!

Tingkat ieu ngandung rusiah pola catur. Beda sareng épék anu sanés anu urang tingali, penampilan pola ieu sanés gangguan. Aranjeunna blok wangunan sakabéh gambar. Unggal garis redaktur ngandung persis 64 angka, koefisien transformasi kosinus diskrit (DCT) pakait jeung inténsitas 64 pola unik.

Pola-pola ieu dibentuk dumasar kana plot kosinus. Ieu naon sababaraha di antarana kasampak kawas:

Kumaha format JPEG jalan
8 ti 64 odds

Di handap ieu hiji gambar némbongkeun sakabéh 64 pola.

Kumaha format JPEG jalan
(Vérsi interaktif - di aslina artikel).

Pola-pola ieu penting pisan sabab janten dasar gambar 8x8. Upami anjeun teu biasa sareng aljabar linier, ieu hartosna gambar 8x8 tiasa didamel tina 64 pola ieu. DCT mangrupikeun prosés ngabagi gambar kana blok 8x8 sareng ngarobih unggal blok kana kombinasi 64 koefisien ieu.

Sigana mah sihir yén gambar naon waé tiasa diwangun ku 64 pola khusus. Sanajan kitu, ieu téh sarua jeung nyebutkeun yén sagala tempat di Bumi bisa digambarkeun ku dua angka - lintang jeung bujur [nunjukkeun hemispheres / approx. tarjamah]. Urang mindeng nganggap beungeut Bumi salaku dua diménsi, jadi urang ngan butuh dua angka. Gambar 8x8 gaduh 64 diménsi, janten urang peryogi 64 angka.

Henteu acan écés kumaha ieu ngabantosan urang dina hal komprési. Upami urang peryogi 64 nomer pikeun ngagambarkeun gambar 8x8, naha ieu langkung saé tibatan nyimpen 64 komponén kacaangan? Kami ngalakukeun ieu kusabab alesan anu sami kami ngarobih tilu nomer RGB janten tilu nomer YCbCr: ngamungkinkeun urang ngahapus detil halus.

Hésé ningali rinci naon anu dihapus dina tahap ieu kusabab JPEG nerapkeun DCT kana blok 8x8. Nanging, teu aya anu ngalarang urang pikeun nerapkeun éta kana gambar sadayana. Kieu naon rupa DCT pikeun komponén Y anu diterapkeun kana gambar sadayana:

Kumaha format JPEG jalan

Langkung ti 60 nomer tiasa dihapus tina tungtung kalayan ampir henteu aya parobahan anu katingali dina poto.

Kumaha format JPEG jalan

Sanajan kitu, dicatet yén lamun urang nol kaluar lima angka munggaran, bédana bakal atra.

Kumaha format JPEG jalan

Angka di awal ngagambarkeun parobahan frékuénsi low dina gambar, nu panon urang nyokot pangalusna. Angka nuju tungtung nunjukkeun parobahan dina frékuénsi luhur anu leuwih hese perhatikeun. Pikeun "ningali naon anu teu tiasa ditingali ku panon," urang tiasa ngasingkeun detil frekuensi tinggi ieu ku ngaleungitkeun 5000 nomer anu munggaran.

Kumaha format JPEG jalan

Kami ningali sadaya daérah gambar dimana parobihan pangageungna lumangsung tina piksel ka piksel. Panon ucing, kumis, simbut terry jeung kalangkang di belah kénca juru handap nangtung kaluar. Anjeun tiasa langkung jauh ku ngaleungitkeun 10 nomer anu munggaran:

Kumaha format JPEG jalan

20 000:

Kumaha format JPEG jalan

40 000:

Kumaha format JPEG jalan

60 000:

Kumaha format JPEG jalan

Rincian frékuénsi luhur ieu dipiceun ku JPEG salami tahap komprési. Henteu aya rugi dina ngarobih warna kana koefisien DCT. Leungitna lumangsung dina hambalan sampling, dimana nilai frékuénsi luhur atawa deukeut-enol dihapus. Nalika anjeun nurunkeun kualitas nyimpen JPEG, program naékkeun ambang pikeun jumlah nilai anu dipiceun, anu ngirangan ukuran file, tapi ngajantenkeun gambar langkung piksel. Éta sababna gambar dina bagian kahiji, anu 57 kali langkung alit, sapertos kieu. Unggal blok 8x8 digambarkeun ku koefisien DCT jauh leuwih saeutik dibandingkeun versi kualitas luhur.

Anjeun tiasa nyiptakeun éfék anu saé sapertos aliran gambar bertahap. Anjeun tiasa mintonkeun gambar rumeuk nu jadi beuki loba detil sabab beuki loba koefisien diundeur.

Di dieu, ngan pikeun senang-senang, anu anjeun kéngingkeun ngan ukur nganggo 24 nomer:

Kumaha format JPEG jalan

Atawa ngan 5000:

Kumaha format JPEG jalan

Pisan rumeuk, tapi kumaha bae recognizable!

3. Ngajalankeun panjang encoding, délta sarta Huffman

Sajauh ieu, sadaya tahapan komprési parantos kaleungitan. Tahap panungtungan, sabalikna, proceeds tanpa karugian. Éta henteu ngahapus inpormasi, tapi sacara signifikan ngirangan ukuran file.

Kumaha anjeun tiasa niiskeun hiji hal tanpa ngalungkeun inpormasi? Bayangkeun kumaha urang ngajelaskeun sagi opat hideung sederhana 700 x 437.

JPEG nganggo 5000 angka pikeun ieu, tapi hasil anu langkung saé tiasa dihontal. Naha anjeun tiasa ngabayangkeun skéma encoding anu bakal ngajelaskeun gambar sapertos sakedik-gancang?

Skéma minimal kuring bisa datang nepi ka ngagunakeun opat: tilu keur ngagambarkeun warna, sarta kaopat pikeun nunjukkeun sabaraha piksel nu warna boga. Gagasan ngawakilan nilai ulangan ku cara anu kentel ieu disebut encoding panjang-panjang. Éta henteu rugi sabab urang tiasa mulangkeun data anu disandikeun kana bentuk aslina.

File JPEG sareng sagi opat hideung langkung ageung tibatan 4 bait - émut yén dina tingkat DCT, komprési diterapkeun ka blok 8x8 piksel. Ku alatan éta, sahenteuna, urang peryogi hiji koefisien DCT pikeun unggal 64 piksel. Urang kudu hiji sabab tinimbang nyimpen hiji koefisien DCT dituturkeun ku 63 nol, ngajalankeun panjang encoding ngamungkinkeun urang pikeun nyimpen hiji angka jeung nunjukkeun yén "sadayana batur nu nol."

Delta encoding nyaéta téhnik nu unggal bait ngandung béda ti sababaraha nilai, tinimbang hiji nilai mutlak. Ku alatan éta, ngédit bait tangtu ngarobah warna sakabéh piksel séjén. Contona, tinimbang nyimpen

12 13 14 14 14 13 13 14

Urang bisa mimitian ku 12 lajeng saukur nunjukkeun sabaraha urang kudu nambahan atawa ngurangan pikeun meunangkeun angka salajengna. Sareng urutan ieu dina coding délta nyandak bentuk:

12 1 1 0 0 -1 0 1

Data anu dirobih henteu langkung alit tibatan data asli, tapi langkung gampang pikeun ngompresna. Nerapkeun encoding délta sateuacan encoding panjang ngajalankeun tiasa ngabantosan pisan bari tetep komprési anu teu rugi.

Delta coding mangrupikeun salah sahiji ti saeutik téknik anu dianggo di luar blok 8x8. Tina 64 koefisien DCT, hiji ngan saukur fungsi gelombang konstan (warna padet). Ieu ngagambarkeun kacaangan rata-rata unggal blok pikeun komponén luma, atawa blueness rata pikeun komponén Cb, jeung saterusna. Nilai mimiti unggal blok DCT disebut nilai DC, sarta unggal nilai DC ieu délta disandi ku hormat ka saméméhna. Ku alatan éta, ngarobah kacaangan blok kahiji bakal mangaruhan sakabeh blok.

Misteri ahir tetep: kumaha carana ngarobah tunggal sagemblengna ngaruksak sakabeh gambar? Sajauh ieu, tingkat komprési teu acan gaduh sipat sapertos kitu. Jawabanna aya dina header JPEG. 500 bait munggaran ngandung metadata ngeunaan gambar - lebar, jangkungna, jeung sajabana, sarta kami geus teu digawekeun ku aranjeunna acan.

Tanpa lulugu ampir teu mungkin (atanapi sesah pisan) pikeun nga-decode JPEG. Éta bakal katingali saolah-olah kuring nyobian ngajelaskeun gambar ka anjeun, sareng kuring mimiti nyiptakeun kecap-kecap pikeun ngémutan kesan kuring. Pedaranana sigana bakal rada kentel, sabab kuring tiasa nyiptakeun kecap-kecap anu leres-leres hartos anu kuring hoyongkeun, tapi pikeun anu sanés aranjeunna moal asup akal.

Sigana bodo, tapi éta kahayang kajadian. Unggal gambar JPEG dikomprés ku kode khusus pikeun éta. Kamus kode disimpen dina lulugu. Téhnik ieu disebut kode Huffman jeung kosakata disebut tabel Huffman. Dina lulugu, tabél ditandaan ku dua bait - 255 lajeng 196. Unggal komponén warna bisa boga tabel sorangan.

Parobihan kana tabel bakal mangaruhan sacara radikal gambar naon waé. Conto anu saé nyaéta ngarobih garis ka-15 janten 1.

Kumaha format JPEG jalan

Ieu kajadian sabab tabel nangtukeun kumaha bit individu kudu dibaca. Sajauh ieu kami ngan ukur damel sareng nomer binér dina bentuk desimal. Tapi ieu nyumput ti urang kanyataan yén lamun rék nyimpen angka 1 dina bait a, éta bakal kasampak kawas 00000001, saprak unggal bait kudu persis dalapan bit, sanajan ngan hiji di antarana anu diperlukeun.

Ieu berpotensi runtah badag spasi lamun boga loba angka leutik. Kode Huffman nyaéta téknik anu ngamungkinkeun urang pikeun bersantai sarat yén unggal nomer kedah ngeusian dalapan bit. Ieu ngandung harti yén lamun ningali dua bait:

234 115

Lajeng, gumantung kana tabel Huffman, ieu bisa jadi tilu angka. Pikeun nimba aranjeunna, Anjeun mimitina kudu ngarecah aranjeunna kana bit individu:

11101010 01110011

Teras we tingali tabel pikeun terang kumaha carana ngagolongkeun aranjeunna. Contona, ieu bisa jadi genep bit kahiji, (111010), atawa 58 dina decimal, dituturkeun ku lima bit (10011), atawa 19, sarta ahirna opat bit panungtungan (0011), atawa 3.

Ku alatan éta, hésé pisan ngartos bait dina tahap ieu komprési. Bait henteu ngagambarkeun naon anu sigana. Kuring moal balik kana detil gawé bareng tabel dina artikel ieu, tapi bahan dina masalah ieu online cukup.

Hiji trik metot anjeun bisa ngalakukeun jeung pangaweruh ieu pikeun misahkeun lulugu ti JPEG tur nyimpen eta nyalira. Kanyataanna, tétéla yén ngan anjeun bisa maca file. Facebook ngalakukeun ieu pikeun ngajantenkeun file langkung alit.

Naon deui anu tiasa dilakukeun nyaéta ngarobih tabel Huffman sakedik. Pikeun batur éta bakal kasampak kawas gambar rusak. Sarta ngan anjeun bakal nyaho cara magis pikeun ngalereskeun eta.

Hayu urang nyimpulkeun: janten naon anu diperyogikeun pikeun decode JPEG? diperlukeun:

  1. Ekstrak tabel Huffman (s) tina lulugu jeung decode bit.
  2. Ékstrak koefisien transformasi kosinus diskrit pikeun tiap warna sareng komponén luminance pikeun tiap blok 8x8, ngalaksanakeun transformasi run-length sareng delta encoding.
  3. Gabungkeun kosinus dumasar kana koefisien pikeun kéngingkeun nilai piksel pikeun tiap blok 8x8.
  4. Skala komponén warna upami subsampling dilaksanakeun (inpormasi ieu aya dina lulugu).
  5. Ngarobih nilai YCbCr anu dihasilkeun pikeun tiap piksel ka RGB.
  6. Témbongkeun gambar dina layar!

Karya anu serius pikeun ngan ukur ningali poto sareng ucing! Nanging, anu kuring resep nyaéta yén éta nunjukkeun kumaha téknologi JPEG anu berpusat manusa. Hal ieu dumasar kana peculiarities persepsi urang, sahingga urang pikeun ngahontal komprési leuwih hadé ti téknologi konvensional. Sareng ayeuna urang ngartos kumaha jalanna JPEG, urang tiasa ngabayangkeun kumaha téknologi ieu tiasa dialihkeun ka daérah sanés. Contona, délta encoding dina video bisa nyadiakeun réduksi signifikan dina ukuran file, sabab aya mindeng sakabéh wewengkon nu teu robah ti pigura ka pigura (contona, latar).

Kode dipaké dina artikel, kabuka, sarta ngandung parentah tentang kumaha carana ngagentos gambar ku anjeun sorangan.

sumber: www.habr.com

Tambahkeun komentar