ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°ΡΡΡΠΎΠ²ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈ ΠΏΡΡΠ΅ΠΌ ΡΠΊΠ²Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Ρ. Π΅. ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°ΡΡΡΡ ΠΏΠΎ ΡΠΎΡΠΌΠ΅ ΠΊ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠΉ. ΠΠ΅ΡΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°ΡΡΡΠΎΠ²ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΠ΅ΡΠΎΠ΄: ΠΠΊΠ²Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ (Π±ΠΈΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΉ) Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΊΠΎΡΡΠΈ.
1. ΠΠ·ΡΡΠΈΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
2. Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π² ΡΠΎΡΠΌΠ΅ Windows-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ:
— Π²Π²ΠΎΠ΄ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅ ΠΌΠΎΠ½ΠΎΡ ΡΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ° bmp;
— ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ;
— ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π΄ΠΈΡΠΏΠ»Π΅Ρ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠ°ΠΉΠ»Π΅;
— ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈ ΡΡΠΊΠΎΡΡΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΠΊΠΎΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π΅ΠΌΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΊΠΎΡΡΠΈ ΠΈ ΡΠ°Π·ΡΠ΅Π·Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠΊΠΎΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΈ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ.
— ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°.
— ΠΡΠΎΠ²Π΅ΡΡΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ «ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΠΉ» ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
Π―ΡΠΊΠΎΡΡΠ½ΡΠ΅ ΠΏΠΎΠΌΠ΅Ρ ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ½ΠΈΠΆΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΈΡΡΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠΊΠΎΠ»ΡΠΊΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠΊΠΎΡΡΠ½ΡΡ ΠΏΠΎΠΌΠ΅Ρ . ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Ρ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΠ΅ ΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠ±ΡΡΠ»Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ:
— Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Ρ.ΠΊ. ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π³Π»Π°Π· ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° Π½Π΅ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΡΡΠΊΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π½Π° ΠΎΠ΄Π½Ρ — Π΄Π²Π΅ Π³ΡΠ°Π΄Π°ΡΠΈΠΈ;
— Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π·ΠΊΠΎΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°Π·ΠΌΡΠ²Π°Π½ΠΈΡ Π³ΡΠ°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Π΄Π°ΡΡ Π΅Π³ΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΡΠ΅Π½ΠΊΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΊΠΎΡΡΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΠ±ΠΎΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π (z), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π (zi) — ΡΠΈΡΠ»ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΡΡΠΊΠΎΡΡΠΈ zi Π½Π° Π²ΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. ΠΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ p (z), Π³Π΄Π΅
(N — ΡΠΈΡΠ»ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ),
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ². ΠΡΠΈΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ p (zi) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½ΠΊΠΎΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΊΠΎΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠ°Π²Π½Π° zi.
3.2 Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠΊΠΎΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ z'(x, y) Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠΊΠΎΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ z (x, y), ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΡΠΊΠΎΡΡΠ΅ΠΉ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ z'(x, y) = f (z). Π’Π°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, Ρ.ΠΊ. ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠΊΠΎΡΡΠΈ, ΡΠ°Π²Π½ΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ, ΡΠ°Π²Π½ΡΠΌ ΡΡΠΊΠΎΡΡΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π² Π½Π΅Π±Π»Π°Π³ΠΎΠΏΡΠΈΡΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ, ΡΠ°ΡΡΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²Π΅ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π³ΡΠ°Π΄Π°ΡΠΈΠΉ ΡΡΠΊΠΎΡΡΠΈ, ΠΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΡΠΊΠΎΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΡΠ·ΠΊΠΎΠΌ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π½ΠΈΠ·ΠΊΠ°Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±Π»ΠΈΠ·ΠΊΡΡ ΡΡΠΊΠΎΡΡΡ, ΡΡΠΎ ΠΈ ΠΎΠ±ΡΡΠ»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈΡ ΠΏΠ»ΠΎΡ ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΡ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΊΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠ°Π·Π½ΠΎΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠΊΠΎΡΡΠΈ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΡΠ°ΡΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ:
(3.3)
Π³Π΄Π΅ z, z' - ΡΡΠΊΠΎΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ,
zmin — ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΠΊΠΎΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ,
Π‘om — ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ· (3.3) Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΈ Com Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΉ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΡΠ·ΠΊΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΡΡΠΊΠΎΡΡΠΈ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ Π΄ΠΎ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΡΡΠΎΡΠ½ΠΎ-Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΠΊΠ°Π»Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ, ΡΡΠΊΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²ΡΡΠ΅ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΡΠΊΠΎΡΡΡ, Π° Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΡΠ°ΡΡΡΠ½ΡΡ.
ΠΠ΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ ΠΈΠ»ΠΈ Π΅Π΅ Π³Π°ΠΌΠΌΠ°-ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡ ΠΏΡΠΈ Com Π±Π»ΠΈΠ·ΠΊΠΎΠΌ ΠΊ 1 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΡΡΠΊΠΎΡΡΠ΅ΠΉ Π·Π° ΡΡΠ΅Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π² Π΄ΡΡΠ³ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ
z' = zm znom, (3.4)
Π³Π΄Π΅ — ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠΊΠΎΡΡΡ. ΠΡΠ»ΠΈ ΡΡΠΊΠΎΡΡΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π²Π΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, ΡΠΎ zΠΎΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ 0…1. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ n Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° n = 2…10, Π΅ΡΠ»ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ Π²ΡΡΠΎΠΊΡΡ ΡΡΠΊΠΎΡΡΡ, ΠΈ n = 0,1…0,9, Π΅ΡΠ»ΠΈ ΠΏΠ»ΠΎΡ ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΠ·ΠΊΡΡ ΡΡΠΊΠΎΡΡΡ.
ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΡ ΡΠ΅ΠΌΠ½ΡΡ ΠΈ ΡΠ²Π΅ΡΠ»ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π° ΡΡΠ΅Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅Π΄Π½Π΅ΠΉ ΡΡΠΊΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ Π½ΡΠ»Π΅ΠΌ:
z' = 0,5zm (1 + (2zom — 1) n) Π΄Π»Ρ n > 1 Π½Π΅ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ (3.5), ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ°Ρ Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ n>1 ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°Π±ΠΎΠ»ΠΎΠΉ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π½Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ z' = zm Π΄Π»Ρ z = 0,5zm. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΡΡΠΊΠΎΡΡΡ, ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΠΊΠ°Π»Ρ, ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΡΠΊΠΎΡΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π±Π»ΠΈΠ·ΠΊΡΡ ΡΡΠΊΠΎΡΡΡ, ΠΊΠ°ΠΊ Π² ΡΠ΅ΠΌΠ½ΠΎΠΉ, ΡΠ°ΠΊ ΠΈ Π² ΡΠ²Π΅ΡΠ»ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΊΠ°Π»Ρ, ΡΠ°Π·Π½ΠΎΡΡΡΡΡ ΠΏΠΎ ΡΠΊΠ°Π»Π΅ ΡΡΠΊΠΎΡΡΠΈ Π½Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ΅ Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅, Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΡΡΠ΅Π΄Π½Π΅ΠΉ ΡΡΠΊΠΎΡΡΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°ΡΡ ΡΡΠΊΠΎΡΡΡ Π±Π»ΠΈΠ·ΠΊΡΡ ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ»ΠΈΠ²Π°ΡΡΡΡ.
Π£Π²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² Π±Π»ΠΈΠ·ΠΊΠΈΡ ΠΏΠΎ ΡΡΠΊΠΎΡΡΠΈ ΠΊ ΡΡΠ΅Π΄Π½Π΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΠΎΠ³Π°ΡΠΈΡΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ
.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄Π½ΡΡ ΡΡΠΊΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠ΅ΠΌΠ½ΡΡ ΠΈ ΡΠ²Π΅ΡΠ»ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ Π½ΡΠ»Π΅ΠΌ Π΄Π»Ρ n < 1 Π½Π΅ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ.
Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈ ΠΏΡΡΠ΅ΠΌ ΡΠΊΠ²Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Ρ. Π΅. ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°ΡΡΡΡ ΠΏΠΎ ΡΠΎΡΠΌΠ΅ ΠΊ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠΉ. ΠΠ΅ΡΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΏΠΎ ΡΡΠΊΠΎΡΡΡΠΌ Π½Π° Π²ΡΠ΅ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (0 … 255). ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄
(3.6)
Π³Π΄Π΅ z’i — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ iΠΎΠΉ ΡΡΠΊΠΎΡΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΊΠ°Π»Ρ, p (zk) — Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΊΠΎΡΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (i = 0 … 255).
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΊΠ²Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ° ΡΠ°ΡΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΊΠΎΡΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΡΠΈ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ p (z), ΡΠ°ΡΡΡΠ³ΠΈΠ²Π°Π΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΡΠΈ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΠ·ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ p (z).
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΡΠΌΡΠ»ΡΡΠΈΠ²Π½ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π»Π° ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ Π²ΠΈΠ΄. ΠΡΠΌΡΠ»ΡΡΠΈΠ²Π½Π°Ρ (Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠ½Π°Ρ) Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° pΡ (zi) ΡΡΡΠΎΠΈΡΡΡ ΠΈΠ· Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΎ Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ Π΄ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ zm ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ (3.6), ΠΏΡΠΈΡΠ΅ΠΌ pc (z) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°ΡΡΠ΅ΠΉ (Π½Π΅ΡΠ±ΡΠ²Π°ΡΡΠ΅ΠΉ) ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ.
ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡ ΠΊΡΠΌΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ p’c (z) ΠΈ pc (z) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠΊΠ°Π»Ρ ΡΡΠΊΠΎΡΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠΊΠΎΡΡΠΈ zi Π½Π°ΠΉΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΉ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ pc (z), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π½Π°ΠΉΡΠΈ ΡΠ°Π²Π½ΠΎΠ΅ Π΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ p’c (z') Π½Π° ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ ΠΊΡΠΌΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΉ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΡΠΈ z' ΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠΎΠΌΡΠΌ, Ρ. Π΅. p’c (z') = pc (z).
2. ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ
Π ΠΈΡΡΠ½ΠΎΠΊ 1 — ΠΠΊΠ²Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΡΠΎΠ³ΠΎ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ°.
Π ΠΈΡΡΠ½ΠΎΠΊ 2 -Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊ Π±ΠΈΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅.
Π ΠΈΡΡΠ½ΠΎΠΊ 3 — ΠΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ°.
Π ΠΈΡΡΠ½ΠΎΠΊ 4 — Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊ Π±ΠΈΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅.
Π ΠΈΡΡΠ½ΠΎΠΊ 5 — ΠΠΊΠ²Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π ΠΈΡΡΠ½ΠΎΠΊ 6 — Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊ Π±ΠΈΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅.
3. ΠΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
unit Unit1;
interface
uses
Graphics, Windows, Messages, SysUtils, Variants, Classes, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, ImgList, ToolWin, Menus, Jpeg, WinTypes, Math, Unit2;
type
TForm1 = class (TForm)
StatusBar1: TStatusBar;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Image1: TImage;
Image2: TImage;
ImageList1: TImageList;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
ToolButton5: TToolButton;
FileOpenDialog1: TFileOpenDialog;
ImageList2: TImageList;
procedure FormResize (Sender: TObject);
procedure ToolButton1Click (Sender: TObject);
procedure N1Click (Sender: TObject);
procedure N2Click (Sender: TObject);
procedure ToolButton3Click (Sender: TObject);
procedure Image1MouseMove (Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image2MouseMove (Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
TRGBTripleArray = ARRAY[Word] of TRGBTriple;
pRGBTripleArray = ^TRGBTripleArray;
THisto = array[0.255] of integer;
TNormalHisto = array[0.255] of real;
function equalize (inBMP: Graphics. TBitmap; doUseAsYUV: boolean):Graphics.TBitmap;
function calcHisto (inBMP: Graphics. TBitmap):THisto;
function calcBimodalHisto ():TNormalHisto;
function calcCumulativeHisto (histo: TNormalHisto):TNormalHisto;
function convertToBimodal (inBMP: Graphics. TBitmap; doUseAsYUV: boolean):Graphics.TBitmap;
function convertRGBToYUV (inBMP: Graphics. TBitmap):Graphics.TBitmap;
function convertYUVToRGB (inBMP: Graphics. TBitmap):Graphics.TBitmap;
function makeReplacementTable (size: Integer; histo: THisto):THisto;
function makeReplacementTableForTargetHisto (histo: TNormalHisto; target: TNormalHisto):THisto;
function normalizeHisto (size: Integer; histo: THisto):TNormalHisto;
var
Form1: TForm1;
srcBmp: Graphics. TBitmap;
dstBmp: Graphics. TBitmap;
sourceHisto: THisto;
gTargetHisto: THisto;
doUseRGB: boolean;
implementation
{$R *.dfm}
procedure TForm1. FormResize (Sender: TObject);
begin
GroupBox1.Width := self. ClientWidth div 2;
GroupBox2.Width := self. ClientWidth div 2;
end;
procedure TForm1. Image1MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
imageX, imageY, difX, difY: Integer;
lum: integer;
r, g, b: byte;
scan: pRGBTripleArray;
statusText: String;
begin
difX:= (Image1.Width — Image1.Picture.Width) div 2;
difY:= (Image1.Height — Image1.Picture.Height) div 2;
imageX:= X — difX;
imageY:= Y — difY;
if ((imageX>=0) and (imageY>=0)
and (imageX
begin
scan:=Image1.Picture.Bitmap.ScanLine[imageY];
r := scan[imageX]. rgbtRed;
g := scan[imageX]. rgbtGreen;
b := scan[imageX]. rgbtBlue;
lum := trunc ((0.257*r) + (0.504*g) + (0.098*b) + 16);
if (lum<0) then lum:=0;
if (lum>255) then lum:=255;
statusText:='X='+IntToStr (imageX) + ' Y='+ IntToStr (imageY);
statusText:=statusText+'; ';
statusText:=statusText+'R='+IntToStr® + ' G='+ IntToStr (G) + ' B='+ IntToStr (B);
statusText:=statusText+'; ';
statusText:=statusText+'Luminocity='+IntToStr (lum);
statusText:=statusText+';';
StatusBar1.SimpleText:= statusText;
end
else StatusBar1. SimpleText:='';
end;
procedure TForm1. Image2MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
imageX, imageY, difX, difY: Integer;
lum: integer;
r, g, b: byte;
scan: pRGBTripleArray;
statusText: String;
begin
difX:= (Image2.Width — Image2.Picture.Width) div 2;
difY:= (Image2.Height — Image2.Picture.Height) div 2;
imageX:= X — difX;
imageY:= Y — difY;
if ((imageX>=0) and (imageY>=0)
and (imageX
begin
scan:=Image2.Picture.Bitmap.ScanLine[imageY];
r := scan[imageX]. rgbtRed;
g := scan[imageX]. rgbtGreen;
b := scan[imageX]. rgbtBlue;
lum := trunc ((0.257*r) + (0.504*g) + (0.098*b) + 16);
if (lum<0) then lum:=0;
if (lum>255) then lum:=255;
statusText:='X='+IntToStr (imageX) + ' Y='+ IntToStr (imageY);
statusText:=statusText+'; ';
statusText:=statusText+'R='+IntToStr® + ' G='+ IntToStr (G) + ' B='+ IntToStr (B);
statusText:=statusText+'; ';
statusText:=statusText+'Luminocity='+IntToStr (lum);
statusText:=statusText+';';
StatusBar1.SimpleText:= statusText;
end
else StatusBar1. SimpleText:='';
end;
procedure TForm1. N1Click (Sender: TObject);
var
i: Integer;
begin
if (doUseRGB)
then dstBmp:=convertYUVToRGB (equalize (convertRGBToYUV (srcBmp), true))
else dstBmp:=equalize (srcBmp, false);
Image2.Picture.Assign (dstBmp);
gTargetHisto:= calcHisto (convertRGBToYUV (dstBmp));;
Form2.Chart1.Series[0]. Clear;
Form2.Chart2.Series[0]. Clear;
for i := 0 to 255 do
Form2.Chart1.Series[0]. AddXY (i, sourceHisto[i]/(srcBmp.Height*srcBmp.Width),'');
for i := 0 to 255 do
Form2.Chart2.Series[0]. AddXY (i, gTargetHisto[i]/(srcBmp.Height*srcBmp.Width),'');
end;
procedure TForm1. N2Click (Sender: TObject);
var
i: Integer;
begin
if (doUseRGB)
then dstBmp:=convertYUVToRGB (convertToBimodal (convertRGBToYUV (srcBmp), true))
else dstBmp:=convertToBimodal (srcBmp, false);
Image2.Picture.Assign (dstBmp);
gTargetHisto:= calcHisto (convertRGBToYUV (dstBmp));;
Form2.Chart1.Series[0]. Clear;
Form2.Chart2.Series[0]. Clear;
for i := 0 to 255 do
Form2.Chart1.Series[0]. AddXY (i, sourceHisto[i]/(srcBmp.Height*srcBmp.Width),'');
for i := 0 to 255 do
Form2.Chart2.Series[0]. AddXY (i, gTargetHisto[i]/(srcBmp.Height*srcBmp.Width),'');
end;
procedure TForm1. ToolButton1Click (Sender: TObject);
var
image: TJPEGImage;
i, j: Integer;
pixel: TRGBTriple;
gray: byte;
scan: pRGBTripleArray;
begin
if (FileOpenDialog1.Execute) then
begin
If (Application.MessageBox ('ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΠ΅ΡΠ½ΠΎ-Π±Π΅Π»ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅?','ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ²Π΅ΡΠ°', MB_YESNO)=IDNO)
then doUseRGB:=true
else doUseRGB:=false;
image := TJPEGImage. Create;
srcBmp := Graphics.TBitmap.Create;
dstBmp := Graphics.TBitmap.Create;
dstBmp.Assign (srcBmp);
image.LoadFromFile (FileOpenDialog1.FileName);
srcBmp.Assign (image);
if (not doUseRGB) then
begin
for i := 0 to srcBmp. Height-1 do
begin
scan:= srcBmp. ScanLine[i];
for j := 0 to srcBmp. Width-1 do
begin
pixel:= scan[j];
gray:= trunc (0.2989 * pixel. rgbtRed + 0.5870 * pixel. rgbtGreen + 0.1140 * pixel. rgbtBlue);
pixel.rgbtRed:= gray;
pixel.rgbtBlue:= gray;
pixel.rgbtGreen:= gray;
scan[j]: =pixel;
end;
end;
end;
if (not doUseRGB)
then sourceHisto := calcHisto (srcBmp)
else sourceHisto := calcHisto (convertRGBToYUV (srcBmp));
Image1.Picture.Assign (srcBmp);
Image2.Picture.Assign (dstBmp);
ToolButton3.Enabled:=true;
ToolButton5.Enabled:=true;
ToolButton5.EnableDropdown:=true;
end;
end;
procedure TForm1. ToolButton3Click (Sender: TObject);
var
i: integer;
begin
Form2.Show ();
gTargetHisto:= calcHisto (convertRGBToYUV (dstBmp));;
Form2.Chart1.Series[0]. Clear;
Form2.Chart2.Series[0]. Clear;
for i := 0 to 255 do
Form2.Chart1.Series[0]. AddXY (i, sourceHisto[i]/(srcBmp.Height*srcBmp.Width),'');
for i := 0 to 255 do
Form2.Chart2.Series[0]. AddXY (i, gTargetHisto[i]/(srcBmp.Height*srcBmp.Width),'');
end;
function equalize (inBMP: Graphics. TBitmap;doUseAsYUV: boolean):Graphics.TBitmap;
var
i, j: integer;
pixel: TRGBTriple;
gray: byte;
scan: pRGBTripleArray;
nTable: THisto;
outBMP:Graphics.TBitmap;
begin
nTable:= makeReplacementTable (inBMP.Height*inBMP.Width, sourceHisto);
outBMP:=Graphics.TBitmap.Create ();
outBMP.Assign (inBMP);
for i := 0 to outBMP. Height-1 do
begin
scan:= outBMP. ScanLine[i];
for j := 0 to outBMP. Width-1 do
begin
pixel:= scan[j];
gray:= nTable[pixel.rgbtRed];
pixel.rgbtRed:= gray;
if (not doUseAsYUV) then
begin
pixel.rgbtBlue:= gray;
pixel.rgbtGreen:= gray;
end;
scan[j]: =pixel;
end;
end;
Result:= outBMP;
end;
function calcBimodalHisto ():TNormalHisto;
var
i: integer;
value: real;
step: real;
sum: real;
begin
sum:=0;
value:=0;
step:=1/(128*64);
for i := 0 to 63 do
begin
Result[i]: =value;
sum:=sum+value;
value:=value+step;
end;
for i := 64 to 127 do
begin
Result[i]: =value;
sum:=sum+value;
value:=value-step;
end;
for i := 128 to 191 do
begin
Result[i]: =value;
sum:=sum+value;
value:=value+step;
end;
for i := 192 to 255 do
begin
Result[i]: =value;
sum:=sum+value;
value:=value-step;
end;
end;
function calcCumulativeHisto (histo: TNormalHisto):TNormalHisto;
var
sum: Real;
i, j: Integer;
begin
for i := 0 to 255 do
begin
sum:=0;
for j := 0 to i do
sum:=sum+histo[j];
Result[i]: =sum;
end;
end;
function calcHisto (inBMP: Graphics. TBitmap):THisto;
var
i, j: integer;
pixel: TRGBTriple;
scan: pRGBTripleArray;
begin
for i:= 0 to 255 do Result[i]: =0;
for i := 0 to inBMP. Height-1 do
begin
scan:= inBMP. ScanLine[i];
for j := 0 to inBMP. Width-1 do
begin
pixel:= scan[j];
Result[pixel.rgbtRed]: =Result[pixel.rgbtRed]+1;
end;
end;
end;
function convertRGBToYUV (inBMP: Graphics. TBitmap):Graphics.TBitmap;
var
i, j: integer;
r, g, b: Integer;
y, u, v:integer;
pixel: TRGBTriple;
scan: pRGBTripleArray;
outBMP: Graphics. TBitmap;
begin
outBMP:=Graphics.TBitmap.Create ();
outBMP.Assign (inBMP);
for i := 0 to outBMP. Height-1 do
begin
scan:= outBMP. ScanLine[i];
for j := 0 to outBMP. Width-1 do
begin
pixel:= scan[j];
r:= pixel. rgbtRed;
g:= pixel. rgbtGreen;
b:= pixel. rgbtBlue;
Y:=trunc ((0.257 * R) + (0.504 * G) + (0.098 * B) + 16);
V:=trunc ((0.439 * R) — (0.368 * G) — (0.071 * B) + 128);
U:=trunc (-(0.148 * R) — (0.291 * G) + (0.439 * B) + 128);
if (y>255) then y:=255;
if (y<0) then y:=0;
if (u>255) then u:=255;
if (u<0) then u:=0;
if (v>255) then v:=255;
if (v<0) then v:=0;
pixel.rgbtRed := y;
pixel.rgbtGreen := u;
pixel.rgbtBlue := v;
scan[j]: =pixel;
end;
end;
Result:=outBMP;
end;
function convertYUVToRGB (inBMP: Graphics. TBitmap):Graphics.TBitmap;
var
i, j: integer;
y, u, v:integer;
r, g, b:integer;
pixel: TRGBTriple;
scan: pRGBTripleArray;
outBMP: Graphics. TBitmap;
begin
outBMP:=Graphics.TBitmap.Create ();
outBMP.Assign (inBMP);
for i := 0 to outBMP. Height-1 do
begin
scan:= outBMP. ScanLine[i];
for j := 0 to outBMP. Width-1 do
begin
pixel:= scan[j];
y:= pixel. rgbtRed;
u := pixel. rgbtGreen;
v := pixel. rgbtBlue;
B:= trunc (1.164*(Y — 16) + 2.018*(U — 128));
G:= trunc (1.164*(Y — 16) — 0.813*(V — 128) — 0.391*(U — 128));
R:= trunc (1.164*(Y — 16) + 1.596*(V — 128));
if (r>255) then r:=255;
if (r<0) then r:=0;
if (g>255) then g:=255;
if (g<0) then g:=0;
if (b>255) then b:=255;
if (b<0) then b:=0;
pixel.rgbtRed := r;
pixel.rgbtGreen := g;
pixel.rgbtBlue :=b;
scan[j]: =pixel;
end;
end;
Result:=outBMP;
end;
function convertToBimodal (inBMP: Graphics. TBitmap; doUseAsYUV: boolean):Graphics.TBitmap;
var
normalSourceHisto, normalTargetHisto: TNormalHisto;
cumulativeSourceHisto, cumulativeTargetHisto: TNormalHisto;
repTable: THisto;
newBMP: Graphics. TBitmap;
i, j: integer;
pixel: TRGBTriple;
scan: pRGBTripleArray;
gray: byte;
begin
normalSourceHisto:=normalizeHisto (inBMP.Height*inBMP.Width, sourceHisto);
normalTargetHisto:=calcBimodalHisto ();
cumulativeSourceHisto:=calcCumulativeHisto (normalSourceHisto);
cumulativeTargetHisto:= calcCumulativeHisto (normalTargetHisto);
repTable:= makeReplacementTableForTargetHisto (cumulativeSourceHisto, cumulativeTargetHisto);
newBMP:=Graphics.TBitmap.Create ();
newBMP.Assign (inBMP);
for i := 0 to newBMP. Height-1 do
begin
scan:= newBMP. ScanLine[i];
for j := 0 to newBMP. Width-1 do
begin
pixel:= scan[j];
gray:= repTable[pixel.rgbtRed];
pixel.rgbtRed:= gray;
if (not doUseAsYUV) then
begin
pixel.rgbtBlue:= gray;
pixel.rgbtGreen:= gray;
end;
scan[j]: =pixel;
end;
end;
ΠΡΠ²ΠΎΠ΄Ρ
ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠΉ Π Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π±ΡΠ»ΠΈ ΠΈΠ·ΡΡΠ΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΊΠ²Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π³ΠΈΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΅Ρ ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠΎΡΠΌΠ΅.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°. Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°: ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Π±ΠΎΡ ΡΠΎΡΠΌΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΡΡΠ΅ΠΊΡ.