ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для обобщСния ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сТатия Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²Ρ‹Ρ… ΠΈ Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ стандарта МККВВ ΠΈ ΠœΠžΠ‘ Π² 1991 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»Π° создана организация, состоящая ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ экспСртов, которая ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ JPEG (Join Photographic Expert Group). Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΈΠΌΠΈ стандарт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ JPEG, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Аннотация

Π’ Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ описываСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная Π² ΡΠΎΠΎΡ‚вСтствии с ΠΏΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ «ΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния» ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ». Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для сТатия ΠΈΠ»ΠΈ компрСссии ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΌ стандартом JPEG. Π’Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ являСтся ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° BMP. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ тСстовый ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ выполняСт всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡΠΆΠ°Ρ‚ΠΈΡŽ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния ΠΈ Π²Ρ‹Π΄Π°Ρ‡ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния.

Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ являСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ любого IBM-совмСстимого ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° с Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ накопитСля Π½Π° Π³ΠΈΠ±ΠΊΠΈΡ… ΠΈ (ΠΈΠ»ΠΈ) ТСстких ΠΌΠ°Π³Π½ΠΈΡ‚Π½Ρ‹Ρ… дисках ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ достаточного количСства ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти (достаточно 640ΠΊ). На ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ установлСна опСрационная систСма Windows98 (ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅) ΠΈΠ»ΠΈ любая другая, совмСстимая с Π½Π΅ΠΉ.

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

ΠžΠ±Π·ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² компрСссии ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния

ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° JPEG

ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

БиблиографичСский список

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΡ€ΠΊΠΎΡΡ‚ΡŒ измСняСтся Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π½Ρ Π±Π΅Π»ΠΎΠ³ΠΎ ΠΊ Ρ‡Π΅Ρ€Π½ΠΎΠΌΡƒ, называСтся ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ-Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ. Π‘ΠΈΠ³Π½Π°Π»Ρ‹ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹Ρ… факсимилС, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π­Π’Πœ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ дискрСтизации ΠΈ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½ΠΈΡŽ. Π‘ΠΈΠ³Π½Π°Π»Ρ‹ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠ³ΠΎ изобраТСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ распрСдСлСния яркости Π’ (Ρ…, Ρƒ) Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Ρ… ΠΈ Ρƒ.

Π‘ΠΆΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ изобраТСния ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ для восприятия ΠΈΡ… Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Π»ΠΈΠ±ΠΎ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ автоматичСскими устройствами. Если ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ кодируСтся для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π·Ρ€ΠΈΡ‚Π΅Π»ΡŽ, Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ объСм ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ особСнности восприятия Π·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ восприятия Π·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°, Ρ‚ΠΎ ΡΡ‚ΠΎ позволяСт ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ искаТСния изобраТСния Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π­Ρ‚Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ исходноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΡΡ‡Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ части ΠΌΠ°Π»ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚. Π΅. Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ искаТСния. ΠŸΡ€ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, СстСствСнно, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ информация Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ восстановлСна ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ воспроизводится с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒΡŽ. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ кодирования вносят искаТСния Ρ€Π°Π·Π½ΠΎΠΉ стСпСни. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ систСмы компрСссии изобраТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ прСобразования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вносит Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ искаТСния. Π’ Π½Π°ΡΡ‚оящСС врСмя Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ систСм сТатия Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹Ρ… ΠΈ Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ систСмы с ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ части. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ области примСнСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ автоматичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², Π³Π΄Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ части ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ся.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ эффСктивности ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€Π½ΡƒΡŽ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΌΠ΅Ρ€Ρƒ качСства изобраТСния. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ аналитичСской ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ΅Ρ€Ρ‹ качСства изобраТСния для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСм сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для характСристики качСства ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡˆΠΊΠ°Π»Ρ‹ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ качСства изобраТСния, ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ изобраТСния, числСнныС зависимости качСства ΠΎΡ‚ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π›ΡŽΠ±Π°Ρ «Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ» ΠΌΠ΅Ρ€Π° качСства изобраТСния Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Π° с ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΎΡ†Π΅Π½ΠΊΠ°ΠΌΠΈ качСства изобраТСния, прСдставлСнными Π² Π²ΠΈΠ΄Π΅ ΡˆΠΊΠ°Π»Ρ‹. БущСствуСт Π΄Π²Π΅ ΡˆΠΊΠ°Π»Ρ‹ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ: шкала качСства ΠΈ ΡˆΠΊΠ°Π»Π° ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΡ изобраТСния. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡΡ‚ΠΈΠ±Π°Π»Π»ΡŒΠ½Π°Ρ систСма ΠΎΡ†Π΅Π½ΠΎΠΊ. КаТдая ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒ качСства ΡˆΠΊΠ°Π»Ρ‹ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ качСство рассматриваСмого изобраТСния с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ мноТСства ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. По ΡˆΠΊΠ°Π»Π΅ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ искаТСния ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ изобраТСния ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ сходному ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΡˆΠΊΠ°Π»Ρ‹ качСства ΠΈ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΡ, принятыС Π² Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π¨ΠΊΠ°Π»Π° качСства ΠΈ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΡ изобраТСния

ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ

ΠžΡ†Π΅Π½ΠΊΠ° Π² Π±Π°Π»Π»Π°Ρ…

Π£Ρ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΠ΅

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π£Π΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠŸΠ»ΠΎΡ…ΠΎΠ΅ ΠžΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΎΠ΅

НСзамСтно Π—Π°ΠΌΠ΅Ρ‚Π½ΠΎ, Π½ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π‘Π»Π΅Π³ΠΊΠ° ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠœΠ΅ΡˆΠ°Π΅Ρ‚ ΠžΡ‡Π΅Π½ΡŒ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΡ†Π΅Π½ΠΊΠΈ качСства изобраТСния осущСствляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ экспСртной ΠΎΡ†Π΅Π½ΠΊΠΈ. Π”ΠΎ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π° экспСртам ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ нСискаТСнноС ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ экспСримСнта пСриодичСски ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ нСискаТСнноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π΅ΡΡ с ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ ΠΈΠ»ΠΈ рядом с Π½ΠΈΠΌ.

ЧисловыС ΠΎΡ†Π΅Π½ΠΊΠΈ качСства изобраТСния дСлятся Π½Π° Π΄Π²Π° класса: ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ изобраТСния ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ шкала калибруСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сравнСния ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ изобраТСния с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ. Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ показатСлями качСства изобраТСния Π΄ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΎΡΡ‚ранствСнном спСктрС изобраТСния. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ качСства изобраТСния Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΠ»ΠΈ ΡΡ€Π΅Π΄Π½ΡŽΡŽ ΡΠ½Π΅Ρ€Π³ΠΈΡŽ сигнала Π½Π° Π²ΡΠ΅Ρ… частотах. Π”Ρ€ΡƒΠ³ΠΎΠΉ класс ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… числовых ΠΌΠ΅Ρ€ основан Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ статистичСских характСристик изобраТСния, Π² Ρ‡Π°ΡΡ‚ности, матСматичСского оТидания. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Π°Ρ гистограмма ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ распрСдСлСниС Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ пиксСлСй с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ яркости. Π’Π°ΠΊΡƒΡŽ гистограмму ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ плоскости распрСдСлСния вСроятностСй изобраТСния. По Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΎ ΠΊΠΎΠ½Ρ‚растности изобраТСния. Аналогично двумСрная гистограмма — это аппроксимация Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ плотности распрСдСлСния вСроятностСй изобраТСния. Π¨ΠΈΡ€ΠΈΠ½Π° Ρ‚Π°ΠΊΠΎΠΉ гистограммы Π² Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΡ€Ρ€Π΅Π»ΡΡ†ΠΈΡŽ изобраТСния.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ качСства изобраТСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ качСства сТатого изобраТСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ искаТСния Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ. Π‘Π°ΠΌΠΎΠΉ распространСнной ΠΌΠ΅Ρ€ΠΎΠΉ являСтся срСднСквадратичСская ошибка, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ собой Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ значСниями ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… пиксСлСй исходного ΠΈ ΠΈΡΠΊΠ°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ изобраТСния. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, срСднСквадратичСская ошибка часто слабо ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Π° с ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΎΡ†Π΅Π½ΠΊΠ°ΠΌΠΈ качСства изобраТСния.

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ВрСбуСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, наглядно Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ стандарта JPEG, Ρ‚. Π΅. Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΆΠ°Ρ‚ΡŒ ΠΈ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠ³ΠΎ изобраТСния, Π° Π·Π°Ρ‚Π΅ΠΌ Π΅Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния.

2. Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

Π’Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚ΠΈΠΏΠ° BMP

3. Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ являСтся Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠ΅ Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, находящССся Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ дСмонстрируСт ΠΌΠ΅Ρ‚ΠΎΠ΄ JPEG, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ формируСтся Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

4. ΠžΠ±Π·ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

ОписаниС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° BMP для Window 3.0 (DIB)

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (DIB) — Device Independent Bitmap (Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-нСзависимый Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·) являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ†Π²Π΅Ρ‚ΠΎΠ² с ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ.

Π€Π°ΠΉΠ»Ρ‹ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ со ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ BITMAPFILEHEADER:

typedef struct tagBITMAPFILEHEADER {

word bfType; //Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° (для Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° — BM)

dword bfSize; //Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Π² dword

word bfReserved1; //Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

word bfReserved2; //Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

dword bfOffbits; //смСщСниС Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° ΠΎΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π² Π±Π°ΠΉΡ‚Π°Ρ…

}

НСпосрСдствСнно Π·Π° Π½Π΅ΠΉ располагаСтся структура BITMAPINFO, содСрТащая всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΌ ΠΎΠ±Ρ€Π°Π·Π΅. Она дСлится Π½Π° Π΄Π²Π΅ части: структуру BITMAPINFOHEADER, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°, ΠΈ ΠΌΠ°ΡΡΠΈΠ² структур RGBQUAD, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΡƒΡŽ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ:

typedef struct tagBITMAPINFO {

BITMAPINFOHEADER bmiHeader;

RGBQUAD bmiColors[1];

}

typedef struct tagBITMAPINFOHEADER {

dword biSize; //число Π±Π°ΠΉΡ‚, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… структурой BITMAPINFOHEADER

dword biWidth; //ΡˆΠΈΡ€ΠΈΠ½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ…

dword biHeight; //высота Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ…

word biPlanes; //число Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… плоскостСй устройства

word biBitCount; //число Π±ΠΈΡ‚ΠΎΠ² Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΡŒ

dword biCompression; //Ρ‚ΠΈΠΏ сТатия

dword biSizeImage; //Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Π±Π°ΠΉΡ‚Π°Ρ…

dword biXPelsPerMeter;//Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ устройства, пиксСл/ΠΌ

dword biYPelPerMeter; //Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ устройства, пиксСл/ΠΌ

dword biClrUsed; //число ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ²

dword biClrImportant; //число «Π²Π°ΠΆΠ½Ρ‹Ρ…» Ρ†Π²Π΅Ρ‚ΠΎΠ²

} BITMAPINFOHEADER;

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ:

biSize — ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для облСгчСния доступа ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠ².

biPlanes — опрСдСляСт число Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… плоскостСй; ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π²Π΅Ρ‚ кодируСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π±ΠΈΡ‚Π°ΠΌΠΈ, это число всСгда Ρ€Π°Π²Π½ΠΎ 1.

biBitCount — этим ΠΏΠΎΠ»Π΅ΠΌ опрСдСляСтся число Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΡΠΏΠΎΡΠΎΠ±Π° кодирования, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния:

1 — Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΌΠΎΠ½ΠΎΡ…Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ, ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ†Π²Π΅Ρ‚ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π²Π° элСмСнта. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ пиксСль. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚Π° — 0, Ρ‚ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡŒ становится ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹; Ссли — 1, пиксСль становится Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

4 — Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΈΠΌΠ΅Π΅Ρ‚ максимум 16 Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΈ ΠΌΠ°ΡΡΠΈΠ² bmiColors (Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ†Π²Π΅Ρ‚ΠΎΠ²) ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎ 16 элСмСнтов. Π¦Π²Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пиксСля опрСдСляСтся ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ индСкса. НапримСр, Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3Ah, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° Ρ†Π²Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ пиксСля опрСдСляСт Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ элСмСнт Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ†Π²Π΅Ρ‚ΠΎΠ², Π° Ρ†Π²Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ — ΠΎΠ΄ΠΈΠ½Π½Π°Π΄Ρ†Π°Ρ‚Ρ‹ΠΉ.

8 — Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΈΠΌΠ΅Π΅Ρ‚ максимум 256 Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎ 256 элСмСнтов. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π°ΠΉΡ‚ массива Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСт Ρ†Π²Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ пиксСля.

24 — Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΈΠΌΠ΅Π΅Ρ‚ максимум 2 Π² 24-ΠΉ стСпСни Ρ†Π²Π΅Ρ‚ΠΎΠ². Π’Π°Π±Π»ΠΈΡ†Π° Ρ†Π²Π΅Ρ‚ΠΎΠ² пуста, Π° Ρ†Π²Π΅Ρ‚ пиксСлСй опрСдСляСтся ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π±Π°ΠΉΡ‚ΠΎΠ², ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ интСнсивности красного, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ Π³ΠΎΠ»ΡƒΠ±ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠ².

biCompression — Ρ‚ΠΈΠΏ сТатия. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния:

BI_RGB — сТатиС отсутствуСт;

BI_RLE8 — сТатиС для Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° 8 Π±ΠΈΡ‚ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΡŒ;

BI_RLE4 — сТатиС для Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° 4 Π±ΠΈΡ‚Π° Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΡŒ.

biXPelsPerMeter ΠΈ biYPelsPerMeter — ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° рСсурсов ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящСй для Π΄Π°Π½Π½ΠΎΠ³ΠΎ устройства.

biClrUsed — число Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹ΠΌ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Если 0, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся всС Ρ†Π²Π΅Ρ‚Π° ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ (ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ bmiColors).

biClrImportant — ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ отобраТСния Ρ†Π²Π΅Ρ‚ΠΎΠ². Π’Π°ΠΊ, Ссли Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… прилоТСния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π·Ρƒ с 75 Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ, Ρ‚ΠΎ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€, выводящий 256 Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π° ΡΠΊΡ€Π°Π½Π΅ всС 4 ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π·Π°ΠΌΠ΅Π½Ρ‹ Ρ†Π²Π΅Ρ‚ΠΎΠ² — ищСтся Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· с Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΠΈ Π΅Π³ΠΎ «Π»ΠΈΡˆΠ½ΠΈΠ΅» Ρ†Π²Π΅Ρ‚Π° Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящими.

typedef struct tagRGBQUAD {

byte rgbRed; //ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ красного

byte rgbGreen; //ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ

byte rgbBlue; //ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π³ΠΎΠ»ΡƒΠ±ΠΎΠ³ΠΎ

byte rgbRserved; //Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

} RGBQUAD;

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ΄ΡƒΡ‚ сами скан-строки Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ плоскости, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠΉ скан-строкой Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ DIB считаСтся ниТняя скан-строка (Ρ‚.Π΅. Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ находится Π² Π»Π΅Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Ρƒ изобраТСния).

ΠžΠ‘ΠΠžΠ’Π« Π‘Π–ΠΠ’Π˜Π― ΠœΠ•Π’ΠžΠ”ΠžΠœ JPEG

Алгоритм JPEG ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ этапов

1. Π”ΠšΠŸ (ДискрСтно ΠšΠΎΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠ΅ ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅).

2. ΠšΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½ΠΈΠ΅

3. Π’Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠ΅ сТатиС

Π¦Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдставляСт собой ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ‚Ρ€Π΅Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ²: красного Π·Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… обрабатываСтся нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈ Π΄Π»Ρ кодирования ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… выдСляСтся ΠΎΡ‚ 6 Π΄ΠΎ8 Π±ΠΈΡ‚ΠΎΠ² Π½Π° ΠΎΡ‚счСт. ΠŸΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ†Π²Π΅Ρ‚Π½ΠΎΠ³ΠΎ, Π½Π΅ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ отсчСтов Π½Π° Ρ‚Ρ€ΠΈ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΈ Π΄Π»Ρ кодирования ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΡ‚счСтов затрачиваСтся ΠΎΡ‚ 6 Π΄ΠΎ 8 Π±ΠΈΡ‚.

Π­Ρ‚Π°ΠΏ 1. Π”ΠšΠŸ Π’ ΡΠΎΠΎΡ‚вСтствии с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Π”ΠšΠŸ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ отсчСтов яркости пиксСлСй прСобразуСтся ΠΈΠ· Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ пространства (ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ изобраТСния X, Y ΠΈ ΡΡ€ΠΊΠΎΡΡ‚ΡŒ B) Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС Π² Ρ‡Π°ΡΡ‚ΠΎΡ‚Π½ΠΎΠΉ области. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, посрСдством косинусного прСобразования осущСствляСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ пространствСнной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ‡Π°ΡΡ‚ΠΎΡ‚Π½ΡƒΡŽ (ΡΠΏΠ΅ΠΊΡ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ).

ДискрСтноС косинусноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΡ‹ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, посрСдством ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ косинусного прСобразования осущСствляСтся пСрСнос сигнала ΠΈΠ· Ρ‡Π°ΡΡ‚ΠΎΡ‚Π½ΠΎΠΉ области Π² ΠΏΡ€ΠΎΡΡ‚ранствСнноС прСдставлСниС. ΠšΠΎΡΠΈΠ½ΡƒΡΠ½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ отсчСтов яркости элСмСнтов изобраТСния B (x, y) Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ N*N пиксСлов. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ прСобразования являСтся квадратная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° N*N частотных коэффициСнтов (трансформант) F (i, j).

Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹ для прямого ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π”ΠšΠŸ прСдставлСны соотвСтствСнно выраТСниями:

N-1 N-1

F (i, j)=(1/sqr (2N))*C (i)C (j)У У B (x, y)* cos ((2x+1)iП/2N)* cos ((2y+1)jП/2N);

x=0 y=0

N-1 N-1

B (x, y)= (1/sqr (2N))* У У C (i)C (j)F (i, j)* cos ((2x+1)iП/2N)* cos ((2y+1)jП/2N);

i=0 j-0

Π—Π΄Π΅ΡΡŒ C (i) ΠΈ C (j) Ρ€Π°Π²Π½Ρ‹ 1/sqr (2) для i, j=0 ΠΈ C (i), C (j)=1 ΠΏΡ€ΠΈ i, j>0;

B (x, y) — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ отсчСта яркости пиксСла Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° изобраТСния с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ x ΠΈ y.

Для Π½Π°Ρ‡Π°Π»Π° слСдуСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π”ΠšΠŸ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ:

DCT = 1/sqr (N), Ссли i=0

ij

DCT = sqr (2/N)*cos[(2j+1)*i*3.14/2N], Ссли i > 0

ij

N = 8, 0 < i < 7, 0 < j < 7

Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΠΌΠ΅Π΅ΠΌ:

|.353 553.353553.353 553.353553.353 553.353553.353 553.353553|

|.490 393.415818.277 992.097887 -.97 106 -.277 329 -.415 375 -.490 246|

|.461 978.191618 -.190 882 -.461 673 -.462 282 -.192 353.190145.461 366|

DCT = |.414 818 -.97 106 -.490 246 -.278 653.276667.490 710.099448 -.414 486|

|.353 694 -.353 131 -.354 256.352567.354 819 -.352 001 -.355 378.351435|

|.277 992 -.490 246.096324.416 700 -.414 486 -.100 228.491013 -.274 673|

|.191 618 -.462 282.461366 -.189 409 -.193 822.463187 -.460 440.187195|

|.97 887 -.278 653.416700 -.490 862.489771 -.413 593.274008 -.92 414|

Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ изобраТСния:

| 95 88 88 87 95 88 95 95|

|143 144 151 151 153 170 183 181|

|153 151 162 166 162 151 126 117|

IMG = |143 144 133 130 143 153 159 175|

|123 112 116 130 143 147 162 189|

|133 151 162 166 170 188 166 128|

|160 168 166 159 135 101 93 98|

|154 155 153 144 126 106 118 133|

|-33 -40 -40 -41 -33 -40 -33 -33|

| 15 16 23 23 25 42 55 53|

| 25 23 34 38 34 23 -2 -11|

IMG = | 15 16 5 2 15 25 31 47|

| -5 -16 -12 2 15 19 34 61|

| 5 23 34 38 42 60 38 0|

| 32 40 38 31 7 -27 -35 -30|

| 26 27 25 16 -2 -22 -10 5|

Π²ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ производится Π”ΠšΠŸ: RES*IMG*DCT

для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ: TMP = IMG*DCT

|-103 -3 1 2 4 0 -1 5|

| 89 -40 12 -2 -7 5 1 0|

| 57 31 -30 6 2 0 5 0|

TMP = | 55 -28 24 1 0 -8 0 0|

| 32 -60 18 -1 14 0 -8 1|

| 84 -11 -37 17 -24 4 0 -4|

| 19 81 -16 -20 8 -3 4 0|

| 22 40 11 -22 8 0 -3 2|

Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π΅Π΅ Π½Π° Π”ΠšΠŸ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ: RES = TMP*DCT

| 91 3 -5 -6 2 0 1|

|-38 -57 9 17 -2 2 2|

|-80 58 0 -18 4 3 4|

RES = |-52 -36 -11 13 -9 3 0|

|-86 -40 44 -7 17 -6 4|

|-62 64 -13 -1 3 -8 0|

|-16 14 -35 17 -11 2 -1|

|-53 32 -9 -8 22 0 2|

Π­Ρ‚Π°ΠΏ 2. ΠšΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½ΠΈΠ΅ На ΡΡ‚ΠΎΠΌ этапС ΠΌΡ‹ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ квантования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот псСвдокод:

for (i=0;i<8;i++)

{

for (j=0;j<8;j++)

Q[i][j] = 1+((1+i+j)*q);

}

Π³Π΄Π΅ q — это коэффициСнт качСства, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΎΡ‚ Π½Π΅Π³ΠΎ зависит ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства сТатого изобраТСния. Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ этого коэффициСнта рСкомСндуСтся Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚1 Π΄ΠΎ 25. большиС значСния коэффициСнта качСства Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ качСство воспроизводимого изобраТСния Ρ€Π΅Π·ΠΊΠΎ ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ΡΡ.

Π’Π°ΠΊ для q = 2 ΠΈΠΌΠ΅Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ квантования:

| 3 5 7 9 11 13 15 17|

| 5 7 9 11 13 15 17 19|

| 7 9 11 13 15 17 19 21|

Q = | 9 11 13 15 17 19 21 23|

|11 13 15 17 19 21 23 25|

|13 15 17 19 21 23 25 27|

|15 17 19 21 23 25 27 29|

|17 19 21 23 25 27 29 31|

Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ число Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ квантования Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Ρ‡ΠΈΡΠ»ΠΎ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ RES, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

| 30 0 0 0 0 0 0 0|

| -7 8 1 1 0 0 0 0|

|-11 6 0 1 0 0 0 0|

A = | -5 -3 0 0 0 0 0 0|

| -7 -3 2 0 0 0 0 0|

| -4 4 0 0 0 0 0 0|

| -1 0 1 0 0 0 0 0|

| -3 1 0 0 0 0 0 0|

ΠΊΠ°ΠΊ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, здСсь имССтся довольно ΠΌΠ½ΠΎΠ³ΠΎ Π½ΡƒΠ»Π΅ΠΉ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΡƒΠ»Π΅ΠΉ, Ссли Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

+——+——+——+——+——+——+——+——+

| 1 | 2 | 6 | 7 | 15 | 16 | 28 | 29 |

+——+——+——+——+——+——+——+——+

| 3 | 5 | 8 | 14 | 17 | 27 | 30 | 43 |

+——+——+——+——+——+——+——+——+

| 4 | 9 | 13 | 18 | 26 | 31 | 42 | 44 |

+——+——+——+——+——+——+——+——+

| 10 | 12 | 19 | 25 | 32 | 41 | 45 | 54 |

+——+——+——+——+——+——+——+——+

| 11 | 20 | 24 | 33 | 40 | 46 | 53 | 55 |

+——+——+——+——+——+——+——+——+

| 21 | 23 | 34 | 39 | 47 | 52 | 56 | 61 |

+——+——+——+——+——+——+——+——+

| 22 | 35 | 38 | 48 | 51 | 57 | 60 | 62 |

+——+——+——+——+——+——+——+——+

| 36 | 37 | 49 | 50 | 58 | 59 | 63 | 64 |

+——+——+——+——+——+——+——+——+

ΠΈΡ‚Π°ΠΊ, Ρƒ Π½Π°Ρ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:

30 0 -7 -11 8 0 0 1 6 -5 -7 -3 0 1 0 0 0 1 0 -3 -4 -1 4 2 0 0 0 0

0 0 0 0 0 0 0 -3 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

для большСго сТатия ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ этапом JPEG ΠΌΠΎΠΆΠ½ΠΎ провСсти ΡΡƒΠ±Π΄ΠΈΡΠΊΡ€Π΅Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ частоту изобраТСния, идСя ΠΎΡ‡Π΅Π½ΡŒ проста: ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Ρƒ Π½Π°Ρ Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

11 42 200 123 56 32 125 234 12 24 34 78 145 134 245 101

Ссли Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΠ±Π΄ΠΈΡΠΊΡ€Π΅Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ 4:1:1 Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚: 11 123 125 24 145 101

Π° Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 4:2:2 — 11 234 245

Π° Π΄Π»Ρ восстановлСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΠΎΠ°Ρ‚ΡŒ Π­Ρ‚Π°ΠΏ 3. Π’Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠ΅ сТатиС На ΡΡ‚ΠΎΠΌ этапС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ 7bit RLE. Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΡ‡Π΅Π½ΡŒ прост. Если Ρƒ Π½Π°Ρ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ², Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ послСдний Π±ΠΈΡ‚ Π² 0, ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство Π±Π°ΠΉΡ‚ ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π±ΠΈΡ‚Ρ‹. Если Ρƒ Π½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ², Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ послСдний Π±Ρ‹Ρ‚ Π² 1, ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство Π±Π°ΠΉΡ‚ ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π±ΠΈΡ‚Ρ‹. Для нашСй ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ получится:

133 30 0 -7 -11 8 | 2 0 | 135 1 6 -5 -7 -3 0 1 | 3 0 | 135 1 0 -3 -4 -1 4 2

11 0 | 131 -3 1 1 | 27 0

ΠΈΡ‚Π°ΠΊ, ΠΌΡ‹ ΡΠΆΠ°Π»ΠΈ 64 Π±Π°ΠΉΡ‚Π° Π² 34

5. ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° jpeg

Для обобщСния ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сТатия Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²Ρ‹Ρ… ΠΈ Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ стандарта МККВВ ΠΈ ΠœΠžΠ‘ Π² 1991 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»Π° создана организация, состоящая ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ экспСртов, которая ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ JPEG (Join Photographic Expert Group). Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΈΠΌΠΈ стандарт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ JPEG, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΏΡ€Π°Π²ΠΈΠ»Π° сТатия ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π΄Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ состоит ΠΈΠ· Ρ€ΡΠ΄Π° частСй, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ°ΠΊ сТатиС Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ, Ρ‚Π°ΠΊ ΠΈ Ρ Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ искаТСниями ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ базируСтся Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π”Π˜ΠšΠœ с ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ, Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π₯Π°Ρ„Ρ„ΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ арифмСтичСского кодирования. ΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ косинусного прСобразования с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

ВносимыС искаТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ Π΅Π΅ ΠΊΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΠΈ Π² ΡΠΎΠΎΡ‚вСтствии Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ JPEG Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠΌΡƒ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΡŽ качСства восстанавливаСмого изобраТСния, Π² Ρ‡Π°ΡΡ‚ности, качСство изобраТСния ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° «ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ» ΠΈΠ»ΠΈ «Ρ…ΠΎΡ€ΠΎΡˆΠΎ». ΠšΡ€ΠΎΠΌΠ΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ достаточно простым Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° компрСссора ΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΡ€Π΅ΡΡΠΎΡ€Π° Π²ΠΈΠ΄Π΅ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρƒ JPEG ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1:

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ изобраТСния ВосстановлСнный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚

Рисунок 1 — Бтруктурная схСма компрСссора ΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΡ€Π΅ΡΡΠΎΡ€Π° ΠΏΠΎ JPEG

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ JPREG. ΠšΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ разбиваСтся Π½Π° Π±Π»ΠΎΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 8*8 элСмСнтов (пиксСлСй). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ прСдставляСт собой 64-Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΉ дискркСтный сигнал, состоящий ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ†Π΅Π»Ρ‹Ρ… чисСл Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0. 2^k — 1], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [-2^k, 2^(k-1) — 1]. Π’Π°ΠΊ, ΠΏΡ€ΠΈ256 градациях яркости количСство разрядов для кодирования отсчСта изобраТСния k=8. Π―Ρ€ΠΊΠΎΡΡ‚ΡŒ пиксСля ΠΏΡƒΡ‚Π΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ пСрСносится ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° 0 — 255 Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ -127 Π΄ΠΎ 127.

Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ сигнал Π±Π»ΠΎΠΊΠ° FDCT прСдставляСт собой 64-элСмСнтный массив, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ 8*8. Амплитуды трансформант ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ исходным Π±Π»ΠΎΠΊΠΎΠΌ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² видСосигнала, ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚авляСт собой коэффициСнты ΠΏΡ€ΠΈ дискрСтных частотах. ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ ΠΏΡ€ΠΈ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ частотС опрСдСляСт Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ постоянной ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ (DC), Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ коэффициСнты — Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… (AC). Π’ ΡΠ²ΡΠ·ΠΈ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ элСмСнты изобраТСния Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ слабо, Ρ‚ΠΎ Π·Π° ΡΡ‡Π΅Ρ‚ косинусного прСобразования удаСтся ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ трансформанты Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π½ΠΈΠΆΠ½ΠΈΡ… пространствСнных частот. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ косинусноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΡ‹ΠΌ ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΆΠ°Ρ‚ия сообщСния. Оно осущСствляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ сТатия, которая осущСствляСтся Π² ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Ρ‚Π΅Π»Π΅.

ЦСлью квантования являСтся компрСссия изобраТСния ΠΏΡƒΡ‚Π΅ΠΌ задания точности Π½Π΅ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΉ, Ρ‡Π΅ΠΌ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для получСния ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ качСства воспроизвСдСния изобраТСния. ΠŸΡ€ΠΈ сТатии трансформант ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ квантования, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ‚Π΅ΠΌ большС, Ρ‡Π΅ΠΌ дальшС располоТСна трансформанта ΠΎΡ‚ ΠΏΠΎΡΡ‚оянной ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ DC, находящСйся Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ с ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ (0,0). Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ точности отобраТСния трансформант ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ количСство Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… для ΠΈΡ… ΠΏΡ€Π΅Π΄ΡΡ‚авлСния Π±ΠΈΡ‚ΠΎΠ². Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΏΠΎΡΡ‚оянной ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ, ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ большим числом Π±ΠΈΡ‚ΠΎΠ², Π° Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ — мСньшим.

Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ JPEG опСрация квантования рСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ квантования. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ трансформант имССтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΅ΠΌΡƒ значСния ΠΊΠ²Π°Π½Ρ‚Π° Q (i, j), располоТСнныС Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ квантования. ΠšΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½ΠΈΠ΅ осущСствляСтся Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ трансформанты F (i, j) Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΉ ΠΊΠ²Π°Π½Ρ‚ Q (i, j) ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ†Π΅Π»ΠΎΠΉ части.

Fq (i, j) = [ F (i, j) / Q (i, j) ]

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Q (i, j) находится Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 255. Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Q (i, j)=1 обСспСчиваСт Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. По ΠΌΠ΅Ρ€Π΅ удалСния ΠΎΡ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ² увСличиваСтся. НСтрудно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ, начиная с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Q (i, j)> F (i, j) ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Fq (i, j) обращаСтся Π² Π½ΡƒΠ»ΡŒ, Ρ‚. Π΅. происходит нСвозвратимая потСря части ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. НСсмотря Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ стандартной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ², JPEG прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ свободу Π²Ρ‹Π±ΠΎΡ€Π° элСмСнтов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ качСства воспроизвСдСния. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ значСния ΠΊΠ²Π°Π½Ρ‚ΠΎΠ² ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅

Q[ i, j ]=1+(1+i+j)*g,

Π“Π΄Π΅ i ΠΈ j — индСксы элСмСнтов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ², ΠΏΡ€ΠΈ i, j=1,2,…, N; g-коэффициСнт качСства воспроизвСдСния изобраТСния, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ этого коэффициСнта рСкомСндуСтся Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 1 Π΄ΠΎ 25. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ значСния коэффициСнта качСства Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ этом качСство воспроизводимого изобраТСния Ρ€Π΅Π·ΠΊΠΎ ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ΡΡ. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ прСдставлСна ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΊΠ²Π°Π½Ρ‚ΠΎΠ², рассчитанная ΠΏΡ€ΠΈ коэффициСнтС качСства g=2.

ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚Ρ‹ квантования

Q (i, j)

ΠŸΡ€ΠΈ Π΄Π΅ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½ΠΈΠΈ производится опСрация умноТСния, Ρ‚. Π΅.

F'(i, j) =Fq (i, j)* Q (i, j)

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° F'(i, j) являСтся Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ косинусного прСобразования. Π’, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ значСния трансформант Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ косинусного прСобразоватСля ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° изобраТСния, Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ — значСния Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ квантоватСля. Π’ ΡΠ²ΡΠ·ΠΈ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ трансформанты ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°ΡŽΡ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, объСм ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ сущСствСнно ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡΡ.

ЗначСния трансформант ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ

— 9

— 7

— 1

— 39

— 58

— 2

— 84

— 18

— 5

— 52

— 36

— 10

— 10

— 2

— 86

— 40

— 7

— 6

— 2

— 62

— 12

— 2

— 8

— 2

— 17

— 36

— 11

— 1

— 54

— 9

ЗначСния трансформант послС дСквантования

— 7

— 35

— 56

— 84

— 13

— 45

— 33

— 77

— 39

— 52

— 15

— 19

— 51

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠΌ шагом JPEG-ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ являСтся ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния. Π‘Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ трансформанты постоянной DC ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ AC ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…. Врансформанта постоянной ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ являСтся ΠΌΠ΅Ρ€ΠΎΠΉ срСднСго значСния 63 отсчСтов изобраТСния. Π’Π°ΠΊ ΠΊΠ°ΠΊ сосСдниС Π±Π»ΠΎΠΊΠΈ изобраТСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΡ€Ρ€Π΅Π»ΡΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ связь, Ρ‚ΠΎ ΠΏΠΎΡΡ‚оянная ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΌΠ°Π»ΠΎ отличаСтся ΠΎΡ‚ DC — ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°. Она прСобразуСтся ΠΈΠ· Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ значСния Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, ΠΈ Π·Π°Ρ‚Π΅ΠΌ кодируСтся ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ DC — ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ (Π”Π˜ΠšΠœ).

Врансформанты ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ способом «Π—ΠΈΠ³Π·Π°Π³». ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ трансформант AC ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ кодирования Π΄Π»ΠΈΠ½ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ символов (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ имССтся большоС число Π½ΡƒΠ»Π΅ΠΉ), Π»ΠΈΠ±ΠΎ хаффмСновским ΠΈΠ»ΠΈ арифмСтичСским ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Π‘Ρ…Π΅ΠΌΠ° считывания отсчСтов Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° изобраТСния

0.0

0.1

0.2

1.0

1.1

1.2

2.0

2.1

2.2

3.0

3.1

3.2

4.0

4.1

4.2

5.0

5.1

5.2

6.0

6.1

6.2

6.3

7.0

7.1

7.2

7.3

Для сТатия ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ AC-трансформант Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° изобраТСния рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ энтропийноС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΈ этом способС Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… АБ — ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ свойством раздСлимости ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ ставится ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π»ΠΈΠ½Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ. Π”Π»ΠΈΠ½Π½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½ΡƒΠ»Π΅ΠΉ, располоТСнныС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ трансформантами, ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ кодирования Π΄Π»ΠΈΠ½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… символов. Π’ ΡΠΎΠΎΡ‚вСтствии с Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠ΅ΠΉ JPEG ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΈ Π·ΠΈΠ³Π·Π°Π³-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, состоящиС ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ трансформант, ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ двумя словами: БИМ1 ΠΈ Π‘ИМ2. БИМ1 прСдставлСн ΠΎΠ΄Π½ΠΈΠΌ Π±Π°ΠΉΡ‚ΠΎΠΌ, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ ряда Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… трансформант ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°, Π° ΠΌΠ»Π°Π΄ΡˆΠΈΠΉ — Ρ€Π°Π·ΠΌΠ΅Ρ€ (количСство Π±ΠΈΡ‚ΠΎΠ²) Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ символа БИМ2, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ трансформанты, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΡƒΡŽ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… трансформант. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°, состоящСго ΠΈΠ· 1.15 Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… трансформант. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π΄Π»ΠΈΠ½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС 15. Π’ ΡΡ‚ΠΎΠΌ случаС длинная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΡƒΠ»Π΅ΠΉ прСдставляСтся БИМ1 (15,0), ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· 16 Π½ΡƒΠ»Π΅ΠΉ. Π’Π°ΠΊΠΈΡ… символов ΠΏΡ€ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° изобраТСния 8*8 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎ 3-Ρ…. Π—Π°Ρ‚Π΅ΠΌ слСдуСт БИМ2 с ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»ΠΈΠ½Ρ‹, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… трансформант. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ символа БИМ1 с ΠΊΠΎΠ΄ΠΎΠΌ (0,0) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ†Π° кодирования Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° отсчСтов Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 8*8 элСмСнтов. Для кодирования Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… трансформант ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ†Π΅Π»Ρ‹Π΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа, содСрТащиС Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ΅ число Π±ΠΈΡ‚ΠΎΠ².

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π±ΠΈΡ‚ΠΎΠ²

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹

— 1,1

ΠžΡ‚ -3 Π΄ΠΎ -2, ΠΎΡ‚ 2 Π΄ΠΎ 3

ΠžΡ‚-7 Π΄ΠΎ -4, ΠΎΡ‚ 4 Π΄ΠΎ7

ΠžΡ‚ -15 Π΄ΠΎ -8, ΠΎΡ‚8 Π΄ΠΎ 15

ΠžΡ‚ -31 Π΄ΠΎ -16, ΠΎΡ‚ 16 Π΄ΠΎ 31

ΠžΡ‚ -63 Π΄ΠΎ -32, ΠΎΡ‚ 32 Π΄ΠΎ 63

ΠžΡ‚ -127 Π΄ΠΎ -64, ΠΎΡ‚ 64 Π΄ΠΎ 127

ΠžΡ‚ -255 Π΄ΠΎ -128, ΠΎΡ‚ 128 Π΄ΠΎ 255

ΠžΡ‚ -511 Π΄ΠΎ -256, ΠΎΡ‚ 256 Π΄ΠΎ 511

ΠžΡ‚ -1023 Π΄ΠΎ -512, ΠΎΡ‚ 512 Π΄ΠΎ 1023

КаТдая Π³Ρ€ΡƒΠΏΠΏΠ° Π±ΠΈΡ‚ΠΎΠ² ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ симмСтричный Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄, состоящий ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ этих чисСл ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π·Π½Π°ΠΊ, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹. ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Π°Ρ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ трансформант DC Ρ‚Π°ΠΊΠΆΠ΅ кодируСтся Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚авляСтся посрСдством Π΄Π²ΡƒΡ… символов. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ символ БИМ1 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ БИМ2 — Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ DC — ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ. Π’ ΡΠ²ΡΠ·ΠΈ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ постоянныС ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ способом, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΡ… ΠΏΡ€Π΅Π΄ΡΡ‚авлСния увСличиваСтся Π²Π΄Π²ΠΎΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚ся ΠΎΡ‚ -211 Π΄ΠΎ 211−1. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ добавляСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ строка, Π° Π‘ИМ2 ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 0 Π΄ΠΎ 11. Π’Π°ΠΊΠΎΠΉ Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎ ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈ сТатия нСсколько уступаСт хаффмСнскому ΠΈΠ»ΠΈ арифмСтичСским ΠΊΠΎΠ΄Π°ΠΌ. Однако ΠΎΠ½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚ся достаточно эффСктивным, ΠΊΠΎΠ³Π΄Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ трансформант состоит ΠΈΠ· ΠΌΠ°Π»Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Ρ‡Π°Ρ‰Π΅ всСго Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ исслСдований ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ сТатия установлСно, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ БИМ1, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρƒ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΈ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρƒ трансформант, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ большой Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ вСроятности появлСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ JPEG Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сТатиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚Π΅ΠΌ хаффмСновского кодирования символов БИМ1.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π—Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ способом энтропийного кодирования ΠΏΡ€ΠΎΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½Π½Ρ‹Π΅ трансформанты Π±Π»ΠΎΠΊΠ°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

ЗначСния трансформант послС квантования

— 5

— 3

— 1

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ трансформант:

86 -5 12 -1 -3 3 0 0 17 0 0 0 0 0 0 2 0 0 -1 0 21 0 0 0 0 0 0 0 0 -1 0 -2 0 0 0 0 0 0 -7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ описанный Π²Ρ‹ΡˆΠ΅ способ кодирования ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов БИМ1 ΠΈ Π‘ИМ2:

(7)(86) (0,3)(-5) (0,4)(12) (0,1)(-1) (0,2)(-3) (2,5)(17) (6,2)(2) (2,1)(-1) (0,5)(21) (8,1)(-1) (1,2)(-2) (6,3)(-7) (0,0)

jpeg ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сТатиС компрСссия РассмотрСнный JPEG-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ относится ΠΊ ΠΌΠΎΠ½ΠΎΡ…Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ изобраТСниям. Π¦Π²Π΅Ρ‚Π½Ρ‹Π΅ изобраТСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ состоят ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚: красного, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠ² (RGB-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ сигнала). Π’ ΡΡ‚ΠΎΠΌ случаС JPEG-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ рассматриваСт ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΎ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈ RGB-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ сначала сТимаСтся красная, Π·Π°Ρ‚Π΅ΠΌ зСлСная ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ синяя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ квантования ΠΈ ΡΠ½Ρ‚Ρ€ΠΎΠΏΠΈΠΉΠ½ΠΎΠ³ΠΎ кодирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ статистичСскими характСристиками ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… изобраТСния. Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ компрСссии ΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΠΈ осущСствляСтся синхронноС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† Π² ΡΠΎΠΎΡ‚вСтствии с ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΉ.

6. ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΈ тСстировании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ΅ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ находится Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΎΠΊΠΎΠ½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘ΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Π°Ρ ΠΎΡ†Π΅Π½ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — «Ρ…ΠΎΡ€ΠΎΡˆΠΎ».

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π² ΡΠΎΠΎΡ‚вСтствии с ΠΏΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ «ΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния» ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ» («ΠšΠΈΠ—Π˜»). ΠŸΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ мСтодичСскиС указания ΠΏΠΎ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠšΠΈΠ—Π˜». Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠ΄ΠΎΠ±Π΅Π½ для использования. Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ прСдставлСны Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠ³ΠΎ изобраТСния Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΎΠΊΠΎΠ½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. По ΡΠ²ΠΎΠ΅ΠΉ структурС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π°, Ρ‡Ρ‚ΠΎ позволяСт Π² ΡΠ»ΡƒΡ‡Π°Π΅ нСобходимости Π»Π΅Π³ΠΊΠΎ Π΅Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ тСстовый ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ выполняСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Π²Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Всё это ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎ Ρ€Π°Π±ΠΎΡ‚оспособности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ ΠΊΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚ся наглядным ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° JPEG.

БиблиографичСский список

1. Π’. Π‘. Π§Π΅Ρ€Π½Π΅Π³Π° Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… сСтях: Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС для Π²ΡƒΠ·ΠΎΠ²: Под Ρ€Π΅Π΄. Π΄.Ρ‚.Π½., ΠΏΡ€ΠΎΡ„. Π’. К. ΠœΠ°Ρ€ΠΈΠ³ΠΎΠ΄ΠΎΠ²Π°.- Π‘Π΅Π²Π°ΡΡ‚ΠΎΠΏΠΎΠ»ΡŒ.: Π‘Π΅Π²Π“Π’Π£, — 1997.-214с.: ΠΈΠ».

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Menus, ExtDlgs, ExtCtrls, StdCtrls, Buttons, Spin, Grids;

type

{****}

TPImage=Record

bfType:Array[1.2] Of Char;

bfSize:Integer;

bfReserved:Integer;

bfOffBits:Integer;

biSize:Integer;

biWidth:Integer;

biHeight:Integer;

biPlanes:Word;

biBitCount:Word;

biCompression:Integer;

biSizeImage:Integer;

biXPelsPerMeter:Integer;

biYPelsPerMeter:Integer;

biClrUsed:Integer;

biClrImpotant:Integer

End;

{****}

TForm1 = class (TForm)

MainMenu1: TMainMenu;

OpenDialog1: TOpenDialog;

File1: TMenuItem;

Open1: TMenuItem;

N1: TMenuItem;

Exit1: TMenuItem;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;

Label24: TLabel;

Label25: TLabel;

Label26: TLabel;

Label27: TLabel;

Label29: TLabel;

Label30: TLabel;

Label28: TLabel;

Bevel1: TBevel;

Bevel2: TBevel;

Bevel3: TBevel;

Decompression: TSpeedButton;

Label31: TLabel;

Compression: TSpeedButton;

Edit1: TEdit;

Convert: TSpeedButton;

Quality: TSpinEdit;

Label32: TLabel;

Label33: TLabel;

procedure Open1Click (Sender: TObject);

procedure CompressionClick (Sender: TObject);

procedure DecompressionClick (Sender: TObject);

procedure ConvertClick (Sender: TObject);

procedure Exit1Click (Sender: TObject);

private

Procedure ToBinTo (Digit:SmallInt;N:ShortInt);

Procedure ToBin (Digit:SmallInt;N:ShortInt);

Procedure Int24ToInt38(Digit:Integer;x, y: ShortInt);

Procedure GetColor (x, y: ShortInt);

Procedure PutColor (x, y: ShortInt);

Procedure ConvertWrite (x, y: Integer);

Procedure ToCos;

Procedure CosTo;

Procedure TKwant;

Procedure ToKwant;

Procedure KwantTo;

Procedure TR (var x, y: Integer;S: ShortInt);

Procedure TD (var x, y: Integer;S: ShortInt);

Procedure TLD (var x, y: Integer;S: ShortInt);

Procedure TRU (var x, y: Integer;S: ShortInt);

Procedure Zigzag (Style: ShortInt);

Procedure Coding;

Procedure ChoiceAmp (Digit:SmallInt);

Procedure BinToSym1Dec;

Procedure BinToSym2Dec;

Procedure Decoding;

Procedure RabFileToLongInt;

Procedure LongIntToRabFile;

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

PImage: TPImage;

clRGB: Array[0.7,0.7] Of Byte;

TOC: Array[0.7,0.7] Of Integer;

Zgzg: Array[0.63] Of Integer;

T: Array[0.7,0.7] Of Integer;

TKW: Array[0.7,0.7] Of Integer;

RabF: TextFile;

Posit: Byte;

Sym11,Sym12,Sym2: Integer;

DcD: Array [0.191] Of Integer;

RabFile: String;

SizeRabFile: Integer;

prf: integer;

BinA: String;

implementation

uses Unit2;

{$R *.DFM}

procedure TForm1. Exit1Click (Sender: TObject);

begin

Form1.Close;

end;

procedure TForm1. Open1Click (Sender: TObject);

Var F: File;

i, j: integer;

red: Byte;

begin

If OpenDialog1. Execute Then Begin

AssignFile (F, OpenDialog1. FileName);

Reset (F, 1);

With PImage Do Begin

BlockRead (F, bfType, SizeOF (bfType));

Form1.Label16.Caption:=bfType;

BlockRead (F, bfSize, SizeOF (bfSize));

Form1.Label17.Caption:=IntToStr (bfSize)+' bytes';

BlockRead (F, bfReserved, SizeOF (bfReserved));

Form1.Label18.Caption:=IntToStr (bfReserved);

BlockRead (F, bfOffBits, SizeOF (bfOffBits));

Form1.Label19.Caption:=IntToStr (bfOffBits)+' bytes';

BlockRead (F, biSize, SizeOF (biSize));

Form1.Label20.Caption:=IntToStr (biSize);

BlockRead (F, biWidth, SizeOF (biWidth));

Form1.Label21.Caption:=IntToStr (biWidth);

BlockRead (F, biHeight, SizeOF (biHeight));

Form1.Label22.Caption:=IntToStr (biHeight);

BlockRead (F, biPlanes, SizeOF (biPlanes));

Form1.Label23.Caption:=IntToStr (biPlanes);

BlockRead (F, biBitCount, SizeOF (biBitCount));

Form1.Label24.Caption:=IntToStr (biBitCount);

BlockRead (F, biCompression, SizeOF (biCompression));

Form1.Label25.Caption:=IntToStr (biCompression);

BlockRead (F, biSizeImage, SizeOF (biSizeImage));

Form1.Label26.Caption:=IntToStr (biSizeImage);

BlockRead (F, biXPelsPerMeter, SizeOF (biXPelsPerMeter));

Form1.Label27.Caption:=IntToStr (biXPelsPerMeter);

BlockRead (F, biYPelsPerMeter, SizeOF (biYPelsPerMeter));

Form1.Label28.Caption:=IntToStr (biYPelsPerMeter);

BlockRead (F, biClrUsed, SizeOF (biClrUsed));

Form1.Label29.Caption:=IntToStr (biClrUsed);

BlockRead (F, biClrImpotant, SizeOF (biClrImpotant));

Form1.Label30.Caption:=IntToStr (biClrImpotant);

red:=0;

For i:=1 to biWidth do Begin

For j:=1 to biHeight do

Form2.Image1.Canvas.Pixels[j, i]: = (red or Form2. Image1.Canvas.Pixels[j, i]);

end;

End;

CloseFile (F);

Compression1.Enabled:=True;

Form2.Width:=PImage.biWidth+10;

Form2.Height:=PImage.biHeight+10;

Form2.Image1.Picture.LoadFromFile (Form1.OpenDialog1.FileName);

Form2.Image1.Width:=PImage.biWidth+6;

Form2.Image1.Height:=PImage.biHeight+23;

Form2.Visible:=True;

End

end;

{***********************************************************}

procedure TForm1. ConvertWrite (x, y: Integer);

var i, j: integer;

begin

for i:=0 to 7 do begin

for j:=0 to 7 do begin

Form2.Image1.Canvas.Pixels[x*8+i, y*8+j]: =RGB (clRGB[i, j], clRGB[i, j], clRGB[i, j]);

end;

end;

end;

procedure TForm1. ConvertClick (Sender: TObject);

var i, j, x, y: integer;

red: Byte;

begin

For x:=0 To Trunc ((PImage.biWidth+1)/8) Do

For y:=0 To Trunc ((PImage.biHeight+1)/8) Do

Begin

GetColor (x, y);

ConvertWrite (x, y);

End;

Form2.Image1.Picture.SaveToFile ('c:ConvertFile.bmp');

end;

{***********************************************************}

{***********************************************************}

Procedure TForm1.Int24ToInt38(Digit:Integer;x, y: ShortInt);

Var i, j: ShortInt;

k:Byte;

Begin

k:=0;

For j:=0 To 7 Do Begin IF (Digit Mod 2)=1 Then k:=k+Trunc (exp (j*Ln (2)));

Digit:=Digit Div 2

End;

clRGB[x, y]: =k

End;

Procedure TForm1. GetColor (x, y: ShortInt);

Var i, j: ShortInt;

Begin

For i:=0 To 7 Do

For j:=0 To 7 Do Int24ToInt38(Form2.Image1.Canvas.Pixels[i+x*8,j+y*8], i, j)

End;

Procedure TForm1. PutColor (x, y: ShortInt);

Var i, j: ShortInt;

Begin

For i:=0 To 7 Do

For j:=0 To 7 Do Form2. Image1.Canvas.Pixels[i+x*8,j+y*8]: =RGB (TOC[i, j], TOC[i, j], TOC[i, j])

End;

Procedure TForm1. ToCos;

Var i, j, x, y: ShortInt;

s, d: Real;

Begin

For i:=0 To 7 Do

For j:=0 To 7 Do

Begin

s:=0;

If (i>0) And (j>0) Then d:=1

Else If (i=0) And (j=0) Then d:=½

Else d:=1/Sqrt (2);

For x:=0 To 7 Do

For y:=0 To 7 Do s:=s+clRGB[x, y]*Cos ((2*x+1)*i*Pi/16)*Cos ((2*y+1)*j*Pi/16);

TOC[i, j]: =Trunc (s*d/4)

End

End;

Procedure TForm1. CosTo;

Var i, j, x, y: ShortInt;

s, d: Real;

Begin

For x:=0 To 7 Do

For y:=0 To 7 Do

Begin

s:=0;

For i:=0 To 7 Do

For j:=0 To 7 Do

Begin

If (i>0) And (j>0) Then d:=1

Else If (i=0) And (j=0) Then d:=½

Else d:=1/Sqrt (2);

s:=s+d*TOC[i, j]*Cos ((2*x+1)*i*Pi/16)*Cos ((2*y+1)*j*Pi/16)

End;

T[x, y]: =Round (s/4)

End;

For i:=0 To 7 Do

For j:=0 To 7 Do TOC[i, j]: =T[i, j]

End;

Procedure TForm1. TKwant;

Var i, j: Byte;

Begin

For i:=0 To 7 Do

For j:=0 To 7 Do TKW[i, j]: =1+((1+i+j)*Form1.Quality.Value);

End;

Procedure TForm1. ToKwant; //ΠšΠ²Π°Π½Ρ‚ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ

Var i, j: Byte;

Begin

For i:=0 To 7 Do

For j:=0 To 7 Do TOC[i, j]: =Trunc (TOC[i, j]/TKW[i, j])

End;

Procedure TForm1. KwantTo; //Π”Π΅ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ

Var i, j: Byte;

Begin

For i:=0 To 7 Do

For j:=0 To 7 Do TOC[i, j]: =TOC[i, j]*TKW[i, j]

End;

{***********************************************************}

Procedure TForm1. TR (var x: Integer;var y: Integer;S: ShortInt);

Begin

inc (x);

inc (Posit);

If S=1 Then Zgzg[Posit]: =TOC[x, y]

Else TOC[x, y]: =DcD[Posit];

end;

Procedure TForm1. TD (var x: Integer;var y: Integer;S: ShortInt);

Begin

inc (y);

inc (Posit);

If S=1 Then Zgzg[Posit]: =TOC[x, y]

Else TOC[x, y]: =DcD[Posit];

end;

Procedure TForm1. TLD (var x: Integer;var y: Integer;S: ShortInt);

Begin

inc (y);

dec (x);

inc (Posit);

If S=1 Then Zgzg[Posit]: =TOC[x, y]

Else TOC[x, y]: =DcD[Posit];

end;

Procedure TForm1. TRU (var x: Integer;var y: Integer;S: ShortInt);

Begin

inc (x);

dec (y);

inc (Posit);

If S=1 Then Zgzg[Posit]: =TOC[x, y]

Else TOC[x, y]: =DcD[Posit];

end;

Procedure TForm1. Zigzag (Style: ShortInt);

Var i, j: Integer;

Begin

i:=0;

j:=0;

Posit:=0;

If Style=1 Then Zgzg[Posit]: =TOC[i, j]

Else TOC[i, j]: =DcD[Posit];

TR (i, j, Style);

While (i<7) and (j>=0) do

Begin

While i<>0 do TLD (i, j, Style);

TD (i, j, Style);

While j<>0 do TRU (i, j, Style);

TR (i, j, Style)

end;

While (i<=7) And (j<6) do

Begin

While j<>7 do TLD (i, j, Style);

TR (i, j, Style);

While i<>7 do TRU (i, j, Style);

TD (i, j, Style);

end;

TLD (i, j, Style);

TR (i, j, Style);

End;

Procedure TForm1. ToBinTo (Digit:SmallInt;N:ShortInt);

Var i, k: ShortInt;

Nol: Array [0.15] of Integer;

Begin

For i:=0 To N-1 Do Begin k:=Digit Mod 2;

Nol[i]: =k;

Digit:=Digit Div 2

End;

For i:=N-1 DownTo 0 do BinA:=BinA+IntToStr (Nol[i]);

RabFile:=RabFile+BinA;

End;

Procedure TForm1. ToBin (Digit:SmallInt;N:ShortInt);

Var i, k: ShortInt;

p:SmallInt;

Begin

BinA:='';

p:=Digit;

i:=1;

k:=0;

If p<0 Then BinA:=BinA+IntToStr (i)

Else BinA:=BinA+IntToStr (k);

Digit:=Abs (Digit);

ToBinTo (Digit, N-1); BinA:='';

End;

Procedure TForm1. ChoiceAmp (Digit:SmallInt);

Begin

Case Digit Of

— 1,0.1:Begin ToBinTo (2,4); ToBin (Digit, 2) End;

— 3.-2,2.3:Begin ToBinTo (3,4); ToBin (Digit, 3) End;

— 7.-4,4.7:Begin ToBinTo (4,4); ToBin (Digit, 4) End;

— 15.-8,8.15:Begin ToBinTo (5,4); ToBin (Digit, 5) End;

— 31.-16,16.31:Begin ToBinTo (6,4); ToBin (Digit, 6) End;

— 63.-32,32.63:Begin ToBinTo (7,4); ToBin (Digit, 7) End;

— 127.-64,64.127:Begin ToBinTo (8,4); ToBin (Digit, 8) End;

— 255.-128,128.255:Begin ToBinTo (9,4); ToBin (Digit, 9) End;

— 511.-256,256.511:Begin ToBinTo (10,4); ToBin (Digit, 10) End;

— 1024.-512,512.1024:Begin ToBinTo (11,4); ToBin (Digit, 11) End

End

End;

Procedure TForm1. Coding;

Var ZeroCounter: Integer;

n: Integer;

Begin

RabFile:='';

Zigzag (1);

ZeroCounter:=0;

For n:=0 to 63 Do Begin BinA:='';

If Zgzg[n]=0 Then Begin

Inc (ZeroCounter);

if ZeroCounter=15 Then

Begin

ToBinTo (15,4); BinA:='';

ToBinTo (0,4); BinA:='';

ZeroCounter:=0;

end

end

Else begin

ToBinTo (ZeroCounter, 4); BinA:='';

ChoiceAmp (Zgzg[n]); BinA:='';

ZeroCounter:=0;

end;

end;

If ZeroCounter<>0 Then

Begin

ToBinTo (ZeroCounter, 4); BinA:='';

ToBinTo (0,4); BinA:='';

ZeroCounter:=0;

End

end;

{***********************************************************}

Procedure TForm1. BinToSym1Dec;

Var

k, i: ShortInt;

S: String;

Nol: Array [0.3] of Integer;

Begin

Sym11:=0;

Sym12:=0;

For i:=0 To 3 Do

Nol[i]: =StrToInt (RabFile[i+prf]);

inc (prf, 4);

For i:=3 DownTo 0 do Begin

k:=Nol[i];

If k=1 Then Inc (Sym11,Trunc (exp ((3-i)*Ln (2))))

End;

For i:=0 To 3 Do

Nol[i]: =StrToInt (RabFile[i+prf]);//Read (F, k);

inc (prf, 4);

For i:=3 DownTo 0 do Begin

k:=Nol[i];

If k=1 Then Inc (Sym12,Trunc (exp ((3-i)*Ln (2))))

End;

//inc (prf);

end;

Procedure TForm1. BinToSym2Dec;

Var k, i: ShortInt;

Mark: Byte;

Nol: Array [0.15] of integer;

Begin

If Sym12<>0 Then

Begin

k:=StrToInt (RabFile[prf]);//Read (F, k);

inc (prf);

Mark:=k;

Sym2:=0;

For i:=0 To Sym12−2 Do

Nol[i]: =StrToInt (RabFile[i+prf]);//Read (F, k);

inc (prf, Sym12−1);

For i:=Sym12−2 DownTo 0 do Begin

k:=Nol[i];

If k=1 Then Inc (Sym2,Trunc (exp ((Sym12−2-i)*Ln (2))))

End;

// Inc (prf);

If Mark=1 Then Sym2:=-Sym2;

End

Else Sym2:=0;

// Inc (prf);

end;

Procedure TForm1. Decoding;

Var i: Byte;

Begin

prf:=1;

For i:=0 to 191 do DcD[i]: =0;

i:=0;

While i< 64 do

Begin

BinToSym1Dec;

BinToSym2Dec;

//DcD[i]: =Sym11;

//DcD[i+1]:=Sym12;

If Sym11=0 Then i:=i+1

Else If Sym11=15 Then i:=i+Sym11

Else i:=i+1+Sym11;

DcD[i-1]: =Sym2;

end;

Zigzag (0);

end;

{***********************************************************}

procedure TForm1. RabFileToLongInt;

Var o, k, i, j, n: Integer;

Longg: String;

Lon: LongInt;

WW: Array [1.64] of String;

Nol: Array [1.64] of Integer;

Begin

For i:=1 to 64 do WW[i]: ='';

Lon:=0;

Writeln (RabF, IntToStr (Length (RabFile)));

o:=Length (RabFile) Mod 24;

k:=Trunc (Length (RabFile)/24);

If o>0 Then inc (k);

Writeln (RabF, IntToStr (k));

For j:=1 to k do

For i:=(24*j)-23 to 24*j do

begin

if i>=length (rabfile) then ww[j]: =ww[j]+'0'

else

WW[j]:=WW[j]+RabFile[i];

end;

For j:=1 to k do Begin Lon:=0;

For i:=1 to 24 do Nol[i]: =StrToInt (WW[j][i]);

For i:=24 DownTo 1 do Begin

n:=Nol[i];

If n=1 Then Inc (Lon, Trunc (exp ((24-i)*Ln (2))))

end;

// Form1. Memo1.Lines.Add (IntToStr (Lon));

Writeln (RabF, IntToStr (Lon));

end

end;

Procedure TForm1. LongIntToRabFile;

Var k, i, j: Integer;

Nol: Array [0.23] of Integer;

Digit: LongInt;

LengthRabFile, Kol: Integer;

DigitS, R: String;

Begin

j:=0; RabFile:='';

readln (RabF, LengthRabFile);

readln (RabF, Kol);

For i:=1 to 24 do Nol[i]: =0;

While j

BinA:='';

readln (RabF, DigitS);

Digit:=StrToInt (DigitS);

For i:=0 To 23 Do Begin k:=Digit Mod 2;

Nol[i]: =k;

Digit:=Digit Div 2

End;

For i:=23 DownTo 0 do BinA:=BinA+IntToStr (Nol[i]);

R:=R+BinA;

Inc (j);

end;

For i:=1 to LengthRabFile do

RabFile:=RabFile+R[i];

end;

{***********************************************************}

procedure TForm1. CompressionClick (Sender: TObject);

var x, y, i, j: integer;

k:Byte;

begin

AssignFile (RabF, Form1. Edit1.Text);

ReWrite (RabF);

Writeln (RabF, PImage. biWidth);

Writeln (RabF, PImage. biHeight);

//ToBinTo (PImage.biWidth, 12);

//ToBinTo (PImage.biHeight, 12);

TKwant;

// ShowMessage ('ΠΠ°Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ тСрпСния');

For x:=0 To Trunc ((PImage.biWidth+1)/8)-1 Do

For y:=0 To Trunc ((PImage.biHeight+1)/8)-1 Do

Begin

GetColor (x, y);

ToCos;

ToKwant;

Coding;

// RabFileToLongInt;

KwantTo;

CosTo;

PutColor (x, y);

RabFileToLongInt;

End;

CloseFile (RabF)

end;

procedure TForm1. DecompressionClick (Sender: TObject);

Var x, y, i, k: Word;

j:ShortInt;

W, H: Integer;

begin

RabFile:='';//OpenDialog1.Filter:='Π€Π°ΠΉΠ»Ρ‹ для дСкомпрСсии (*.Zo)|*.Zo';

If OpenDialog1. Execute Then

Begin

Form2.Visible:=True;

TKwant;

AssignFile (RabF, OpenDialog1. FileName);

Reset (RabF);

{ k:=0;

For i:=0 To 11 Do Begin Read (F, j); If j=1 Then Inc (k, Trunc (exp (j*ln (2)))) End;

Form2.Width:=k+6;

k:=0;

For i:=0 To 11 Do Begin Read (F, j); If j=1 Then Inc (K, Trunc (exp (j*ln (2)))) End;

Form2.Height:=k+23; }

Form2.Top:=120;

Form2.Left:=120;

Readln (RabF, W);

Readln (RabF, H);

Form2.Image1.Width:=W;

Form2.Image1.Height:=H;

Form2.Width:=W+10;

Form2.Height:=H+10;

// ShowMessage ('ΠΠ°Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ тСрпСния');

For x:=0 To Trunc ((Form2.Image1.Width)/8)-1 Do

For y:=0 To Trunc ((Form2.Image1.Height)/8)-1 Do

Begin

LongIntToRabFile;

Decoding;

KwantTo;

CosTo;

PutColor (x, y)

End;

CloseFile (RabF)

End

end;

{procedure TForm1. SpeedButton1Click (Sender: TObject);

var i, j, s: Integer;

Trpr, Trpr1, Trpr2,Trpr3,Trpr4: String;

begin

AssignFile (RabF,'c:Abracadabra.txt');

Rewrite (RabF);

Form1.Top:=0;

Form1.Left:=0;

// Form1. Memo1.Lines.Add ('***TOC******');

Trpr:='';

Trpr1:='';

s:=1;

For i:=0 To 7 do

For j:=0 To 7 do Begin

TOC[i, j]: =0;

Inc (s);

// If i+j=5 Then TOC[i, j]: =i+1;

If s<53 Then TOC[i, j]: =s;

Trpr:=Trpr+' '+IntToStr (TOC[i, j]);

end;

{ For i:=0 To 7 do

For j:=0 To 7 do Begin

TOC[i, j]: =s;

If s<45 Then s:=s+1;

Trpr:=Trpr+' '+IntToStr (TOC[i, j]);

end; }

{ Form1. Memo1.Lines.Add (Trpr);

Form1.Memo1.Lines.Add ('***Zgzg******');

Coding;

For i:=0 to 63 do Trpr1:=Trpr1+' '+IntToStr (Zgzg[i]);

Form1.Memo1.Lines.Add (Trpr1);

Form1.Memo1.Lines.Add ('***RabFile******'+'prf'+IntToStr (prf));

Form1.Memo1.Lines.Add (RabFile);

RabFileToLongInt;

{ Form1. Memo1.Lines.Add ('***DcD******');

Decoding;

For i:=0 to 63 do Trpr2:=Trpr2+' '+IntToStr (DcD[i]);

Form1.Memo1.Lines.Add (Trpr2);

Form1.Memo1.Lines.Add ('***NewTOC******');

For i:=0 To 7 do

For j:=0 To 7 do

Trpr3:=Trpr3+' '+IntToStr (TOC[i, j]);

Form1.Memo1.Lines.Add (Trpr3);

Form1.Memo1.Lines.Add ('***Π”Π»ΠΈΠ½Π° RabFile******');

Form1.Memo1.Lines.Add (IntToStr (Length (RabFile)));

{ Form1. Memo1.Lines.Add ('***RabFile Π² LongInt******');

RabFileToLongInt;

// Form1. Memo1.Lines.Add ('***NewRabFile******');

// LongIntToRabFile;

// Form1. Memo1.Lines.Add (NewRabFile); }

{ CloseFile (RabF);

// Zigzag;

// for s:=0 to 63 do Form1. Memo1.Lines.Add (IntToStr (Zgzg[s]));}

{end;

procedure TForm1. SpeedButton2Click (Sender: TObject);

var i, j, s: Integer;

Trpr, Trpr1, Trpr2,Trpr3,Trpr4: String;

begin

{ BinA:='';

a:= StrToInt (Form1.LabeledEdit2.Text);

ToBinTo (a, 8);

Form1.LabeledEdit1.Text:=BinA;}

{ AssignFile (RabF,'c:Abracadabra.txt');

Reset (RabF);

LongIntToRabFile;

Form1.Memo1.Lines.Add ('***NewRabFile******');

Form1.Memo1.Lines.Add (RabFile);

Form1.Memo1.Lines.Add ('***DcD******');

Decoding;

For i:=0 to 63 do Trpr2:=Trpr2+' '+IntToStr (DcD[i]);

Form1.Memo1.Lines.Add (Trpr2);

Form1.Memo1.Lines.Add ('***NewTOC******');

For i:=0 To 7 do

For j:=0 To 7 do

Trpr3:=Trpr3+' '+IntToStr (TOC[i, j]);

Form1.Memo1.Lines.Add (Trpr3);

end;}

end.

object Form2: TForm2

Left = 416

Top = 233

AutoScroll = False

Caption = #1043#1083#1103#1085#1100' '#1085#1072' '#1084#1077#1085#1103

ClientHeight = 304

ClientWidth = 307

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS Sans Serif'

Font.Style = []

OldCreateOrder = False

PixelsPerInch = 96

TextHeight = 13

object Image1: TImage

Left = 64

Top = 40

Width = 185

Height = 161

AutoSize = True

end

end

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ