ΠΠΎΠΌΠΏΡΠ΅ΡΡΠΈΡ ΠΏΠΎΠ»ΡΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠ»Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΆΠ°ΡΠΈΡ Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΡΡ ΠΏΠΎΠ»ΡΡΠΎΠ½ΠΎΠ²ΡΡ ΠΈ ΡΠ²Π΅ΡΠ½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΠΠΠΠ’Π’ ΠΈ ΠΠΠ‘ Π² 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