Carane format JPEG dianggo

Gambar JPEG ana ing endi-endi ing urip digital kita, nanging ing mburi kesadaran iki ana algoritma sing mbusak rincian sing ora bisa dingerteni dening mripat manungsa. Asil kasebut minangka kualitas visual sing paling dhuwur ing ukuran file sing paling cilik - nanging kepiye carane kabeh bisa digunakake? Ayo ndeleng apa sing ora katon mripat kita!

Carane format JPEG dianggo

Gampang banget kanggo ngirim foto menyang kanca lan ora kuwatir babagan piranti, browser utawa sistem operasi sing digunakake - nanging ora mesthi kedadeyan kasebut. Ing wiwitan taun 1980-an, komputer bisa nyimpen lan nampilake gambar digital, nanging ana akeh gagasan saingan babagan cara paling apik kanggo nindakake iki. Sampeyan ora bisa mung ngirim gambar saka komputer siji menyang komputer liyane lan ngarep-arep bisa.

Kanggo ngatasi masalah iki, panitia ahli saka sak ndonya diklumpukake ing taun 1986 kanthi jeneng "Kelompok Gabungan Pakar Fotografi» (Joint Photographic Experts Group, JPEG), didegaké minangka upaya gabungan antara International Organization for Standardization (ISO) lan International Electrotechnical Commission (IEC), loro organisasi standar internasional sing kantor pusaté ing Jenewa, Swiss.

Klompok wong sing diarani JPEG nggawe standar kompresi gambar digital JPEG ing taun 1992. Sapa wae sing wis nggunakake Internet mesthine nemoni gambar sing dikode JPEG. Iki minangka cara sing paling umum kanggo encode, ngirim lan nyimpen gambar. Saka kaca web kanggo email menyang media sosial, JPEG digunakake milyaran kaping dina-sakbenere saben kita ndeleng gambar online utawa ngirim. Tanpa JPEG, web bakal dadi kurang warni, luwih alon, lan bisa uga kurang gambar kucing!

Artikel iki babagan carane decode gambar JPEG. Ing tembung liyane, apa sing dibutuhake kanggo ngowahi data kompres sing disimpen ing komputer dadi gambar sing katon ing layar. Iki kudu dingerteni, ora mung amarga pentinge ngerti teknologi sing kita gunakake saben dina, nanging uga amarga mbukak kunci tingkat kompresi, kita sinau luwih akeh babagan persepsi lan sesanti, lan rincian apa sing paling sensitif mripat kita.

Kajaba iku, muter gambar kanthi cara iki menarik banget.

Carane format JPEG dianggo

Nggoleki ing JPEG

Ing komputer, kabeh disimpen minangka urutan nomer biner. Biasane bit iki, nol lan siji, diklompokaké ing klompok wolung kanggo nggawe bait. Nalika mbukak gambar JPEG ing komputer, soko (browser, sistem operasi, mergo) kudu decode bita, mulihake gambar asli minangka dhaptar werna sing bisa ditampilake.

Yen sampeyan download iki manis foto kucing lan mbukak ing editor teks, sampeyan bakal weruh Bunch saka karakter incoherent.

Carane format JPEG dianggo
Ing kene aku nggunakake Notepad ++ kanggo mriksa isi file kasebut, amarga editor teks biasa kaya Notepad ing Windows bakal ngrusak file binar sawise disimpen lan ora bakal marem format JPEG maneh.

Mbukak gambar ing prosesor tembung mbingungake komputer, kaya sampeyan mbingungake otak nalika sampeyan nggosok mata lan wiwit ndeleng bintik-bintik warna!

Titik sing sampeyan deleng iki dikenal minangka phosphene, lan dudu asil saka rangsangan cahya utawa halusinasi sing diasilake dening pikiran. Iki kedadeyan amarga otak sampeyan mikir yen sinyal listrik ing saraf optik ngirim informasi babagan cahya. Otak kudu nggawe asumsi kasebut amarga ora ana cara kanggo ngerti apa sinyal iku swara, sesanti, utawa liya-liyane. Kabeh saraf ing awak ngirimake impuls listrik sing padha. Kanthi ngetrapake tekanan ing mripat, sampeyan ngirim sinyal sing ora visual, nanging ngaktifake reseptor mripat, sing diinterpretasikake otak - ing kasus iki, salah - minangka visual. Sampeyan bisa kanthi harfiah ndeleng tekanan!

Iku lucu kanggo mikir bab carane komputer padha kanggo otak, nanging uga analogi migunani kanggo ilustrasi carane akeh makna saka data-apa digawa liwat awak dening syaraf utawa disimpen ing komputer-gumantung carane iku dijarwakake. Kabeh data binar digawe saka 0s lan 1s, komponen dhasar sing bisa ngirim informasi apa wae. Komputer sampeyan kerep ngerteni carane napsirake kanthi nggunakake pitunjuk kayata ekstensi file. Saiki kita meksa kanggo menehi interpretasi minangka teks, amarga iku sing dikarepake editor teks.

Kanggo mangerteni carane decode JPEG, kita kudu ndeleng sinyal asli dhewe - data binar. Iki bisa ditindakake kanthi nggunakake editor heksadesimal, utawa langsung kaca web artikel asli! Ana gambar, ing jejere kolom teks kabeh bita (kajaba header), ditampilake ing wangun desimal. Sampeyan bisa ngganti, lan script bakal maneh encode lan gawé gambar anyar ing fly.

Carane format JPEG dianggo

Sampeyan bisa sinau akeh mung kanthi muter karo editor iki. Contone, sampeyan bisa ngomong apa urutan piksel disimpen?

Sing aneh babagan conto iki yaiku ngganti sawetara nomer ora mengaruhi gambar, nanging, contone, yen sampeyan ngganti nomer 17 karo 0 ing baris pisanan, foto kasebut bakal rusak banget!

Carane format JPEG dianggo

Owah-owahan liyane, kayata ngganti 7 ing baris 1988 karo nomer 254, ngganti werna, nanging mung piksel sakteruse.

Carane format JPEG dianggo

Mbok menawa sing paling aneh yaiku sawetara nomer ngganti ora mung werna, nanging uga wangun gambar. Ngganti 70 ing baris 12 kanggo 2 lan katon ing baris ndhuwur gambar kanggo ndeleng apa maksudku.

Carane format JPEG dianggo

Lan apa wae gambar JPEG sing sampeyan gunakake, sampeyan bakal nemokake pola catur misterius nalika nyunting bait.

Nalika muter karo editor, angel ngerti carane foto digawe saka bait iki, amarga kompresi JPEG kasusun saka telung macem-macem teknologi, Applied sequentially ing tingkat. Kita bakal sinau saben wong kanthi kapisah kanggo nemokake prilaku misterius sing kita deleng.

Telung tingkat kompresi JPEG:

  1. Subsampling warna.
  2. Transformasi kosinus diskrit lan sampling.
  3. Run dawa enkoding, delta и Huffman

Kanggo menehi gambaran babagan gedhene kompresi, elinga yen gambar ing ndhuwur nuduhake 79 angka, utawa udakara 819 KB. Yen disimpen tanpa kompresi, saben piksel mbutuhake telung nomer - kanggo komponen abang, ijo lan biru. Iki bakal dadi 79 nomer, utawa kira-kira. 917 KB. Minangka asil saka kompresi JPEG, file final wis suda luwih saka 700 kaping!

Nyatane, gambar iki bisa dikompres luwih akeh. Ing ngisor iki ana rong gambar sisih-sisih - foto ing sisih tengen wis dikompres nganti 16 KB, yaiku, 57 kaping luwih cilik tinimbang versi sing ora dikompres!

Carane format JPEG dianggo

Yen sampeyan ndeleng kanthi cetha, sampeyan bakal weruh manawa gambar kasebut ora padha. Loro-lorone minangka gambar kanthi kompresi JPEG, nanging volume sing bener luwih cilik. Iku uga katon luwih elek (katon ing kothak werna latar mburi). Pramila JPEG uga disebut kompresi lossy; Sajrone proses kompresi, gambar diganti lan ilang sawetara rincian.

1. Warna subsampling

Iki minangka gambar kanthi mung tingkat kompresi pisanan sing ditrapake.

Carane format JPEG dianggo
(Versi interaktif - ing asline artikel). Mbusak siji nomer ngrusak kabeh werna. Nanging, yen persis enem nomer dibusak, wis sakbenere ora efek ing gambar.

Saiki angka-angka luwih gampang dideskripsikake. Iki meh dhaftar prasaja saka werna, kang saben bait ngganti persis siji piksel, nanging ing wektu sing padha wis setengah ukuran gambar uncompressed (sing bakal njupuk munggah bab 300 KB ing ukuran suda iki). Apa sampeyan bisa ngira kenapa?

Sampeyan bisa ndeleng manawa nomer kasebut ora nggambarake komponen abang, ijo, lan biru standar, amarga yen kita ngganti kabeh nomer karo nul, kita bakal entuk gambar ijo (tinimbang putih).

Carane format JPEG dianggo

Iki amarga bita kasebut minangka Y (padhang),

Carane format JPEG dianggo

Cb (relatif biru),

Carane format JPEG dianggo

lan Cr (relatif abang) gambar.

Carane format JPEG dianggo

Apa ora nggunakake RGB? Sawise kabeh, iki minangka cara paling akeh layar modern. Monitor sampeyan bisa nampilake warna apa wae, kalebu abang, ijo lan biru, kanthi intensitas sing beda kanggo saben piksel. Putih dipikolehi kanthi nguripake kabeh telu kanthi padhang, lan ireng kanthi mateni.

Carane format JPEG dianggo

Iki uga meh padha karo cara kerjane mripat manungsa. Reseptor warna ing mripat kita diarani "kerucut", lan dipérang dadi telung jinis, sing saben luwih sensitif marang werna abang, ijo, utawa biru [cones jinis S sensitif ing violet-biru (S saka Inggris Short - spektrum gelombang cendhak), M -jinis - ing ijo-kuning (M saka Inggris Sedheng - medium-gelombang), lan L-jinis - ing kuning-abang (L saka Inggris Long - long-gelombang) bagean spektrum. Ing ngarsane saka telung jinis cones iki (lan rod, kang sensitif ing bagean ijo zamrud saka spektrum) menehi wong sesanti werna. / kira-kira. nerjemahake]. Teken, jinis photoreceptor liyane ing mripat kita, bisa ndeteksi owah-owahan ing padhang, nanging luwih sensitif marang werna. Mripate kita duwe sekitar 120 yuta rod lan mung 6 yuta cones.

Mulane mripat kita luwih apik kanggo ndeteksi owah-owahan ing padhang tinimbang owah-owahan ing werna. Yen sampeyan misahake werna saka padhang, sampeyan bisa mbusak werna sing sethithik lan ora ana sing bakal weruh apa-apa. Chroma subsampling yaiku proses makili komponen warna saka gambar kanthi resolusi sing luwih murah tinimbang komponen luminance. Ing conto ing ndhuwur, saben piksel duwe persis siji komponen Y, lan saben klompok individu papat piksel duwe persis siji Cb lan siji komponen Cr. Mulane, gambar ngemot informasi werna kaping papat kurang saka asline.

Ruang warna YCbCr digunakake ora mung ing JPEG. Iki asline diciptakake ing taun 1938 kanggo program televisi. Ora saben wong duwe TV warna, mula misahake warna lan padhang ngidini saben wong entuk sinyal sing padha, lan TV tanpa warna mung nggunakake komponen padhang.

Dadi mbusak siji nomer saka editor rampung ngrusak kabeh werna. Komponen disimpen ing wangun YYYY Cb Cr (nyatane, ora kudu ing urutan kasebut - urutan panyimpenan kasebut ing header file). Njabut nomer pisanan bakal nimbulaké Nilai pisanan saka Cb bakal wikan minangka Y, Cr minangka Cb, lan ing umum sampeyan bakal duwe efek domino sing ngalih kabeh werna saka gambar.

Spesifikasi JPEG ora meksa sampeyan nggunakake YCbCr. Nanging umume file nggunakake amarga ngasilake gambar sing luwih apik tinimbang RGB. Nanging sampeyan ora kudu njupuk tembungku. Deleng dhewe ing tabel ing ngisor iki, kaya apa subsampling saben komponen individu ing RGB lan YCbCr.

Carane format JPEG dianggo
(Versi interaktif - ing asline artikel).

Ngilangi biru ora katon kaya abang utawa ijo. Iku amarga saka enem yuta cones ing mripatmu, watara 64% sensitif abang, 32% kanggo ijo lan 2% kanggo biru.

Downsampling komponen Y (kiwa ngisor) katon paling apik. Malah owah-owahan cilik katon.

Ngonversi gambar saka RGB menyang YCbCr ora nyuda ukuran file, nanging luwih gampang kanggo nggoleki rincian sing kurang katon sing bisa dicopot. Kompresi lossy dumadi ing tahap kapindho. Iki adhedhasar ide kanggo nampilake data ing wangun sing luwih bisa dikompres.

2. Transformasi kosinus diskrit lan sampling

Tingkat kompresi iki, umume, yaiku JPEG. Sawise Ngonversi werna menyang YCbCr, komponen sing teken individu, supaya kita bisa musataken mung ing komponen Y. Lan ing kene apa bait komponen Y katon sawise aplikasi lapisan iki.

Carane format JPEG dianggo
(Versi interaktif - ing asline artikel). Ing versi interaktif, ngeklik piksel nggulung editor menyang baris sing makili. Coba mbusak nomer saka mburi utawa nambah sawetara nul menyang nomer tartamtu.

Sepisanan, katon kaya kompresi sing ala banget. Ana 100 piksel ing gambar, lan njupuk 000 nomer kanggo makili padhange (Y-komponen) - sing luwih elek tinimbang compressing apa-apa ing kabeh!

Nanging, Wigati sing paling nomer iki nul. Kajaba iku, kabeh nol ing mburi garis bisa dibusak tanpa ngganti gambar. Ana kira-kira 26 nomer sing isih ana, lan iki meh 000 kaping kurang!

Tingkat iki ngemot rahasia pola catur. Ora kaya efek liyane sing wis kita deleng, tampilan pola kasebut dudu kesalahan. Iki minangka blok bangunan kabeh gambar. Saben baris editor ngemot persis 64 nomer, koefisien transformasi kosinus diskrèt (DCT) sing cocog karo intensitas 64 pola unik.

Pola kasebut dibentuk adhedhasar plot kosinus. Mangkene sawetara sing katon:

Carane format JPEG dianggo
8 saka 64 rintangan

Ing ngisor iki ana gambar sing nuduhake kabeh 64 pola.

Carane format JPEG dianggo
(Versi interaktif - ing asline artikel).

Pola-pola kasebut penting banget amarga dadi dhasar gambar 8x8. Yen sampeyan ora ngerti aljabar linear, iki tegese gambar 8x8 bisa digawe saka 64 pola kasebut. DCT minangka proses mbagi gambar dadi blok 8x8 lan ngowahi saben blok dadi kombinasi 64 koefisien kasebut.

Katon kaya sihir manawa gambar apa wae bisa dumadi saka 64 pola tartamtu. Nanging, iki padha karo ujar manawa papan apa wae ing Bumi bisa diterangake kanthi rong nomer - garis lintang lan bujur [nuduhake hemisfer / kira-kira. nerjemahake]. Kita asring nganggep permukaan bumi minangka rong dimensi, mula kita mung butuh rong angka. Gambar 8x8 nduweni 64 dimensi, mula kita butuh 64 angka.

Durung jelas kepiye carane mbantu kita babagan kompresi. Yen kita butuh 64 nomer kanggo makili gambar 8x8, kenapa iki luwih apik tinimbang mung nyimpen 64 komponen padhang? Kita nindakake iki kanthi alesan sing padha ngowahi telung nomer RGB dadi telung nomer YCbCr: ngidini kita mbusak rincian subtle.

Iku angel kanggo ndeleng persis apa rinci dibusak ing tataran iki amarga JPEG ditrapake DCT kanggo 8x8 pamblokiran. Nanging, ora ana sing nglarang kita ngetrapake kabeh gambar kasebut. Mangkene tampilan DCT kanggo komponen Y sing ditrapake ing kabeh gambar:

Carane format JPEG dianggo

Luwih saka 60 nomer bisa dicopot saka mburi kanthi meh ora ana owah-owahan ing foto kasebut.

Carane format JPEG dianggo

Nanging, elinga yen kita nul metu limang nomer pisanan, prabédan bakal ketok.

Carane format JPEG dianggo

Angka ing wiwitan nuduhake owah-owahan frekuensi sing kurang ing gambar, sing paling apik kanggo mata kita. Angka ing pungkasan nuduhake owah-owahan ing frekuensi dhuwur sing luwih angel digatekake. Kanggo "ndeleng apa sing ora bisa dideleng," kita bisa ngisolasi rincian frekuensi dhuwur kasebut kanthi nul 5000 nomer pisanan.

Carane format JPEG dianggo

Kita ndeleng kabeh area gambar ing ngendi owah-owahan paling gedhe dumadi saka piksel menyang piksel. Mripate kucing, kumis, kemul terry lan bayangan ing pojok kiwa ngisor katon metu. Sampeyan bisa luwih maju kanthi nul 10 nomer pisanan:

Carane format JPEG dianggo

20 000:

Carane format JPEG dianggo

40 000:

Carane format JPEG dianggo

60 000:

Carane format JPEG dianggo

Rincian frekuensi dhuwur iki dibusak dening JPEG sajrone tahap kompresi. Ora ana kerugian kanggo ngowahi warna dadi koefisien DCT. Mundhut dumadi ing langkah sampling, ing ngendi nilai frekuensi dhuwur utawa cedhak-nol dibusak. Yen sampeyan ngedhunake kualitas nyimpen JPEG, program nambah batesan kanggo jumlah nilai sing dibusak, sing nyuda ukuran file, nanging nggawe gambar luwih piksel. Mulane gambar ing bagean pisanan, sing 57 kaping luwih cilik, katon kaya iki. Saben blok 8x8 diwakili dening koefisien DCT sing luwih sithik dibandhingake karo versi sing luwih dhuwur.

Sampeyan bisa nggawe efek kelangan kaya streaming gambar bertahap. Sampeyan bisa nampilake gambar burem sing dadi luwih rinci amarga luwih akeh koefisien sing diundhuh.

Ing kene, mung kanggo seneng-seneng, sampeyan entuk mung nggunakake 24 nomer:

Carane format JPEG dianggo

Utawa mung 5000:

Carane format JPEG dianggo

Kabur banget, nanging bisa dingerteni!

3. Run dawa enkoding, delta lan Huffman

Nganti saiki, kabeh tahapan kompresi wis ilang. Tahap pungkasan, sebaliknya, terus tanpa kerugian. Ora mbusak informasi, nanging kanthi signifikan nyuda ukuran file.

Kepiye carane sampeyan bisa ngompres apa wae tanpa mbuwang informasi? Bayangake carane kita nggambarake persegi dowo ireng prasaja 700 x 437.

JPEG nggunakake 5000 angka kanggo iki, nanging asil sing luwih apik bisa digayuh. Apa sampeyan bisa mbayangno skema enkoding sing bakal njlèntrèhaké gambar kasebut ing sawetara bita?

Skema minimal sing bisa dakkarepake nggunakake papat: telu kanggo makili warna, lan kaping papat kanggo nuduhake pirang-pirang piksel warna kasebut. Gagasan kanggo makili nilai-nilai sing diulang kanthi cara sing dipadhetke iki diarani enkoding jangka panjang. Iku lossless amarga kita bisa mulihake data dienkode menyang wangun asli.

Berkas JPEG kanthi persegi panjang ireng luwih gedhe tinimbang 4 bita - elinga yen ing tingkat DCT, kompresi ditrapake kanggo blok 8x8 piksel. Mulane, paling sethithik, kita butuh siji koefisien DCT kanggo saben 64 piksel. Kita butuh siji amarga tinimbang nyimpen siji koefisien DCT diikuti 63 nol, enkoding dawa mlaku ngidini kita nyimpen siji nomer lan nuduhake yen "kabeh liyane nol."

Encoding Delta minangka teknik ing saben bait ngemot prabédan saka sawetara nilai, tinimbang nilai absolut. Mulane, nyunting bita tartamtu ngganti werna kabeh piksel liyane. Contone, tinimbang nyimpen

12 13 14 14 14 13 13 14

Kita bisa miwiti karo 12 banjur mung nuduhake jumlah sing kudu ditambah utawa dikurangi kanggo entuk nomer sabanjure. Lan urutan iki ing delta coding njupuk wangun:

12 1 1 0 0 -1 0 1

Data sing diowahi ora luwih cilik tinimbang data asli, nanging luwih gampang dikompres. Nggunakake enkoding delta sadurunge enkoding dawa roto bisa mbantu akeh nalika isih dadi kompresi lossless.

Kodhe Delta minangka salah sawijining teknik sing digunakake ing njaba blok 8x8. Saka 64 koefisien DCT, siji mung fungsi gelombang konstan (warna padhet). Iku nuduhake padhange rata-rata saben blok kanggo komponen luma, utawa blueness rata-rata kanggo komponen Cb, lan ing. Nilai pisanan saben pemblokiran DCT diarani nilai DC, lan saben Nilai DC dienkode delta bab sadurunge. Mulane, ngganti padhange blok pisanan bakal mengaruhi kabeh blok.

Misteri pungkasan tetep: kepiye carane ngganti singular bisa ngrusak kabeh gambar? Nganti saiki, tingkat kompresi durung duwe sifat kasebut. Jawaban kasebut ana ing header JPEG. 500 bita pisanan ngemot metadata babagan gambar - jembar, dhuwur, lsp, lan kita durung bisa nggarap.

Tanpa header meh mokal (utawa angel banget) kanggo decode JPEG. Iku bakal katon kaya aku nyoba kanggo njlèntrèhaké gambar kanggo sampeyan, lan aku miwiti kanggo invent tembung kanggo ngirim kesan sandi. Gambaran kasebut bisa uga rada ringkes, amarga aku bisa nyiptakake tembung kanthi makna sing dakkarepake, nanging kanggo wong liya, dheweke ora bakal ngerti.

Iku muni bodho, nanging sing persis apa mengkono. Saben gambar JPEG dikompres nganggo kode khusus. Kamus kode disimpen ing header. Teknik iki diarani kode Huffman lan kosakata kasebut diarani tabel Huffman. Ing header, tabel ditandhani karo rong bait - 255 lan banjur 196. Saben komponen werna bisa duwe meja dhewe.

Owah-owahan ing tabel bakal mengaruhi gambar apa wae. Conto sing apik yaiku ngganti baris kaping 15 dadi 1.

Carane format JPEG dianggo

Iki kedadeyan amarga tabel nemtokake cara maca bit individu. Nganti saiki, kita mung nggarap angka biner ing wangun desimal. Nanging iki ndhelikake saka kasunyatan yen sampeyan pengin nyimpen nomer 1 ing bait, bakal katon kaya 00000001, amarga saben bait kudu persis wolung bit, sanajan mung siji saka wong-wong mau perlu.

Iki bisa dadi sampah gedhe yen sampeyan duwe nomer cilik. Kode Huffman minangka teknik sing ngidini kita ngendhokke syarat iki sing saben nomer kudu manggoni wolung bit. Iki tegese yen sampeyan ndeleng rong bita:

234 115

Banjur, gumantung ing tabel Huffman, iki bisa dadi telung nomer. Kanggo ngekstrak, sampeyan kudu dipérang dadi sawetara bit:

11101010 01110011

Banjur kita katon ing meja kanggo mangerteni carane kanggo klompok. Contone, iki bisa dadi enem bit pisanan, (111010), utawa 58 ing desimal, banjur limang bit (10011), utawa 19, lan pungkasane papat bit pungkasan (0011), utawa 3.

Mulane, angel banget kanggo mangerteni bita ing tahap kompresi iki. Byte ora nggambarake apa sing katon. Aku ora bakal pindhah menyang rincian nggarap tabel ing artikel iki, nanging bahan babagan masalah iki online cukup.

Salah sawijining trik menarik sing bisa ditindakake kanthi kawruh iki yaiku misahake header saka JPEG lan nyimpen kanthi kapisah. Nyatane, mung sampeyan sing bisa maca file kasebut. Facebook nindakake iki kanggo nggawe file luwih cilik.

Apa maneh sing bisa ditindakake yaiku ngganti tabel Huffman sing cukup. Kanggo wong liya bakal katon kaya gambar sing rusak. Lan mung sampeyan bakal ngerti cara gaib kanggo ndandani.

Ayo ngringkes: dadi apa sing dibutuhake kanggo decode JPEG? perlu:

  1. Ekstrak tabel Huffman saka header lan decode bit.
  2. Ekstrak koefisien transformasi kosinus diskrèt kanggo saben komponen warna lan luminance kanggo saben blok 8x8, nindakake transformasi enkoding delta lan dawa roto kuwalik.
  3. Gabungke kosinus adhedhasar koefisien kanggo entuk nilai piksel kanggo saben blok 8x8.
  4. Skala komponen warna yen subsampling ditindakake (informasi iki ana ing header).
  5. Ngonversi nilai YCbCr sing diasilake kanggo saben piksel dadi RGB.
  6. Tampilake gambar ing layar!

Karya serius kanggo mung ndeleng foto karo kucing! Nanging, sing dakkarepake yaiku nuduhake kepiye teknologi JPEG manungsa-sentris. Iki adhedhasar keunikan persepsi kita, ngidini kita entuk kompresi sing luwih apik tinimbang teknologi konvensional. Lan saiki kita ngerti cara kerjane JPEG, kita bisa mbayangake kepiye teknologi kasebut bisa ditransfer menyang wilayah liyane. Contone, enkoding delta ing video bisa nyuda ukuran file sing signifikan, amarga asring kabeh wilayah sing ora owah saka pigura menyang pigura (contone, latar mburi).

Kode digunakake ing artikel, mbukak, lan ngemot instruksi carane ngganti gambar karo gambar dhewe.

Source: www.habr.com

Add a comment