JPEG. เบชเบนเบ”เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”

เบชเบฐโ€‹เบšเบฒเบโ€‹เบ”เบตโ€‹เบญเบตเบโ€‹เบ„เบฑเป‰เบ‡! เบ‚เป‰เบญเบเบžเบปเบšเบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ–เบทเบเบ‚เบฝเบ™เบ„เบทเบ™เปƒเบ™เป€เบ”เบทเบญเบ™เบžเบถเบ”เบชเบฐเบžเบฒ 2019. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบชเบทเบšเบ•เปเปˆเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบš WAVE เปเบฅเบฐ JPEG, เบ—เบตเปˆเบ™เบตเป‰ เบเปˆเบญเบ™. เบชเบดเปˆเบ‡เบžเบดเบกเบ™เบตเป‰เบˆเบฐเบ›เบฐเบเบญเบšเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฎเบนเบšเบžเบฒเบš เปเบฅเบฐเบฎเบนเบšเปเบšเบšเบ—เบฑเบ‡เปเบปเบ”.

pinch เบ‚เบญเบ‡เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”

เบšเปˆเบงเบ‡เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก Wikipedia:

JPEG (เบเบธเปˆเบกเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบฎเบนเบšเบฎเปˆเบงเบก) เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบŸเบดเบ raster เบ—เบตเปˆเบ™เบดเบเบปเบกเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™.

เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบเบธเปˆเบกเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบฎเบนเบšเบฎเปˆเบงเบกเบเบฑเบ™เปƒเบ™เบ›เบต 1991 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เบฎเบนเบšเบžเบฒเบšเบˆเบฒเบเบงเบฑเบ”เบ–เบธเบ”เบดเบšเป„เบ›เบซเบฒ JPEG เปเบ™เบงเปƒเบ”?

เบšเบฒเบ‡เบ„เบปเบ™เบ„เบดเบ”เบงเปˆเบฒเบฎเบนเบšเบžเบฒเบš JPEG เปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบ”เบดเบšเบ—เบตเปˆเบ–เบทเบเบšเบตเบšเบญเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ Huffman, เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡. เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”, เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเป€เบ”เบตเบ™เบ—เบฒเบ‡เป„เบ.

เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”, เบฎเบนเบšเปเบšเบšเบชเบตเป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เบˆเบฒเบ RGB เบเบฑเบš YCbCr. เบกเบตโ€‹เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบžเบดโ€‹เป€เบชเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰ - เบ—เบตเปˆเบ™เบตเป‰. Y เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบชเปเบฒเบœเบฑเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆเบ„เบงเบฒเบกเบชเบฐเบซเบงเปˆเบฒเบ‡, เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™.

เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฑเบšเบฎเบนเบšเบžเบฒเบšเปเบกเปˆเบ™ "เบšเบฒเบ‡เป†" (เบเบฒเบ™เป€เบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบเปˆเบญเบ). เบ™เบตเป‰เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆ: เบญเบฒเป€เบฃ 2x2 เบ‚เบญเบ‡ pixels เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ Cb เปเบฅเบฐ Cr เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ” - เบ„เปˆเบฒเบชเบฐเป€เบฅเปˆเบเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบš YCbCr เบ‚เบญเบ‡ 4 pixels เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบŠเบฐเบ™เบฐ 6 bytes, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ 4 Y, 4 Cb, 4 Cr เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš 4 Y เปเบฅเบฐ Cb เปเบฅเบฐ Cr เบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เบปเบ™ (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). เปเบกเป‰เปเบ•เปˆเบ‚เบฐเบซเบ™เบฒเบ” 2x2, เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ—เบตเปˆเบกเบตเบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบเบฒเบ™เบšเบตเบšเบญเบฑเบ” 2: 1 เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเปเบ‚เบ‡. เบ™เบตเป‰เปƒเบŠเป‰เบเบฑเบšเบฎเบนเบšเบžเบฒเบšเบ—เบฑเบ‡เบซเบกเบปเบ”. เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ - เบžเบงเบเป€เบ‚เบปเบฒเบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบเบ™เบตเป‰เบเป‰เบญเบ™เบเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰เบชเบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบšเบธเบเบ„เบปเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบฐเบซเบงเปˆเบฒเบ‡เป„เบ”เป‰เบ‡เปˆเบฒเบ, เปเบ•เปˆเบšเปเปˆเบกเบตเบชเบต, เบ–เป‰เบฒเบกเบฑเบ™เบชเบฐเป€เบฅเปˆเบเบซเบผเบฒเบเบเบงเปˆเบฒ pixels เบ™เป‰เบญเบเป†. เบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบšเบฒเบ‡เป†เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป€เบ›เบฑเบ™เป€เบชเบฑเป‰เบ™, 4 pixels เบ•เบฒเบกเปเบ™เบงเบ™เบญเบ™ เปเบฅเบฐเปเบ™เบงเบ•เบฑเป‰เบ‡. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบฅเบทเป‰เบญเบเป†. เบ–เป‰เบฒเบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบ—เปเบฒเบฅเบฒเบเบšเปเปˆเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.
เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เบžเบฒเบšโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบšเบฒเบ‡ (Habr เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปƒเบชเปˆ gif เป„เบ”เป‰โ€‹) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

เบชเปˆเบงเบ™เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เบเบฐเบเบฝเบก

Dkp

เบ”เบฝเบงเบ™เบตเป‰เบกเบฒเบชเปˆเบงเบ™เบ—เบตเปˆเบเบฒเบเบ—เบตเปˆเบชเบธเบ” เปเบฅเบฐเบˆเบณเป€เบ›เบฑเบ™เบ—เบตเปˆเบชเบธเบ”. เบฎเบนเบšเบžเบฒเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™ 8x8 เบ•เบฑเบ™ (เบเบฒเบ™เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เปƒเบŠเป‰เบ–เป‰เบฒเบ„เบงเบฒเบกเบฅเบฐเบญเบฝเบ”เบšเปเปˆเปเบกเปˆเบ™เบซเบผเบฒเบเบ‚เบญเบ‡เบ‚เป‰เบฒเบ‡เบšเบฅเบฑเบญเบ).

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเปเบ•เปˆเบฅเบฐเบ•เบฑเบ™ DCT (Discrete Cosine Transform). เปƒเบ™เบชเปˆเบงเบ™เบ™เบตเป‰, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ–เบทเบเป€เบญเบปเบฒเบญเบญเบเบˆเบฒเบเบฎเบนเบš. เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ DCTโ€‹, เบ—เปˆเบฒเบ™โ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เบšเปเปˆโ€‹เบงเปˆเบฒโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบš (8 ร— 8โ€‹) เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡ monotonous เบ‚เบญเบ‡โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹: เบ—เป‰เบญเบ‡โ€‹เบŸเป‰เบฒโ€‹, เบเปเบฒโ€‹เปเบžเบ‡โ€‹เบซเบตเบ™โ€‹; เบซเบผเบทเบกเบฑเบ™เบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™ (เบœเบปเบก, เบชเบฑเบ™เบเบฒเบฅเบฑเบ, เปเบฅเบฐเบญเบทเปˆเบ™เป†). เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบซเบ”เบœเบปเบ™เบงเปˆเบฒ 64 pixels เบ‚เบญเบ‡เบชเบตเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบžเบฝเบ‡เปเบ•เปˆ 1, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฑเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเปเบฅเป‰เบง. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”: 64 เบเบฑเบš 1.

DCT turns block เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ spectrum, เปเบฅเบฐเบšเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เบญเปˆเบฒเบ™เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ, coefficient เบเบฒเบเป€เบ›เบฑเบ™เบšเบงเบ, เปเบฅเบฐ sharper เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™, เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบˆเบฐเบชเบนเบ‡เบ‚เบถเป‰เบ™. เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เบชเบนเบ‡เบเบงเปˆเบฒ, เบฎเบนเบšเบžเบฒเบšเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปƒเบ™เบชเบตเปเบฅเบฐเบ„เบงเบฒเบกเบชเบฐเบซเบงเปˆเบฒเบ‡, เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบ•เปˆเปเบฒ - เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบญเปˆเบญเบ™เปเบญ (เบเป‰เบฝเบ‡) เปƒเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš YCbCr เปƒเบ™เบšเบฅเบฑเบญเบ.

เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ›เบฐเบฅเบดเบกเบฒเบ™

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบ–เบทเบเบ™เบณเปƒเบŠเป‰เบขเบนเปˆเบšเปˆเบญเบ™เบ™เบตเป‰. เปเบ•เปˆเบฅเบฐเบ•เบปเบงเบ„เบนเบ™เปƒเบ™เปเบ•เปˆเบฅเบฐ 8x8 matrices เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเบ”เป‰เบงเบเบˆเปเบฒเบ™เบงเบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบฎเบนเบšเบžเบฒเบšเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ”เบฑเบ”เปเบ›เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ•เบปเบงเปเบšเปˆเบ‡เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡. เบ–เป‰เบฒเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเบณเบ—เบตเปˆเบฎเบนเบšเบ™เบตเป‰เบ–เบทเป€เบญเบปเบฒเป„เบงเป‰เบชเบณเบ„เบฑเบ™เบเบงเปˆเบฒเบชเบณเบฅเบฑเบšเป€เบˆเบปเป‰เบฒ, เบ•เบปเบงเบซเบฒเบ™เบˆเบฐเปƒเบซเบเปˆเบเบงเปˆเบฒ 1, เปเบฅเบฐเบ„เปˆเบฒเบ„เบนเบ™เบˆเบฐเบ–เบทเบเบกเบปเบ™. เบกเบฑเบ™ turns เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบงเปˆเบฒโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบกเบปเบ™โ€‹, เบ—เปˆเบฒเบ™โ€‹เบกเบฑเบโ€‹เบˆเบฐโ€‹เบชเบดเป‰เบ™โ€‹เบชเบธเบ”โ€‹เบฅเบปเบ‡โ€‹เบ”เป‰เบงเบโ€‹เบซเบผเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบชเบนเบ™โ€‹.

Quantization เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡ y = sin(x):

JPEG. เบชเบนเบ”เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”

เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”

เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบœเปˆเบฒเบ™ matrix เปƒเบ™เบฎเบนเบšเปเบšเบš zig-zag:

JPEG. เบชเบนเบ”เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš array เบกเบดเบ•เบดเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบตเบ•เบปเบงเป€เบฅเบ. เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบตเบชเบนเบ™เบซเบผเบฒเบเบขเบนเปˆเปƒเบ™เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบญเบญเบเป„เบ”เป‰. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบชเบนเบ™เบซเบผเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเปƒเบชเปˆ 1 เบชเบนเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบกเบฑเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบŠเบตเป‰เบšเบญเบเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™เบฅเปเบฒเบ”เบฑเบš. เบงเบดเบ—เบตเบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเป€เบ›เบฑเบ™ 1/3 เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบญเบฒเป€เบฅเบ—เบฑเบ‡เบซเบกเบปเบ”. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบšเบตเบšเบญเบฑเบ”เบญเบฒเป€เบฃเบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ Huffman เปเบฅเบฐเบ‚เบฝเบ™เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡.

เปƒเบŠเป‰เบขเบนเปˆเปƒเบช

เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš PNG, JPEG เบ–เบทเบเปƒเบŠเป‰เปƒเบ™เบเป‰เบญเบ‡เบ–เปˆเบฒเบเบฎเบนเบš, OSes (เป€เบ›เบฑเบ™เป‚เบฅเป‚เบเป‰เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”, เป„เบญเบ„เบญเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบฎเบนเบšเบ•เบปเบงเบขเปˆเบฒเบ‡) เปเบฅเบฐเปƒเบ™เบ—เบธเบเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบฎเบนเบšเบžเบฒเบšเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เบชเบฐเบซเบฅเบธเบš

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบš JPEG เปเบกเปˆเบ™เบกเบตเบ„เบธเบ™เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบถเบเบชเบฒเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡เปเบฅเบฐเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เบ”เบตเบ—เบตเปˆเบชเบธเบ”เป‚เบ”เบเบ›เบฐเบŠเบฒเบŠเบปเบ™เบเบธเปˆเบกเปƒเบซเบเปˆ, เปเบ•เปˆ granite เบ‚เบญเบ‡เบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”เบเบฑเบ‡เบกเบตเบฅเบปเบ”เบŠเบฒเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™

เบšเบปเบ”เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบš YCbCr เปƒเบ™เบงเบดเบเบดเบžเบตเป€เบ”เบ
เบšเบปเบ”เบ„เบงเบฒเบก Wikipedia เบเปˆเบฝเบงเบเบฑเบš JPEG
เป€เบฅเบฑเบเบ™เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบš PrEP เบˆเบฒเบเบเบฒเบ™เบ•เบญเบš Pikabu
เบšเบปเบ”เบ„เบงเบฒเบก Wikipedia เบเปˆเบฝเบงเบเบฑเบš PrEP

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™