JPEG. ืืœื’ื•ืจื™ืชื ื“ื—ื™ืกื”

ืฉื•ื‘ ืฉืœื•ื! ืžืฆืืชื™ ืืช ื”ืžืืžืจ ื”ื–ื” ืฉื ื›ืชื‘ ืขื•ื“ ื‘ืžืื™ 2019. ื–ื”ื• ื”ืžืฉืš ืœืกื“ืจืช ืžืืžืจื™ื ื‘ื ื•ืฉื WAVE ื•-JPEG, ื›ืืŸ ื”ืจืืฉื•ืŸ. ืคืจืกื•ื ื–ื” ื™ื›ืœื•ืœ ืžื™ื“ืข ืขืœ ืืœื’ื•ืจื™ืชื ืงื™ื“ื•ื“ ื”ืชืžื•ื ื” ื•ื”ืคื•ืจืžื˜ ืขืฆืžื• ื‘ื›ืœืœื•ืชื•.

ืงื•ืจื˜ ื”ื™ืกื˜ื•ืจื™ื”

ื›ืฃ ืžืืžืจ ื‘ื•ื™ืงื™ืคื“ื™ื”:

JPEG (Joint Photographic Experts Group) ื”ื•ื ืื—ื“ ืžื”ืคื•ืจืžื˜ื™ื ื”ืคื•ืคื•ืœืจื™ื™ื ืฉืœ ื’ืจืคื™ืงืช ืจืกื˜ืจ ื”ืžืฉืžืฉื™ื ืœืื—ืกื•ืŸ ืชืฆืœื•ืžื™ื ื•ืชืžื•ื ื•ืช ื“ื•ืžื•ืช.

ืชืงืŸ ื–ื” ืคื•ืชื— ืขืœ ื™ื“ื™ Joint Photographic Experts Group ืขื•ื“ ื‘ืฉื ืช 1991 ืœื“ื—ื™ืกืช ืชืžื•ื ื” ื™ืขื™ืœื”.

ืื™ืš ืขื•ื‘ืจื•ืช ืชืžื•ื ื•ืช ืž-raw ืœ-JPEG?

ื™ืฉ ืื ืฉื™ื ืฉื—ื•ืฉื‘ื™ื ืฉืชืžื•ื ื•ืช JPEG ื”ืŸ ื ืชื•ื ื™ื ื’ื•ืœืžื™ื™ื ืฉื ื“ื—ืกื• ื‘ืฉื™ื˜ืช ื”ืืคืžืŸ, ืื‘ืœ ื–ื” ืœื ื ื›ื•ืŸ. ืœืคื ื™ ืฉืœื™ื˜ื” ื‘ื“ื—ื™ืกื”, ื”ื ืชื•ื ื™ื ืขื•ื‘ืจื™ื ื“ืจืš ืืจื•ื›ื”.

ืจืืฉื™ืช, ืžื•ื“ืœ ื”ืฆื‘ืข ืžืฉืชื ื” ืž-RGB ืœ-YCbCr. ื™ืฉ ืืคื™ืœื• ืืœื’ื•ืจื™ืชื ืžื™ื•ื—ื“ ืœื–ื” - ื›ืืŸ. ืœื ื ื•ื’ืขื™ื ื‘-Y, ืฉื›ืŸ ื”ื™ื ืื—ืจืื™ืช ืขืœ ื”ื‘ื”ื™ืจื•ืช, ื•ื”ืฉื™ื ื•ื™ ืฉืœื” ื™ื”ื™ื” ืžื•ืจื’ืฉ.

ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืฆืจื™ืš ืœืขืฉื•ืช ืขื ื”ืชืžื•ื ื” ื”ื•ื "ื”ึทืจื–ึธื™ึธื”" (ืชืช ื“ื’ื™ืžื”). ืงืœ ืœื”ื‘ื™ืŸ: ื ืœืงื— ืžืขืจืš 2x2 ืฉืœ ืคื™ืงืกืœื™ื, ื•ืื– ื ืœืงื—ื™ื Cb ื•-Cr - ื”ืขืจื›ื™ื ื”ืžืžื•ืฆืขื™ื ืฉืœ ื›ืœ ืื—ื“ ืžืžืจื›ื™ื‘ื™ ื”-YCbCr ืฉืœ 4 ื”ืคื™ืงืกืœื™ื ื”ืœืœื•. ื›ืš, ื–ื›ื™ื ื• ื‘-6 ื‘ืชื™ื, ื‘ืžืงื•ื 4 Y, 4 Cb, 4 Cr ืงื™ื‘ืœื ื• 4 Y ื•ืื•ืชื Cb ื•-Cr ืขื‘ื•ืจ ื›ืœ ืื—ื“ ืžื”ื (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). ื‘ืงื ื” ืžื™ื“ื” ืืคื™ืœื• ืฉืœ 2x2, ื“ื—ื™ืกื” ืžืื‘ื“ืช ืขื ื™ื—ืก ื“ื—ื™ืกื” ืฉืœ 2:1 ื ืฉืžืขืช ืžื•ืฆืงื”. ื–ื” ื—ืœ ืขืœ ื”ืชืžื•ื ื” ื›ื•ืœื”. ื•ื›ืš - ื”ื ื™ืจื“ื• ื—ืฆื™ ืžื™ื“ื”. ื•ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘ื˜ื›ื ื™ืงื” ื–ื• ื”ื•ื“ื•ืช ืœืชืคื™ืกืช ื”ืฆื‘ืข ืฉืœื ื•. ืื“ื ื™ื‘ื—ื™ืŸ ื‘ืงืœื•ืช ื‘ื”ื‘ื“ืœ ื‘ื‘ื”ื™ืจื•ืช, ืืš ืœื ื‘ืฆื‘ืข, ืื ื”ื•ื ืžืžื•ืฆืข ืขืœ ืคื ื™ ื’ื•ืฉ ืงื˜ืŸ ืฉืœ ืคื™ืงืกืœื™ื. ื ื™ืชืŸ ืœื‘ืฆืข ื“ื™ืœื•ืœ ื’ื ื‘ืงื•, 4 ืคื™ืงืกืœื™ื ืื•ืคืงื™ืช ื•ืื ื›ื™ืช. ื”ืืคืฉืจื•ืช ื”ืจืืฉื•ื ื” ืžืฉืžืฉืช ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื™ื•ืชืจ. ืื ืื™ื›ื•ืช ื”ืชืžื•ื ื” ื—ืฉื•ื‘ื”, ืื–ื™ ื”ื”ืคืกืงื” ืœื ืžื‘ื•ืฆืขืช ื›ืœืœ.
ื”ืžื—ืฉื” ื•ื™ื–ื•ืืœื™ืช ืฉืœ ื“ื™ืœื•ืœ (ื”ื‘ืจ ืœื ืืคืฉืจ ืœื™ ืœื”ื›ื ื™ืก ื’ื™ืฃ) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

ื”ื—ืœืง ื”ืขื™ืงืจื™ ืฉืœ ื”ื”ื›ื ื”

Dkp

ืขื›ืฉื™ื• ืžื’ื™ืข ื”ื—ืœืง ื”ืงืฉื” ื•ื”ื”ื›ืจื—ื™ ื‘ื™ื•ืชืจ. ื”ืชืžื•ื ื” ื›ื•ืœื” ืžื—ื•ืœืงืช ืœื‘ืœื•ืงื™ื ื‘ื’ื•ื“ืœ 8x8 (ืžื™ืœื•ื™ ืžืฉืžืฉ ืื ื”ืจื–ื•ืœื•ืฆื™ื” ืื™ื ื” ื›ืคื•ืœื” ืฉืœ ืฆื“ ื”ื‘ืœื•ืง).

ื›ืขืช ื”ื—ืœ ืขืœ ื›ืœ ื‘ืœื•ืง DCT (ืฉื™ื ื•ื™ ืงื•ืกื™ื ื•ืก ื“ื™ืกืงืจื˜ื™). ื‘ื—ืœืง ื–ื” ืžื•ืฆื™ืื™ื ืžื”ืชืžื•ื ื” ื›ืœ ืžื™ื•ืชืจ. ื‘ืืžืฆืขื•ืช DCT, ืขืœื™ืš ืœื”ื‘ื™ืŸ ืื ื‘ืœื•ืง ื ืชื•ืŸ (8ร—8) ืžืชืืจ ื—ืœืง ืžื•ื ื•ื˜ื•ื ื™ ื›ืœืฉื”ื• ื‘ืชืžื•ื ื”: ื”ืฉืžื™ื™ื, ื”ืงื™ืจ; ืื• ืฉื”ื•ื ืžื›ื™ืœ ืžื‘ื ื” ืžื•ืจื›ื‘ (ืฉื™ืขืจ, ืกืžืœื™ื ื•ื›ื•'). ื–ื” ื”ื’ื™ื•ื ื™ ืฉื ื™ืชืŸ ืœืชืืจ 64 ืคื™ืงืกืœื™ื ืฉืœ ืฆื‘ืข ื“ื•ืžื” ื‘-1 ื‘ืœื‘ื“, ื›ื™ ื’ื•ื“ืœ ื”ื‘ืœื•ืง ื›ื‘ืจ ื™ื“ื•ืข. ืขื“ ื›ืืŸ ื”ื“ื—ื™ืกื”: 64 ืœ-1.

DCT ื”ื•ืคืš ืืช ื”ื‘ืœื•ืง ืœืกืคืงื˜ืจื•ื, ื•ื‘ืžืงื•ื ืฉื‘ื• ื”ืงืจื™ืื•ืช ืžืฉืชื ื•ืช ื‘ื—ื“ื•ืช, ื”ืžืงื“ื ื”ื•ืคืš ืœื—ื™ื•ื‘ื™, ื•ื›ื›ืœ ืฉื”ืžืขื‘ืจ ื—ื“ ื™ื•ืชืจ, ื›ืš ื”ืชืคื•ืงื” ืชื”ื™ื” ื’ื‘ื•ื”ื” ื™ื•ืชืจ. ื›ืืฉืจ ื”ืžืงื“ื ื’ื‘ื•ื” ื™ื•ืชืจ, ื”ืชืžื•ื ื” ืžืฆื™ื’ื” ืžืขื‘ืจื™ื ื‘ืจื•ืจื™ื ื‘ืฆื‘ืข ื•ื‘ื‘ื”ื™ืจื•ืช, ื›ืืฉืจ ื”ื•ื ื ืžื•ืš ื™ื•ืชืจ - ืฉื™ื ื•ื™ื™ื ื—ืœืฉื™ื (ื—ืœืงื™ื) ื‘ืขืจื›ื™ ืจื›ื™ื‘ื™ YCbCr ื‘ื‘ืœื•ืง.

ื›ื™ืžื•ืช

ื”ื’ื“ืจื•ืช ื”ื“ื—ื™ืกื” ื›ื‘ืจ ืžื™ื•ืฉืžื•ืช ื›ืืŸ. ื›ืœ ืื—ื“ ืžื”ืžืงื“ืžื™ื ื‘ื›ืœ ืื—ืช ืžื”ืžื˜ืจื™ืฆื•ืช 8x8 ืžื—ื•ืœืง ื‘ืžืกืคืจ ืžืกื•ื™ื. ืื ืœื ืชืคื—ื™ืช ืืช ืื™ื›ื•ืช ื”ืชืžื•ื ื” ืœืื—ืจ ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ืฉืœื”, ืื– ื”ืžื—ืœืง ืฆืจื™ืš ืœื”ื™ื•ืช ืื—ื“. ืื ื”ื–ื™ื›ืจื•ืŸ ืฉื ื›ื‘ืฉ ืขืœ ื™ื“ื™ ืชืžื•ื ื” ื–ื• ื—ืฉื•ื‘ ืœืš ื™ื•ืชืจ, ื”ืžื—ืœืง ื™ื”ื™ื” ื’ื“ื•ืœ ืž-1, ื•ื”ืžื ื” ืชื”ื™ื” ืžืขื•ื’ืœืช. ืžืกืชื‘ืจ ืฉืื—ืจื™ ืขื™ื’ื•ืœ ืžื’ื™ืขื™ื ืœืจื•ื‘ ืขื ื”ืจื‘ื” ืืคืกื™ื.

ืงื•ื•ื ื˜ื™ื–ืฆื™ื” ื ืขืฉื™ืช ื›ื“ื™ ืœื™ืฆื•ืจ ืืคืฉืจื•ืช ืœื“ื—ื™ืกื” ื’ื“ื•ืœื” ืขื•ื“ ื™ื•ืชืจ. ื›ืš ื–ื” ื ืจืื” ื‘ืืžืฆืขื•ืช ื”ื“ื•ื’ืžื” ืฉืœ ื›ื™ืžื•ืช ื”ื’ืจืฃ y = sin(x):

JPEG. ืืœื’ื•ืจื™ืชื ื“ื—ื™ืกื”

ื“ื—ื™ืกื”

ืจืืฉื™ืช ื ืขื‘ื•ืจ ืขืœ ื”ืžื˜ืจื™ืฆื” โ€‹โ€‹ื‘ืชื‘ื ื™ืช ื–ื™ื’-ื–ื’:

JPEG. ืืœื’ื•ืจื™ืชื ื“ื—ื™ืกื”

ื ืงื‘ืœ ืžืขืจืš ื—ื“ ืžื™ืžื“ื™ ืขื ืžืกืคืจื™ื. ืื ื—ื ื• ืจื•ืื™ื ืฉื™ืฉ ื‘ื• ื”ืจื‘ื” ืืคืกื™ื, ืืคืฉืจ ืœื”ืกื™ืจ ืื•ืชื. ืœืฉื ื›ืš, ื‘ืžืงื•ื ืจืฆืฃ ืฉืœ ืืคืกื™ื ืจื‘ื™ื, ื ื–ื™ืŸ 1 ืืคืก ื•ืื—ืจื™ื• ืžืกืคืจ ื”ืžืฆื™ื™ืŸ ืืช ืžืกืคืจื ื‘ืจืฆืฃ. ื›ืš ืชื•ื›ืœื• ืœืืคืก ืœ-1/3 ืžื’ื•ื“ืœ ื”ืžืขืจืš ื›ื•ืœื•. ื•ืื– ืื ื—ื ื• ืคืฉื•ื˜ ื“ื•ื—ืกื™ื ืืช ื”ืžืขืจืš ื”ื–ื” ื‘ืฉื™ื˜ืช ื”ืืคืžืŸ ื•ื›ื•ืชื‘ื™ื ืื•ืชื• ื‘ืงื•ื‘ืฅ ืขืฆืžื•.

ื”ื™ื›ืŸ ืœื”ืฉืชืžืฉ

ื‘ื›ืœ ืžืงื•ื. ื›ืžื• PNG, JPEG ืžืฉืžืฉ ื‘ืžืฆืœืžื•ืช, ื‘ืžืขืจื›ื•ืช ื”ืคืขืœื” (ื›ืกืžืœื™ื ืฉืœ ื”ื—ื‘ืจื”, ื‘ืื™ื™ืงื•ื ื™ ื™ื™ืฉื•ืžื™ื, ื‘ืชืžื•ื ื•ืช ืžืžื•ื–ืขืจื•ืช) ื•ื‘ื›ืœ ื”ืื–ื•ืจื™ื ื”ืืคืฉืจื™ื™ื ืฉื‘ื”ื ื™ืฉ ืœืื—ืกืŸ ืชืžื•ื ื•ืช ื‘ื™ืขื™ืœื•ืช.

ืคืœื˜

ื ื›ื•ืŸ ืœืขื›ืฉื™ื•, ื”ื™ื“ืข ืขืœ JPEG ื”ื•ื ื›ืขืช ื‘ืขืœ ืขืจืš ืจืง ืœืžื˜ืจื•ืช ื—ื™ื ื•ื›ื™ื•ืช, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ื›ื‘ืจ ืžื•ื‘ื ื” ื‘ื›ืœ ืžืงื•ื ื•ืžื•ืชืื ืขืœ ื™ื“ื™ ืงื‘ื•ืฆื•ืช ื’ื“ื•ืœื•ืช ืฉืœ ืื ืฉื™ื, ืื‘ืœ ื”ื’ืจื ื™ื˜ ืฉืœ ื”ืžื“ืข ืขื“ื™ื™ืŸ ื˜ืขื™ื.

ืžืงื•ืจื•ืช

ืžืืžืจ ืขืœ YCbCr ื‘ื•ื™ืงื™ืคื“ื™ื”
ืžืืžืจ ื‘ื•ื•ื™ืงื™ืคื“ื™ื” ืขืœ JPEG
ืงืฆืช ืขืœ PrEP ืžื”ืคื•ืกื˜ ืฉืœ Pikabu
ืžืืžืจ ื‘ื•ื™ืงื™ืคื“ื™ื” ืขืœ PrEP

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”