JPEG. Matsi algorithm

Sannu kuma! Na sami an rubuta wannan labarin a watan Mayu 2019. Wannan ci gaba ne na jerin labarai game da WAVE da JPEG, a nan na farko. Wannan ɗaba'ar za ta ƙunshi bayani game da algorithm ɗin ɓoye hoton da tsarin kansa gaba ɗaya.

Tsuntsu na tarihi

Wani tablespoon na labarin Wikipedia:

JPEG (Kungiyar Kwararrun Ɗaukar Hoto na Haɗin gwiwa) ɗaya ne daga cikin shahararrun tsarin zanen raster da ake amfani da shi don adana hotuna da makamantansu.

Ƙungiyar Ƙwararrun Ɗaukar Hoto ta Haɗin gwiwa ta haɓaka wannan ma'auni a cikin 1991 don ingantacciyar matse hoto.

Ta yaya hotuna ke tafiya daga danye zuwa JPEG?

Wasu mutane suna tunanin cewa Hotunan JPEG danye ne an matsa su ta amfani da hanyar Huffman, amma wannan ba gaskiya bane. Kafin sarrafa matsawa, bayanai suna tafiya mai nisa.

Na farko, ana canza samfurin launi daga RGB zuwa YCbCr. Akwai ma algorithm na musamman don wannan - a nan. Ba a taɓa Y ba, tunda yana da alhakin haske, kuma canjin sa zai zama sananne.

Abu na farko da za a yi da hoton shine "bakin ciki" (subsampling). Abu ne mai sauƙi a fahimta: an ɗauki tsararrun pixels 2x2, sannan ana ɗaukar Cb da Cr - matsakaicin ƙimar kowane ɓangaren YCbCr na waɗannan pixels 4. Don haka, mun ci 6 bytes, maimakon 4 Y, 4 Cb, 4 Cr mun sami 4 Y da Cb iri ɗaya da Cr ga kowannensu (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). A ko da sikelin 2x2, matsi mai asara tare da matsi na 2:1 yana da ƙarfi. Wannan ya shafi duka hoton. Sabili da haka - sun sauke rabin girman. Kuma za mu iya amfani da wannan dabarar godiya ga fahimtar launi. Mutum zai iya lura da bambanci a cikin haske cikin sauƙi, amma ba cikin launi ba, idan an ƙididdige shi sama da ƙaramin toshe na pixels. Hakanan ana iya yin bakin ciki a cikin layi, pixels 4 a kwance da kuma a tsaye. Ana amfani da zaɓi na farko sau da yawa. Idan ingancin hoto yana da mahimmanci, to ba a yin lalata da komai.
Hoton gani na bakin ciki (Habr bai bar ni in saka gif ba) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Babban sashi na shirye-shiryen

PrEP

Yanzu ya zo mafi wuya kuma mafi mahimmanci sashi. An raba dukkan hoton zuwa tubalan 8x8 (ana amfani da cikawa idan ƙudurin ba da yawa na ɓangaren toshewar ba).

Yanzu shafi kowane block DCT (Canjin Cosine Mai Rarraba). A cikin wannan ɓangaren, an cire duk abin da ba dole ba daga hoto. Yin amfani da DCT, kuna buƙatar fahimtar ko wani shingen da aka bayar (8×8) ya bayyana kowane ɓangare na hoton: sama, bango; ko ya ƙunshi hadadden tsari (gashi, alamomi, da sauransu). Yana da ma'ana cewa 64 pixels na launi iri ɗaya za a iya kwatanta shi da 1 kawai, saboda An riga an san girman toshe. Da yawa don matsawa: 64 zuwa 1.

DCT yana jujjuya toshe zuwa bakan, kuma inda karatun ya canza sosai, ƙididdigewa ya zama tabbatacce, kuma mafi girman canjin canji, mafi girman fitarwa zai kasance. Inda ƙididdiga ta fi girma, hoton yana nuna bayyanannen canje-canje a cikin launi da haske, inda ya kasance ƙananan - rauni (mai laushi) canje-canje a cikin ƙimar abubuwan YCbCr a cikin toshe.

Ƙidaya

An riga an yi amfani da saitunan matsawa a nan. Kowane ma'aunin ƙididdiga a cikin kowane matrix 8x8 an raba shi da takamaiman lamba. Idan ba za ku rage ingancin hoton ba bayan duk gyare-gyarensa, to ya kamata mai rarraba ya zama ɗaya. Idan ƙwaƙwalwar da ke cikin wannan hoton ya fi mahimmanci a gare ku, to, mai rarraba zai zama mafi girma fiye da 1, kuma za a ƙaddamar da ƙididdiga. Sai ya zama cewa bayan da za a zagaya ka sau da yawa kawo karshen da yawa sifili.

Ana yin ƙididdigewa don ƙirƙirar yiwuwar matsi mafi girma. Ga yadda yake kama ta amfani da misalin ƙididdige jadawali y = zunubi(x):

JPEG. Matsi algorithm

Matsawa

Da farko za mu shiga cikin matrix a cikin tsarin zigzag:

JPEG. Matsi algorithm

Muna samun tsararru mai girma ɗaya tare da lambobi. Mun ga cewa akwai sifili da yawa a ciki, ana iya cire su. Don yin wannan, maimakon jerin sifilai da yawa, muna shigar da sifili 1 kuma bayan sa lamba yana nuna lambar su a cikin jeri. Ta wannan hanyar za ku iya sake saitawa zuwa 1/3 girman dukan tsararru. Sannan muna kawai damfara wannan tsararru ta amfani da hanyar Huffman kuma mu rubuta shi cikin fayil ɗin kanta.

Inda ake amfani da shi

Ko'ina. Kamar PNG, ana amfani da JPEG a cikin kyamarori, OSes (kamar tambura na kamfani, gumakan aikace-aikacen, thumbnails) da kuma a duk wuraren da za a iya amfani da su inda ake buƙatar adana hotuna da kyau.

ƙarshe

A halin yanzu, ilmi game da JPEG yanzu yana da mahimmanci kawai don dalilai na ilimi, saboda an riga an gina shi a ko'ina kuma an inganta shi da manyan ƙungiyoyin mutane, amma granite na kimiyya har yanzu yana da daɗi.

Sources

Labari game da YCbCr akan Wikipedia
Labarin Wikipedia akan JPEG
Kadan game da PrEP daga gidan Pikabu
Labarin Wikipedia akan PrEP

source: www.habr.com

Add a comment