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

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

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

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ различимости Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² изобраТСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ эквализации ΠΈΠ»ΠΈ выравнивания гистограммы, Ρ‚. Π΅. Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСобразования ΡˆΠΊΠ°Π»Ρ‹ яркости, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ гистограмма Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ изобраТСния Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ. ΠœΠ΅Ρ‚ΠΎΠ΄ основан Π½Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ наибольшая ΠΊΠΎΠ½Ρ‚Ρ€Π°ΡΡ‚Π½ΠΎΡΡ‚ΡŒ достигаСтся Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, гистограмма ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прСдставляСт Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ распрСдСлСниС… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠœΠ΅Ρ‚ΠΎΠ΄: Эквализация ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ (бимодальной) гистограммы яркости.

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;

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

растровый ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΉ Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ эквализации Π³ΠΈΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ привСдСния Π΅Ρ‘ ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

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

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