JPEG. Hoʻopili algorithm

Aloha hou mai! Ua ʻike au i kēia ʻatikala i kākau ʻia ma Mei 2019. He hoʻomau kēia o nā ʻatikala e pili ana iā WAVE a me JPEG, ma aneʻi ʻo ka mua. E hoʻokomo ʻia kēia hoʻolaha i ka ʻike e pili ana i ka algorithm encoding kiʻi a me ke ʻano ponoʻī ma ke ʻano holoʻokoʻa.

He wahi moʻolelo

He punetune o ka ʻatikala Wikipedia:

ʻO JPEG (Joint Photographic Experts Group) kekahi o nā kiʻi kiʻi raster kaulana i hoʻohana ʻia no ka mālama ʻana i nā kiʻi a me nā kiʻi like.

Ua hoʻomohala ʻia kēia maʻamau e ka Joint Photographic Experts Group i ka makahiki 1991 no ka hoʻopili kiʻi kūpono.

Pehea e hele ai nā kiʻi mai ka maka a i JPEG?

Manaʻo kekahi poʻe ʻo nā kiʻi JPEG he ʻikepili maka i hoʻohana ʻia me ke ʻano Huffman, akā ʻaʻole ʻoiaʻiʻo kēia. Ma mua o ka hoʻomalu ʻana i ka hoʻopili ʻana, hele lōʻihi ka ʻikepili.

ʻO ka mua, ua hoʻololi ʻia ke ʻano kala mai RGB a i YCbCr. Aia kekahi algorithm kūikawā no kēia - maanei. ʻAʻole hoʻopā ʻia ʻo Y, no ka mea nona ke kuleana no ka mālamalama, a e ʻike ʻia kona loli.

ʻO ka mea mua e hana ai me ke kiʻi "māmā" (subsampling). He mea maʻalahi ke hoʻomaopopo: lawe ʻia kahi ʻāpana 2x2 o nā pika, a laila lawe ʻia ʻo Cb a me Cr - nā waiwai maʻamau o kēlā me kēia ʻāpana YCbCr o kēia mau pika 4. No laila, lanakila mākou i 6 bytes, ma kahi o 4 Y, 4 Cb, 4 Cr ua loaʻa iā mākou he 4 Y a me ka like Cb a me Cr no kēlā me kēia o lākou (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). Ma ka pālākiō 2x2, ʻoi aku ka paʻa o ka paʻa ʻana me ka ratio hoʻemi 2:1. Pili kēia i ke kiʻi holoʻokoʻa. A pēlā - hāʻule lākou i ka hapalua o ka nui. A hiki iā mākou ke hoʻohana i kēia ʻenehana mahalo i ko mākou ʻike kala. E ʻike maʻalahi ke kanaka i ka ʻokoʻa o ka ʻōlinolino, ʻaʻole naʻe i ka waihoʻoluʻu, inā ʻo ia ka awelika ma luna o kahi poloka liʻiliʻi o nā pika. Hiki ke hana i ka honi ma ka laina, 4 pixels horizontally and vertically. Hoʻohana pinepine ʻia ka koho mua. Inā he mea nui ka maikaʻi o ke kiʻi, a laila ʻaʻole hana ʻia ka decimation.
ʻO kahi hiʻohiʻona hiʻohiʻona o ka lahilahi (ʻaʻole ʻae ʻo Habr iaʻu e hoʻokomo i kahi gif) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

ʻO ka māhele nui o ka hoʻomākaukau

PrEP

Ke hele mai nei ka ʻāpana paʻakikī a pono loa. Hoʻokaʻawale ʻia ke kiʻi holoʻokoʻa i nā poloka 8x8 (hoʻohana ʻia ka hoʻopiha ʻana inā ʻaʻole ka nui o ka ʻaoʻao o ka ʻaoʻao hoʻonā).

I kēia manawa e hoʻopili i kēlā me kēia poloka DCT (Hoʻololi Cosine Discrete). Ma kēia ʻāpana, lawe ʻia nā mea pono ʻole mai ke kiʻi. Me ka hoʻohana ʻana iā DCT, pono ʻoe e hoʻomaopopo i ka wehewehe ʻana o kahi poloka i hāʻawi ʻia (8×8) i kekahi ʻāpana monotonous o ke kiʻi: ka lani, ka pā; a i ʻole he ʻano paʻakikī (lauoho, hōʻailona, ​​etc.). He kūpono ka hiki ke wehewehe ʻia ka 64 pixels o ke kala like e 1 wale nō, no ka mea ua ʻike mua ʻia ka nui o ka poloka. Nui no ka hoʻopili: 64 a 1.

Hoʻololi ʻo DCT i ka poloka i kahi kikoʻī, a ma kahi e loli nui ai nā heluhelu, lilo ka coefficient i mea maikaʻi, a ʻoi aku ka ʻoi o ka hoʻololi, ʻoi aku ka kiʻekiʻe o ka puka. Ma kahi i ʻoi aku ka kiʻekiʻe o ka coefficient, hōʻike ke kiʻi i nā hoʻololi maʻalahi i ke kala a me ka mālamalama, kahi haʻahaʻa - nāwaliwali (maʻalahi) nā loli i nā waiwai o nā ʻāpana YCbCr i ka poloka.

Ka helu helu

Ua hoʻohana ʻia nā hoʻonohonoho hoʻoemi ma ʻaneʻi. Hoʻokaʻawale ʻia kēlā me kēia coefficient i kēlā me kēia matrices 8x8 e kekahi helu. Inā ʻaʻole ʻoe e hōʻemi i ka maikaʻi o ke kiʻi ma hope o kāna mau hoʻololi ʻana, a laila pono ka mea hoʻokaʻawale. Inā ʻoi aku ka koʻikoʻi iā ʻoe ka hoʻomanaʻo i noho ʻia e kēia kiʻi, a laila ʻoi aku ka nui o ka mea hoʻokaʻawale ma mua o 1, a e hoʻopuni ʻia ka quotient. ʻIke ʻia ma hope o ka hoʻopuni ʻana e hoʻopau pinepine ʻoe me ka nui o nā zeros.

Hana ʻia ka quantization no ka hoʻokumu ʻana i ka hiki ke hoʻoemi nui aʻe. Eia ke ʻano o ka hoʻohana ʻana i ka laʻana o ka helu ʻana i ka pakuhi y = sin(x):

JPEG. Hoʻopili algorithm

Kaohi ʻana

ʻO ka mua, hele mākou i ka matrix ma kahi ʻano zig-zag:

JPEG. Hoʻopili algorithm

Loaʻa iā mākou kahi ʻāpana hoʻokahi me nā helu. ʻIke mākou he nui nā zeros i loko, hiki ke wehe ʻia. No ka hana ʻana i kēia, ma kahi o kahi kaʻina o nā zeros he nui, e hoʻokomo mākou i ka 1 zero a ma hope o ka helu e hōʻike ana i kā lākou helu ma ke kaʻina. Ma kēia ala hiki iā ʻoe ke hoʻihoʻi i ka 1/3 ka nui o ka pūʻulu holoʻokoʻa. A laila kaomi wale mākou i kēia ʻano me ka hoʻohana ʻana i ke ala Huffman a kākau iā ia i loko o ka faila ponoʻī.

Ma hea kahi i hoʻohana ʻia ai

Ma nā wahi a pau. E like me PNG, hoʻohana ʻia ʻo JPEG i nā kiʻi paʻi kiʻi, OSes (ma ke ʻano he hōʻailona hui, nā kiʻi noiʻi, nā kiʻi liʻiliʻi) a ma nā wahi āpau e pono ai ke mālama pono ʻia nā kiʻi.

hopena

I kēia manawa, waiwai wale ka ʻike e pili ana iā JPEG no nā kumu hoʻonaʻauao, no ka mea, ua kūkulu ʻia ia ma nā wahi āpau a hoʻopaʻa ʻia e nā hui nui o ka poʻe, akā ʻono mau ka granite o ka ʻepekema.

Pūnaewele

ʻatikala e pili ana iā YCbCr ma Wikipedia
ʻatikala Wikipedia ma JPEG
He wahi liʻiliʻi e pili ana iā PrEP mai ka pou Pikabu
ʻatikala Wikipedia ma PrEP

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka