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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ рСализация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ инструмСнта для ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

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

Одним ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдованиях являСтся ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π½Π° Π±ΡƒΠΌΠ°ΠΆΠ½Ρ‹Ρ… носитСлях. ΠžΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (особСнно ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ…) содСрТится Π² Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ исслСдований Ρƒ ΡƒΡ‡Π΅Π½Ρ‹Ρ… часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ воспроизвСдСния этих Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΡΠ²ΠΎΠΈΡ… Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для сравнСния со ΡΠ²ΠΎΠΈΠΌΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ рСализация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ инструмСнта для ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

БАНКВ-ΠŸΠ•Π’Π•Π Π‘Π£Π Π“Π‘ΠšΠ˜Π™ Π“ΠžΠ‘Π£Π”ΠΠ Π‘Π’Π’Π•ΠΠΠ«Π™ Π£ΠΠ˜Π’Π•Π Π‘Π˜Π’Π•Π’ ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎ-мСханичСский Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ ΠšΠ°Ρ„Π΅Π΄Ρ€Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Дипломная Ρ€Π°Π±ΠΎΡ‚Π° Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ инструмСнта для ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π—Π°Π²Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ°Ρ„Π΅Π΄Ρ€ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π΄. Ρ„.-ΠΌ. Π½., профСссор Косовский Н.К.

Научный Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ:

Π΄.Ρ‚.Π½., профСссор Π‘Π°Ρ„ΠΎΠ½ΠΎΠ² Π’.О.

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

Π—Π°Π΄Π°Ρ‡ΠΈ распознавания ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ находят своС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΌΡ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… практичСских прилоТСниях. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… исслСдованиях, ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ, ΠΌΠ΅Π΄ΠΈΡ†ΠΈΠ½Π΅, Π² ΠΊΠΎΡΠΌΠΎΡΠ΅ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ примСнСния этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ цифровая ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… с ΠΊΠΎΡΠΌΠΈΡ‡Π΅ΡΠΊΠΈΡ… станций, видСотСлСфонная связь ΠΏΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌ сСтям ΠΈ Ρ€Π°Π΄ΠΈΠΎΠΊΠ°Π½Π°Π»Π°ΠΌ, ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ чСткости изобраТСния, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ элСктронного микроскопа, коррСкция искаТСний ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠΎΡΠΌΠΎΡΠ° ΠΈΠ»ΠΈ самолСта, автоматичСский Π°Π½Π°Π»ΠΈΠ· Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° мСстности, исслСдованиС ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π½Ρ‹Ρ… рСсурсов ΠΏΠΎ Ρ„отоснимкам ΠΈ Ρ‚. Π΄. [2, 4].

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

Π’ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ сСйчас ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ довольно ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², ΠΊΠ°ΠΊ коммСрчСских, Ρ‚Π°ΠΊ ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ прилоТСния, ΠΊΠ°ΠΊ ChartReader, Graph2Digit, ЀСмтоскан, Grafula, GSYS, CurveSnap, digitize, Engauge Digitizer, g3data, PCX2PRN, Plot Digitizer, SCaViS, WebPlotDigitizer, DataThief III, Dagra, Digitize Plot To Data, DigitizeIt, General graphics package ORIGIN, GetData Graph Digitizer, Graphics software FindGraph ΠΈ Ρ‚. Π΄. ВсС эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ самый Ρ€Π°Π·Π½Ρ‹ΠΉ интСрфСйс, ΠΈΠΌΠ΅ΡŽΡ‚ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ ΠΌΠΈΠ½ΡƒΡΡ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ практичСски сводятся ΠΊ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ простой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° графичСского изобраТСния, установка осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈ ΠΈΡ… ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ², ручная (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ) фиксация дискрСтного Π½Π°Π±ΠΎΡ€Π° Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ, ΠΈ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ΅ Π² Ρ„Π°ΠΉΠ» Π½Π° Π΄ΠΈΡΠΊ.

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ Π’ Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ставятся Π·Π°Π΄Π°Ρ‡ΠΈ:

1). Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ) ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»Π° Π±Ρ‹ функция автоматичСского опрСдСлСния Π½Π°Π±ΠΎΡ€Π° Ρ‚ΠΎΡ‡Π΅ΠΊ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ пСрСсСчСния этого Π³Ρ€Π°Ρ„ΠΈΠΊΠ° с ΠΎΡΡΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈ Ρ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ.

2). Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ для использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Java Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

— Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ изобраТСния с Π΄ΠΈΡΠΊΠ°;

— ΠΏΡ€ΠΈΠ²ΡΠ·ΠΊΠ° осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ² ΠΏΠΎ ΠΎΡΡΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°;

— ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

— Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π° Π΄ΠΈΡΠΊ Π² Ρ‚Скстовой Ρ„Π°ΠΉΠ» Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚ΠΎΡ‡Π΅ΠΊ.

ВСорСтичСски эта Π·Π°Π΄Π°Ρ‡Π° сводится ΠΊ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡŽ Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΊΡ€ΠΎΠΌΠΎΠΊ (ΠΈ Π»ΠΈΠ½ΠΈΠΉ) Π½Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²Π° ΠΊΡ€ΠΎΠΌΠΎΠΊ (Π»ΠΈΠ½ΠΈΠΉ) ΠΈ Π²Ρ‹ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ (ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°).

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

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

2.1 Π“Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

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

ΠšΡ€ΠΎΠΌΠΊΠ° Π² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ области измСнСния яркости ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΏΡƒΡ‚Π΅ΠΌ формирования ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° вдоль Π»ΠΈΠ½ΠΈΠΈ, Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊ ΠΊΡ€ΠΎΠΌΠΊΠ΅, которая Π½Π°ΠΊΠ»ΠΎΠ½Π΅Π½Π° ΠΊ ΠΎΡΠΈ X ΠΏΠΎΠ΄ ΡƒΠ³Π»ΠΎΠΌ :

Если Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° этого Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° достаточно Π²Π΅Π»ΠΈΠΊΠ° (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠΌ), Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠΊΠ° считаСтся ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ.

Π’ Π΄ΠΈΡΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ вычисляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

.

Π³Π΄Π΅ — Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎ ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌ ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†Π°ΠΌ (пиксСлСй). Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ эффСктивности ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ часто Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΎΠΉ Π²ΠΈΠ΄Π°:

Π£Π³ΠΎΠ» Π½Π°ΠΊΠ»ΠΎΠ½Π° ΠΊ ΠΎΡΠΈ X Ρ€Π°ΡΡΡ‡ΠΈΡ‚ываСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

НаиболСС простой способ расчСта Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π² Π΄ΠΈΡΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ области это использованиС односторонних разностСй:

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ этот способ расчСта ΠΎΡ‡Π΅Π½ΡŒ чувствитСлСн ΠΊ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΌ флуктуациям яркости, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠΊΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ строго ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹. Π“Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… разностСй (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ РобСртса):

ΠΈΠ»ΠΈ Π£Π³ΠΎΠ» Π½Π°ΠΊΠ»ΠΎΠ½Π°:

Π₯отя ΠΊΡ€ΠΎΠΌΠΊΠ° локализуСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ пиксСл этого Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΡ‡Π΅Π½ΡŒ чувствитСлСн ΠΊ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΠΌ флуктуациям яркости. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π½Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ осущСствляСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с ΠΎΡΡ€Π΅Π΄Π½Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ.

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ простыС Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ нСдостаток: ΠΎΠ½ΠΈ Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π½Ρ‹ достаточно Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΠΎΠΌΠΊΠΈ Π½Π° ΡΠΈΠ»ΡŒΠ½ΠΎ Π·Π°ΡˆΡƒΠΌΠ»Π΅Π½Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… шаблонов. НапримСр, R-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° Prewitt 7×7 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ называСтся Boxcar. Π”Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ R-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (trancated pyramid operator) Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π½Ρ‹ΠΉ вСс для Ρ‚ΠΎΡ‡Π΅ΠΊ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π° шаблона:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вСсовыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Гауссового Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для подавлСния ΡˆΡƒΠΌΠ°. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ Гауссову Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ со ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ΠΌ s.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ это ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Argyle ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записан, ΠΊΠ°ΠΊ дискрСтная вСрсия Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° (R-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€):

.

Π³Π΄Π΅ s ΠΈ t — ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ распространСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. C-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ записываСтся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. Π”Ρ€ΡƒΠ³ΠΎΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ (Macleod ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€):

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Argyle ΠΈ Macleod Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Boxcar ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π½Ρ‹ΠΉ Π²ΠΊΠ»Π°Π΄ пиксСлов, ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π° шаблона. Π‘ΡƒΠΌΠΌΠ°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (G) ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡˆΡƒΠΌΠ° (S)) ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅:

.

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

1. Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сигнал-ΡˆΡƒΠΌ (SNR — signal-to-noise-ratio) Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° максимизируСтся для получСния Π½ΠΈΠ·ΠΊΠΎΠΉ вСроятности Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΡ€ΠΎΠΌΠΊΠΈ ΠΈ Π½ΠΈΠ·ΠΊΠΎΠΉ вСроятности появлСния Ρ„Π°Π»ΡŒΡˆΠΈΠ²Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ.

2. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ локализация. Π’ΠΎΡ‡ΠΊΠΈ ΠΊΡ€ΠΎΠΌΠΊΠΈ, Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ ΠΊΡ€ΠΎΠΌΠΊΠΈ.

3. ЕдинствСнный ΠΎΡ‚ΠΊΠ»ΠΈΠΊ. Π”ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ СдинствСнный ΠΎΡ‚ΠΊΠ»ΠΈΠΊ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΡ‚ΠΈΠ½Π½ΡƒΡŽ ΠΊΡ€ΠΎΠΌΠΊΡƒ.

Канни скомбинировал эти Ρ‚Ρ€ΠΈ критСрия ΠΏΡƒΡ‚Π΅ΠΌ максимизации произвСдСния SNR ΠΈ LOC ΠΏΡ€ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ условии 3. Из-Π·Π° слоТности аналитичСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ исслСдовался вопрос ΠΎ ΡΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΡΡ‚ΠΈ аппроксимации Канни. Авторы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ свою ΠΌΠ΅Ρ€Ρƒ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΡ€ΠΎΠΌΠΊΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эту ΠΌΠ΅Ρ€Ρƒ, ΠΎΠ½ΠΈ выяснили, Ρ‡Ρ‚ΠΎ пСрвая производная ΠΎΡ‚ Π³Π°ΡƒΡΡΠΎΠ²ΠΎΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° являСтся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ для Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ дСтСктирования ΠΊΡ€ΠΎΠΌΠΊΠΈ. БущСствуСт нСсколько ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Канни. Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ использовалась ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½Π°Ρ функция ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° Канни с Π΄Π²ΡƒΠΌΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ; ΠΏΡ€ΠΈ этом ΠΎΠ±Ρ‰ΠΈΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ рассчитывался ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ², послС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ пороговая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Авторы ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дСтСктирования. Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ мСтодология Канни для ΠΊΡ€ΠΎΠΌΠΎΠΊ с Ρ€Π°Π·ΠΌΡ‹Ρ‚Ρ‹ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ. Автор Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Π΄ΠΈΡΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° Канни ΠΈ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½Ρ‹Ρ… ΠΊΡ€ΠΎΠΌΠΎΠΊ. ДискрСтная вСрсия Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ области ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈΡ… Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° Π² ΠΎΠΊΠ½Π΅. Π­Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½ΠΎ достаточно большим, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π΅Π·Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° Π½Π΅ Π²Ρ‹Π·Π²Π°Π»ΠΎ высокочастотныС Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹.

Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ отмСчаСтся, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ Кэнни удовлСтворяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ критСриям обнаруТСния ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΡ€ΠΎΠΌΠΎΠΊ: Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сигнал/ΡˆΡƒΠΌ, точная локализация ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΆΠ½Ρ‹Ρ… ΠΊΡ€ΠΎΠΌΠΎΠΊ. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ («Π½Π΅ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅») для ΡƒΡ‚ΠΎΠ½ΡŒΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ, Π΄Π²ΡƒΡ…ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ гистСрСзис для слСТСния Π·Π° ΠΊΡ€ΠΎΠΌΠΊΠΎΠΉ, ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚авляСт ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ получСния ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ изобраТСния Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° Π²ΠΈΠ΄Π° ΠΈ Ρ…арактСристик протяТСнности ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΊΡ€ΠΎΠΌΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Π²Ρ‹Π΄Π΅Π»ΡΠ΅Ρ‚.

ΠœΠ΅Ρ‚ΠΎΠ΄ формирования ΠΎΡ†Π΅Π½ΠΎΠΊ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ модуля ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Ряд ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ вычислСниС ΠΎΡ†Π΅Π½ΠΎΠΊ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ.

Π”Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ Кэнни Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠΉ установки Π΄Π²ΡƒΡ… ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ², значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сущСствСнно ΠΌΠ΅Π½ΡΡŽΡ‚ рисунок ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ². Π­Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ автоматичСскиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ выдСлСния ΠΊΡ€ΠΎΠΌΠΎΠΊ. Он ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом нСдостатков ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ прямолинСйных ΠΊΡ€ΠΎΠΌΠΎΠΊ. Π’ Ρ‡Π°ΡΡ‚ности, ΠΎΠ½ Π΄Π°Π΅Ρ‚ ΠΏΠ»ΠΎΡ…ΠΎΠ΅ качСство выдСлСния ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΊΡ€ΠΎΠΌΠΎΠΊ ΠΈ ΠΌΠ΅ΡΡ‚ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ³ΠΎ пСрСсСчСния. ΠŸΡ€ΠΈ Π½ΠΈΠ·ΠΊΠΈΡ… значСниях ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ² выдСляСтся ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ², Ρ‡Ρ‚ΠΎ затрудняСт ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ прямых Π»ΠΈΠ½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прСобразования Π₯Π°Ρ„Π°.

Π”Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ Кэнни Π½Π΅ ΡΠΎΡ…раняСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΡ… Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΡΠ²ΠΎΠΉΡΡ‚Π²Π°Ρ… протяТСнности ΠΊΡ€ΠΎΠΌΠΎΠΊ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΎ ΡΡ‚ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ. Он ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нСмаксимального подавлСния, Π² Ρ‡Π°ΡΡ‚ности, ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π½ΠΈΠ΅ направлСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ максимума Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ области.

2.2 Алгоритмы ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ изобраТСния.

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

ΠΠ΅ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΡΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ Π»ΠΈΠ½ΠΈΠΉ относится ΠΊ ΡΠΈΡΡ‚СматичСским отклонСниям. К ΡΠ»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΌ относятся Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ выступы ΠΈ Π²ΠΏΠ°Π΄ΠΈΠ½Ρ‹ ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ Π»ΠΈΠ½ΠΈΠΉ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ отростки ΠΈ «Ρ…востики» — Ρ‚Π°ΠΊ называСмая «Π±Π°Ρ…Ρ€ΠΎΠΌΠ°». Π­Ρ‚ΠΈ искаТСния Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ случайных ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ пустоты, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅Π·Π°Ρ‡Π΅Ρ€Π½Π΅Π½Π½Ρ‹Ρ… пиксСлов Π²Π½ΡƒΡ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ. Π’ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ «ΠΏΡƒΡΡ‚ΠΎΡ‚Ρ‹» совпадаСт с ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ€Π°Π·Ρ€Ρ‹Π². ΠŸΡƒΡΡ‚ΠΎΡ‚Ρ‹ ΠΈ Ρ€Π°Π·Ρ€Ρ‹Π²Ρ‹ — вСсьма Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ явлСния, поэтому Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ.

ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ (Π‘ΡƒΡ‚Π°ΠΊΠΎΠ² ΠΈ Π΄Ρ€., 1987) ΡƒΡ‚ΠΎΠ½ΡŒΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π΅ΠΌ прСимущСстов ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° ΠΏΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ растрового изобраТСния, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ быстродСйствиС.

Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ строки:. Π’Ρ‹Π΄Π΅Π»ΠΈΠΌ Π² i-Ρ‚ΠΎΠΉ строкС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ пиксСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π·. Π­Ρ‚ΠΎΡ‚ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ Π² Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… строках восСмь сосСдних пиксСлов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ 0,1,…7 (см. Ρ€ΠΈΡ. 1).

Рисунок 1. НумСрация элСмСнтов ΠΎΠΊΠ½Π° 3×3.

Основная идСя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΡƒΡ‚ΠΎΠ½ΡŒΡˆΠ΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ‹ΡΠΊΠ°Ρ‚ΡŒ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ свСрху, снизу, справа ΠΈ ΡΠ»Π΅Π²Π° Π·Π°Ρ‡Π΅Ρ€Π½Π΅Π½Π½Ρ‹Π΅ пиксСлы, Π° Π·Π°Ρ‚Π΅ΠΌ вынСсти Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ с ΡΠΎΠ±Π»ΡŽΠ΄Π΅Π½ΠΈΠ΅ΠΌ пСрСчислСнных Π²Ρ‹ΡˆΠ΅ условий. ЕстСствСнно, элСмСнт ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ свСрху, Ссли ΠΎΠ½ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ 6 Π·Π°Ρ‡Π΅Ρ€Π½Π΅Π½Ρ‹, Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ 2 Π½Π΅ Π·Π°Ρ‡Π΅Ρ€Π½Π΅Π½. Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ эту ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ: элСмСнт являСтся ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ свСрху, Ссли Ρ€Π°Π²Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π±ΡƒΠ»Π΅Π²Π° функция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ символы ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ элСмСнтов Π½Π° Ρ€ΠΈΡ 1:

Π”Π°Π»Π΅Π΅, Ссли Π΄Π°Π½Π½Ρ‹ΠΉ пиксСл являСтся ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ свСрху, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ΄Π°Π²Π°Ρ‚ΡŒ Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 (Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‚ΠΈΡ€Π°Ρ‚ΡŒ этот пиксСл), Ссли Ρ€Π°Π²Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, элСмСнту Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ равСнствС Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ вычислСна для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пиксСла i-Ρ‚ΠΎΠΉ строки, поэтому Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (2) запишСм Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅:

Π—Π΄Π΅ΡΡŒ — Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅, соотвСтствСнно, ΠΈΠ½Π²Π΅Ρ€ΡΠΈΡŽ.

i-1 строки, i+1 строку Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ Ρ‚. Π΄. — Π²Π΅ΠΊΡ‚ΠΎΡ€, Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ элСмСнты i-Ρ‚ΠΎΠΉ строки, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ с 1 Π½Π° 0.

ПиксСл являСтся ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ слСва, Ссли Ρ€Π°Π²Π½Π° 1 функция. Π­Ρ‚ΠΎΡ‚ пиксСл ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ ΡΡ‚ΠΈΡ€Π°Π½ΠΈΡŽ, Ссли функция Ρ€Π°Π²Π½Π° 1. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ,.

РассуТдая Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΡΡ‚ΠΈΡ€Π°Π½ΠΈΡŽ ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ Π½ΠΈΠΆΠ½ΠΈΠ΅ ΠΈ ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ ΠΏΡ€Π°Π²Ρ‹Π΅ пиксСлы:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΡƒΡ‚ΠΎΠ½ΡŒΡˆΠ΅Π½ΠΈΡ состоит Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ исходного изобраТСния Π² Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ стирания сначала ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… свСрху, Π·Π°Ρ‚Π΅ΠΌ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… слСва, Π΄Π°Π»Π΅Π΅ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… снизу ΠΈ ΡΠΏΡ€Π°Π²Π° пиксСлов. Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (3) — (5) Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‚ится Π² 1. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ порядок стираний ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΈΠ½Ρ‹ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ со ΡΡ‚ирания ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… ΠΏΡ€Π°Π²Ρ‹Ρ… писксСлов, Π·Π°Ρ‚Π΅ΠΌ ΠΊΡ€Π°ΠΉΠ½Π΅ Π»Π΅Π²Ρ‹Ρ… ΠΈ Ρ‚. Π΄.

3. РСализация Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ распознавания Π»ΠΈΠ½ΠΈΠΈ (Π³Ρ€Π°Ρ„ΠΈΠΊΠ°), ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ — ΡƒΡ‚ΠΎΠ½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΉ ΠΈΠ· 3.2. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ связано с ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ, Π° Π½Π΅ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π° изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

3.1 Основной Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

1) ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° изобраТСния.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° изобраТСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π°) ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅ Π±):

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

Π±) Π’ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ ΠΊΠ°ΠΊ описано Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ 3.2.

2)ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

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

Π’Π²Π΅Π΄Π΅ΠΌ понятиС радиус-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°. Радиус-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ радиуса r Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ (x, y) называСтся ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ со ΡΡ‚ΠΎΡ€ΠΎΠ½ΠΎΠΉ (2r+1) ΠΈ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ (x, y). ВсС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ растрового изобраТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π»Ρ‹ΠΌΠΈ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числа (рис. 2).

Рисунок 2. Радиус-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ радиуса r.

Π’ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ рассматриваСтся радиус-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ся Π°Π½Π°Π»ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π±Π΅Π»Ρ‹Π΅ ΠΈ Ρ‡Π΅Ρ€Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π’ΠΎΡ‡ΠΊΠΈ, оказавшиСся Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ изобраТСния Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π»Ρ‹ΠΌΠΈ. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ радиусу радиус-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1.

Π§Π΅Ρ€Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, находящиСся ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π³Ρ€ΡƒΠΏΠΏΡ‹ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ связности этих Π³Ρ€ΡƒΠΏΠΏ ΠΈ ΠΈΡ… ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ мощности ΠΊΠ°ΠΊ мноТСства ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. 3:

Рисунок 3. Π“Ρ€ΡƒΠΏΠΏΡ‹ Ρ‡Π΅Ρ€Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ радиуса-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° Если радиус большС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ значСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΠ΅Π³ΠΎ ΠΈΠ· ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ рассматриваСмого изобраТСния, Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ считаСт Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ. Π—Π΄Π΅ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

1) Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ — Π² ΡΡ‚ΠΎΠΌ случаС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ заканчиваСтся ΠΈ ΡΡ‡ΠΈΡ‚аСтся, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΏΡƒΡ‚ΠΈ ΠΈΠ· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ.

2) Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° Π³Ρ€ΡƒΠΏΠΏΠ° — всС Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π°. Радиус радиус-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° увСличиваСтся Π½Π° 1 ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ повторяСтся.

3) Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° Π³Ρ€ΡƒΠΏΠΏΠ° ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² Π½Π΅ΠΉ большС (2r+1). Π’ ΡΡ‚ΠΎΠΌ случаС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ радиус Π½Π° 1 ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π·Π°Π½ΠΎΠ²ΠΎ. Π’Π°ΠΊΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ связан с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС Π²Π°ΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Π°Ρ ситуация ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΡ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ (см. Ρ€ΠΈΡ. 4).

Рисунок 4. Одна Π³Ρ€ΡƒΠΏΠΏΠ° Π²Π½ΡƒΡ‚Ρ€ΠΈ радиуса-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° с ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠΌ элСмСнтов большС (2r+1).

4) Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° Π³Ρ€ΡƒΠΏΠΏΠ°, количСство элСмСнтов Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ (2r+1). Π’ ΡΡ‚ΠΎΠΌ случаС примСняСм ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚ Π°2, послС Ρ‡Π΅Π³ΠΎ примСняСм слСд шаг ΠΊ ΡΡ‚ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅, Π·Π°Π΄Π°Π² Π΅ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ, ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ рисунок, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ рисунок.

5)Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹, количСство элСмСнтов Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ (2r+1) для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ. Π’ ΡΡ‚ΠΎΠΌ случаС примСняСм ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚ Π°2, послС Ρ‡Π΅Π³ΠΎ примСняСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг ΠΊ ΠΎΠ±ΠΎΠΈΠΌ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ, Π·Π°Π΄Π°Π² ΠΈΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ рисунок, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ рисунок. Π˜Π½Π°Ρ‡Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ радиус Π½Π° 1 ΠΈ ΠΏΠΎΠ²Ρ‚оряСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

6) Π³Ρ€ΡƒΠΏΠΏ большС Ρ‡Π΅ΠΌ 2. Π‘Ρ‡ΠΈΡ‚Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ присутствуСт ΡˆΡƒΠΌ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ радиус Π½Π° 1 ΠΈ ΠΏΠΎΠ²Ρ‚оряСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

Π°2) Π—Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ Π±Π΅Π»Ρ‹ΠΌ Π² Ρ€Π°Π΄ΠΈΡƒΡ-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅ радиусом r-1.Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ участка.

Π±) Для Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ рисунок. Для Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ (pr).

НазовСм ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ количСство элСмСнтов Π² Π³Ρ€ΡƒΠΏΠΏΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вычислим ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π³Ρ€ΡƒΠΏΠΏΡ‹ (w) ΠΈ Ρ€Π°Π΄ΠΈΡƒΡ Π³Ρ€ΡƒΠΏΠΏΡ‹ ® ΠΊΠ°ΠΊ.

(w div 2)+1. А Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²ΠΎΠΌ смыслС Ρ‚ΠΎΡ‡ΠΊΡƒ (p) ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹.

Π’Π²Π΅Π΄Π΅ΠΌ для этой Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡƒΡ‚ΡŒ trace ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся упорядочСнным списком Ρ‚ΠΎΡ‡Π΅ΠΊ. Π”ΠΎΠ±Π°Π²ΠΈΠΌ p Π² trace. Если Π² Ρ€Π°Π΄ΠΈΡƒΡ-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅ радиусом r Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ p Π΅ΡΡ‚ΡŒ конСчная Ρ‚ΠΎΡ‡ΠΊΠ°, Ρ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΡ‚ΡŒ для этой Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π°ΠΉΠ΄Π΅Π½. Π—Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ.

Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚Π΅ΠΌ ΠΆΠ΅ способом Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅. Если Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ — Π² ΡΡ‚ΠΎΠΌ случаС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ заканчиваСтся ΠΈ ΡΡ‡ΠΈΡ‚аСтся, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΏΡƒΡ‚ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для этой Π³Ρ€ΡƒΠΏΠΏΡ‹.

Π—Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ Π±Π΅Π»Ρ‹ΠΌ Π² Ρ€Π°Π΄ΠΈΡƒΡ-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅ радиусом r-1 для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ рисунка. Если это пСрвая итСрация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Π² Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ x, Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ (pr;p) ΠΈ (p;x) ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½, Π³Π΄Π΅ x ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ объСдинСнию этих Π³Ρ€ΡƒΠΏΠΏ. Если Ρ‚Π°ΠΊΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ нСсколько, Ρ‚ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π»ΡŽΠ±ΡƒΡŽ. Π­Ρ‚ΠΎΡ‚ шаг Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ отступ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π»ΠΈΡˆΠ½ΠΈΡ… Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ прСсСчСния. Π—Π΄Π΅ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

1) Если Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠ΄Π½Π° ΠΈ Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Π° Π½Π΅ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄ΠΈΡ‚ w, Ρ‚ΠΎ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Π² Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π΅ Π² trace. Π’Π°ΠΊΠΆΠ΅ присвоим p Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой Ρ‚ΠΎΡ‡ΠΊΠΈ. ОбновляСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ радиуса r=(w div 2)+1 ΠΈ ΠΏΠΎΠ²Ρ‚оряСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

2)Если Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠ΄Π½Π° ΠΈ Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Π° прСвосходит w, Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ r Π½Π° 1 ΠΈ ΠΏΠΎΠ²Ρ‚оряСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Π­Ρ‚ΠΎ дСлаСтся ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ воспринимаСтся ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ пСрСсСчСниС, ΠΈ Ρ‚рСбуСтся Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ радиуса для получСния большСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (см. Ρ€ΠΈΡ 5).

Рисунок 5. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° пСрСсСчСния.

3)Если Π³Ρ€ΡƒΠΏΠΏ большС ΠΎΠ΄Π½ΠΎΠΉ, Ρ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ пСрСсСчСниС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ Π±) для этих Π³Ρ€ΡƒΠΏΠΏ, Π·Π°Π΄Π°Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΊΠ°ΠΊ p ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ для Π½ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ рисунок.

Π²)Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΈΠΌΠ΅Π΅ΠΌ Π½Π°Π±ΠΎΡ€ ΠΏΡƒΡ‚Π΅ΠΉ (trace), для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡƒΡ‚ΠΈ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π»ΠΈΠ±ΠΎ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ» Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ, Π»ΠΈΠ±ΠΎ нашСл ΠΈΠ»ΠΈ Π½Π΅ Π½Π°ΡˆΠ΅Π» ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ. Π’Π°ΠΊΠΆΠ΅ Π·Π½Π°Π΅ΠΌ самыС ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ (ΠΈΡ… Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 2-Ρ…). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ ΠΈΡΠΊΠΎΠΌΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ опрСдСлСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΊΠ°ΠΊ Ρ€Π°Π· ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ, Ссли ΠΎΠ½ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚.

Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ нСдостатки. НапримСр, большоС количСство пСрСсСчСний сильно влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π° ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдполагаСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ΠŸΡ€ΠΈ большом количСствС пСрСсСчСний ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Π’Π°ΠΊΠΆΠ΅ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ опрСдСляСтся Π² Π½Π°Ρ‡Π°Π»Π΅, сразу послС опрСдСлСния Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ½Π° увСличиваСтся, Ρ‚ΠΎ ΡΡ‚ΠΎ ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ влияСт Π½Π° Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ нСдостаток компСнсируСтся ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΡ‚ΠΎΠ½ΡŒΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π»ΠΈΠ½ΠΈΠΉ. Π₯отя Ρ‚Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π΅ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Π½ ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях отсканированных ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

3.2 ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π³Π΄Π΅ вСтвлСния Π½Π΅ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚, Π³Π΄Π΅ выбираСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ°, Π° ΠΊΠΎΠ½Π΅Ρ† опрСдСляСтся автоматичСски. Π’ ΡΡ‚ΠΎΠΌ случаС, Ссли Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»ΠΎΡΡŒ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅, выбираСтся Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡŽ ΠΎΡ‚ ΡˆΠΈΡ€ΠΈΠ½Ρ‹. Если Ρ‚Π°ΠΊΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ нСсколько, Ρ‚ΠΎ ΠΈΠ· Π½ΠΈΡ… Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡŽ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° направлСния, Ρ‚. Π΅. ΠΏΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Π² Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ x, Ρ‚Π°ΠΊΠΎΠΉ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ (pr;p) ΠΈ (p;x) ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½, Π³Π΄Π΅ x ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ объСдинСнию этих Π³Ρ€ΡƒΠΏΠΏ. Если Ρ‚Π°ΠΊΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ нСсколько, Ρ‚ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ся любая.

ИзмСнСниС ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² Π±) ΠΈ Π²). ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ся:

1) ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° изобраТСния осущСствляСтся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ примСнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΡƒΡ‚ΠΎΠ½ΡŒΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ, Ρ‚.ΠΊ. Π² Π΄Π°Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ сущСствСна.

2) ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΌΡ‹ΡˆΠΈ опрСдСляСт Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°. Напомним, Ρ‡Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊ послС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°. Π‘Ρ‡ΠΈΡ‚Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Π»Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто Π±Π΅Π· пСрСсСчСний с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ. Π”Π°Π»Π΅Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π±) Для Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ рисунок. Для Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ (pr). НазовСм ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ количСство элСмСнтов Π² Π³Ρ€ΡƒΠΏΠΏΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ вычислим ΡˆΠΈΡ€ΠΈΠ½Ρƒ (w) ΠΈ Ρ€Π°Π΄ΠΈΡƒΡ ® ΠΊΠ°ΠΊ (w div 2)+1. Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²ΠΎΠΌ смыслС Ρ‚ΠΎΡ‡ΠΊΡƒ (p) ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹. Π’Π²Π΅Π΄Π΅ΠΌ для этой Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡƒΡ‚ΡŒ trace, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся упорядочСнным списком Ρ‚ΠΎΡ‡Π΅ΠΊ. ДобавляСм p Π² trace. Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚Π΅ΠΌ ΠΆΠ΅ способом Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅. Если Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹, Ρ‚ΠΎ Π² ΡΡ‚ΠΎΠΌ случаС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ заканчиваСтся ΠΈ Ρ„иксируСтся trace для Π΄Π°Π½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹.

Π—Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ Π±Π΅Π»Ρ‹ΠΌ Π² Ρ€Π°Π΄ΠΈΡƒΡ-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅ радиусом r-1 для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ рисунка. Π—Π΄Π΅ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

1) Если Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠ΄Π½Π° ΠΈ Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Π° Π½Π΅ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄ΠΈΡ‚ w, Ρ‚ΠΎ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Π² Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π΅ Π² trace, Ρ‚Π°ΠΊΠΆΠ΅ присвоим p Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой Ρ‚ΠΎΡ‡ΠΊΠΈ. ОбновляСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ радиуса r=(w div 2)+1 ΠΈ Π·Π°Ρ‚Π΅ΠΌ повторяСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

2) Если Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠ΄Π½Π° ΠΈ Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Π° прСвосходит w, Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ r Π½Π° 1 (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ пСрСсСчСниС) ΠΈ ΠΏΠΎΠ²Ρ‚оряСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

3) Если Π³Ρ€ΡƒΠΏΠΏ большС ΠΎΠ΄Π½ΠΎΠΉ, Ρ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ пСрСсСчСниС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡŽ ΠΎΡ‚ ΡˆΠΈΡ€ΠΈΠ½Ρ‹, Π° Π΅ΡΠ»ΠΈ Ρ‚Π°ΠΊΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ нСсколько, Ρ‚ΠΎ ΠΈΠ· Π½ΠΈΡ… Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡŽ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° направлСния, Ρ‚. Π΅. ΠΏΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ Π² Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ x Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ (pr;p) ΠΈ (p;x) ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½, Π³Π΄Π΅ x ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ объСдинСнию этих Π³Ρ€ΡƒΠΏΠΏ. Если Ρ‚Π°ΠΊΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ нСсколько, Ρ‚ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ся любая Π³Ρ€ΡƒΠΏΠΏΠ°.

Π—Π°Ρ‚Π΅ΠΌ Π² Π½Π΅ΠΉ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π΅ Π² trace. Π—Π°Ρ‚Π΅ΠΌ присваиваСм p Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ радиуса ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹.

r=(w_new div 2)+1, w=w_new.

Π³Π΄Π΅ w_new — ΡˆΠΈΡ€ΠΈΠ½Π° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

Π²) Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΈΠΌΠ΅Π΅ΠΌ 1 ΠΏΡƒΡ‚ΡŒ ΠΈΠ»ΠΈ 2 ΠΏΡƒΡ‚ΠΈ (trace) .БоСдиняя ΠΈΡ…, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ опрСдСлСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° являСтся ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ.

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мСньшС вычислСний, ΠΎΠ΄Π½Π°ΠΊΠΎ создаСт больший риск Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ опрСдСлСния ΠΏΡƒΡ‚ΠΈ, особСнно ΠΏΡ€ΠΈ пСрСсСчСниях с ΠΏΡ€Π΅ΠΏΡΡ‚ствиСм ΠΏΠΎΠ΄ острым ΡƒΠ³Π»ΠΎΠΌ. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ являСтся прСимущСством, Ссли ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎ (Ссли Π³Ρ€Π°Ρ„ΠΈΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, нанСсСн Π½Π° ΡΠ΅Ρ‚ΠΊΡƒ). Π’ ΡΡ‚ΠΎΠΌ случаС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, связанныС с ΡΠ΅Ρ‚ΠΊΠΎΠΉ. Но Π² Ρ†Π΅Π»ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ вряд Π»ΠΈ цСлСсообразСн, Ρ‚.ΠΊ. Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ с ΡΠ΅Ρ‚ΠΊΠΎΠΉ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ нСчасто ΠΈΠ»ΠΈ Π΅Π΅ ΡΡ„Ρ„Π΅ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ (Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ).

3.3 Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ относится ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Ρ… осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΈ ΠΈΡ… Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΠΎΠΌΡƒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ для облСгчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ основного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

1) ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° изобраТСния (пороговая Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ + ΡƒΡ‚ΠΎΠ½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΉ ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ…одимости).

2) ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ осСй.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΡ производятся Π½Π°Π΄ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ рисунком. Π’Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΊΠ»ΠΎΠ½ осСй ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ экрана ΠΈ Ρ†Π΅Π½Ρ‚Ρ€ пСрСсСчСния (p).

Π°) ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ радиусу радиус-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° = 1.

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

1) Если количСство Π³Ρ€ΡƒΠΏΠΏ мСньшС 2-Ρ… ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ радиус Π½Π° 1, повторяСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Π’Π°ΠΊΠΎΠ΅ условиС связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ оси ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ (см. Ρ€ΠΈΡ. 6).

Рисунок 6. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹Ρ… осСй.

2) Если количСство Π³Ρ€ΡƒΠΏΠΏ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 2-ΠΌ, Ρ‚ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ сопоставляСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящий Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ· 4-Ρ… Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ наимСньшСго ΡƒΠ³Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ (p;x) ΠΈ K, Π³Π΄Π΅ K-ΠΎΠ΄ΠΈΠ½ ΠΈΠ· 4-Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², x — любая Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π΄Π²ΡƒΠΌ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π²Π΅ΠΊΡ‚ΠΎΡ€. Π—Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ Π±Π΅Π»Ρ‹ΠΌ Π² Ρ€Π°Π΄ΠΈΡƒΡ-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅ радиусом r-1 для рисунка. Π—Π°Ρ‚Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π΅ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ примСняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг:

Π±) ИмССм Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ (v).

Вычислим ΡˆΠΈΡ€ΠΈΠ½Ρƒ (w) ΠΈ Ρ€Π°Π΄ΠΈΡƒΡ ® ΠΊΠ°ΠΊ (w div 2)+1. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠ²ΠΎΠΌ смыслС Ρ‚ΠΎΡ‡ΠΊΡƒ (p) ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹. Π’Π²Π΅Π΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ erase, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Ρ‚ΡŒ ΡΡ‚ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ.

ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΠΌ erase = true;

Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚Π΅ΠΌ ΠΆΠ΅ способом Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅. Если Π³Ρ€ΡƒΠΏΠΏ большС Ρ‡Π΅ΠΌ 1, Ρ‚ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΠΌ erase=false, Ρ‚. ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ пСрСсСчСния.

Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΠΎ Ρ‚ΠΎΡ‡ΠΊΠ΅, которая Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ отклоняСтся ΠΎΡ‚ v, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 90 градусов. Если Ρ‚Π°ΠΊΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅Ρ‚, Ρ‚ΠΎ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. (Π’Π°ΠΊΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ оси ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π½ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° Π½Π° 90 градусов. МоТно ввСсти Π±ΠΎΠ»Π΅Π΅ строгоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ, Ссли Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… высока, Ρ‚ΠΎ ΡΡ‚ΠΎΠ³ΠΎ достаточно). Π—Π΄Π΅ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

1) Если ΡˆΠΈΡ€ΠΈΠ½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄ΠΈΡ‚ w, Ρ‚ΠΎ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Π² Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΡƒ. Если erase=true, Ρ‚ΠΎ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Ρ€Π°Π΄ΠΈΡƒΡ-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅ радиусом r-1. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ p Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ радиуса r=(w div 2)+1. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, восстановив erase=true, Ссли трСбуСтся.

2) Если ΡˆΠΈΡ€ΠΈΠ½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ прСвосходит w, Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ r Π½Π° 1 присвоим erase = false ΠΈ ΠΏΠΎΠ²Ρ‚оряСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Π­Ρ‚ΠΎ дСлаСтся ΠΈΠ·-Π·Π° риска ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ ΡƒΡ‚ΠΎΠ»Ρ‰Π΅Π½ΠΈΠ΅, обусловлСнноС ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌΡΡ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ.

Π²) Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΠΎ стСртыми осями.

Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ основного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для случаСв, ΠΊΠΎΠ³Π΄Π° Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ пСриодичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, часто ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ оси.

4. Π Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Для распознавания ΠΈ ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1)ЗагруТаСтся ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ мСню.

2)Настройка ΠΏΠΎΡ€ΠΎΠ³Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ threshold (Π΄ΠΈΠ°Π»ΠΎΠ³ справа), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ ΡƒΡ‚ΠΎΠ½ΡŒΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ, Ρ‡Π΅ΠΌ Ρ‡Π΅Ρ‚Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ для распознавания Π³Ρ€Π°Ρ„ΠΈΠΊ, Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ эффСктивнСС ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° распознавания.

3)Установка осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΌΡ‹ΡˆΠΈ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠΉ систСмы. ΠŸΡ€ΠΈ этом ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ запускаСтся Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ распознавания для частичного удалСния осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΈΡ распознавания самого Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

4)Установка ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°. ΠŸΡ€ΠΈ выставлСнии ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ сначала с Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ X ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΠΉ, Π·Π°Ρ‚Π΅ΠΌ с Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Y ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΠΉ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠ°ΡΡˆΡ‚Π°Π± Ρ€Π°Π²Π΅Π½ ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρƒ изобраТСния.

5)Для распознавания Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ основной Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Для Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ†ΠΈΠΈ слСдуСт Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ graph Π½Π° ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, послС Ρ‡Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ€Π½Ρ‹ΠΌΠΈ. ПослС этого Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ways отобразятся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ². ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΡΡ‚ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΎΠ½ΠΈ изобразятся Π² Π²ΠΈΠ΄Π΅ Ρ‚ΠΎΡ‡Π΅ΠΊ Π½Π° ΡΠΊΡ€Π°Π½Π΅.

6)Если ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΡˆΠ»Π° Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ»ΠΈ трСбуСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ. Для установки Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Ρ€ΡƒΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Point.

7)Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½ΡƒΠΆΠ½ΠΎ сначала Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ось ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π± (Ссли ΠΎΠ½Π° Π½Π΅ Π²Ρ‹ΡΡ‚Π°Π²Π»Π΅Π½Π°) ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ generate. ПослС этого Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² dat Ρ„Π°ΠΉΠ». Ось ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Π½ΡƒΠΆΠ½ΠΎΠΉ систСмС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

4. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдставляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ стандартного класса JFrame с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ:

1)ΠžΠ±Π»Π°ΡΡ‚ΡŒ отобраТСния. ΠžΠ±Π»Π°ΡΡ‚ΡŒ отобраТСния являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса G_JPanel, наслСдуСмого ΠΎΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ³ΠΎ класса JPanel ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π² ΡΠ΅Π±Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для рисования изобраТСния ΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ Π½Π° ΡΠΊΡ€Π°Π½Π΅.

2)ΠžΠ±Π»Π°ΡΡ‚ΡŒ увСличСния. ΠžΠ±Π»Π°ΡΡ‚ΡŒ увСличСния являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Z_Jpanel. ΠžΠ±Π»Π°ΡΡ‚ΡŒ увСличСния слуТит для отобраТСния ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ изобраТСния Π²ΠΎΠΊΡ€ΡƒΠ³ курсора для удобства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

3)Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ опрСдСляСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ image стандартного класса Image, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Java Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ Π΄Π»ΠΈΠ½Ρ‹ image_w ΠΈ image_h, соотвСтствСнно. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ загруТаСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ с Π΄ΠΈΡΠΊΠ°.

РисованиС изобраТСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ производится Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ области отобраТСния, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΉ области ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π² ΡΠ»ΡƒΡ‡Π°Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ изобраТСния ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ области отобраТСния).

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° позволяСт ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ПолоТСниС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ опрСдСляСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ x_init, Ρƒ_init, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ послС сдвига. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ x_drag, y_drag ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°ΡŽΡ‚ значСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ сдвига Π΄ΠΎ Π΅Π³ΠΎ фиксации, ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ»Π°Π²Π½ΠΎΡΡ‚ΡŒ сдвига.

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

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ осущСствляСтся Π°Ρ„Ρ„ΠΈΠ½Π½Ρ‹ΠΌΠΈ прСобразованиями ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Java. ВсС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡ€Π°Π½Π΅ для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ.

4) Π’ΠΎΡ‡ΠΊΠ°. Π’ΠΎΡ‡ΠΊΠ° являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса G_Point ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ся: ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ отобраТСния Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ (center), измСрСниями области отобраТСния dim. width ΠΈ dim. height, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½Π° Π±Ρ‹Π»Π° установлСна ΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ multx=z*sx ΠΈ multy=z*sy, Π³Π΄Π΅ z — коэффициСнт приблиТСния/удалСния, Π° sx=dim.width/w, sy=dim.height/h — коэффициСнты сТатия ΠΏΠΎ x ΠΈ y, соотвСтствСнно. Π—Π΄Π΅ΡΡŒΠ΅ w, h — измСрСния.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ {dim.width, dim. height, multx, multy} Π½Π°Π·ΠΎΠ²Π΅ΠΌ условиСм.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ p (x, y) ΠΊ ΡƒΡΠ»ΠΎΠ²ΠΈΡΠΌ B={dw, dh, mx, my} Π² ΡƒΡΠ»ΠΎΠ²ΠΈΡΡ… A={dim.width, dim. height, multx, multy} Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x', y' Ρ‡Ρ‚ΠΎ.

x' = (x + dx — x_c)*zx+x_c.

y' = -(-(y + dy) + y_c)*zy+y_c,.

Π³Π΄Π΅.

dx = (dw — dim. width)/2;

dy = (dh — dim. height)/2;

double x_c = (dw)/2.

double y_c = (dh)/2.

double zx = mx/multx.

double zy = my/multy.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Java. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ производится ΠΏΡƒΡ‚Π΅ΠΌ пСрСсчСта ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ, учитывая Π΅Ρ‘ ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ΅ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚. Π΅. Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Π΅Π΅ ΡƒΡΠ»ΠΎΠ²ΠΈΡΡ… ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ условиям. Π—Π°Ρ‚Π΅ΠΌ эти ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π° x_init, Ρƒ_init. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ отобраТСния Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ отобраТСния. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ пСрСсчСта ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ условия, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»Π° поставлСна Ρ‚ΠΎΡ‡ΠΊΠ°, позволяСт Ρ‚ΠΎΡ‡Π½ΠΎ (ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ выставлСнии Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ вычислСнии ΠΈΡ… Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. Код ΠΌΠ΅Ρ‚ΠΎΠ΄Π° paint ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΎΡ‡ΠΊΠΈ:

public void paint (Graphics2D g2, Dimension dim, double mx, double my, Point shift) {.

double dx = (dim.width — (double)this.dim.width)/2;

double dy = (dim.height -(double)this.dim.height)/2;

double x_c = (dim.width)/2;

double y_c = (dim.height)/2;

double zx = mx/multx;

double zy = my/multy;

double z_x_ord = (center.x + dx — x_c)*zx+x_c;

double z_y_ord = -(-(center.y + dy) + y_c)*zy+y_c;

Point g_center = new Point ((int)(z_x_ord)+shift.x,(int)(z_y_ord)+shift.y);

Ellipse2D.Double circle = new Ellipse2D. Double (g_center.x — 2, g_center.y — 2, 4, 4); g2. fill (circle);

}.

Π§Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° paintComponent (Graphics g) области отобраТСния, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡Π΅ΠΊ, Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ points, ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

double z = pow (0.9, zoom);

Dimension dim = this. getSize ();

int w = (int)image_w;

int h = (int)image_h;

Graphics2D g2 = (Graphics2D)g;

if (w>dim.width || h>dim.height){.

for (ListIterator i = points. listIterator (); i. hasNext ();) {.

double sx = dim. width/(double)w;

double sy = dim. height/(double)h;

G_Point el = i. next ();

el.paint (g2,dim, sx*z, sy*z, new Point ((int)(- x_drag — x_init),(int)(- y_drag — y_init)));

}.

}else{.

for (ListIterator i = points. listIterator (); i. hasNext ();) {.

G_Point el = i. next ();

el.paint (g2,dim, z, z, new Point ((int)(- x_drag — x_init),(int)(- y_drag — y_init)));

}.

}.

5) ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ оси ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. Оси, ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π½Π°Π±ΠΎΡ€ Π»ΠΈΠ½ΠΈΠΉ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΡ… оси ΠΈ ΡΡ‚Ρ€Π΅Π»ΠΊΠΈ направлСния, ΠΈ Π±ΡƒΠΊΠ²Ρ‹ «X» «Y».

ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ оси ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ xy_ord ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Ord ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ся: Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ пСрСсСчСния осСй center, измСрСниями области отобраТСния dim. width ΠΈ dim. height, (ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½Π° Π±Ρ‹Π»Π° установлСна), Ρ‚ΠΎΡ‡ΠΊΠ° с ΠΏΠΎΠ»ΡΠΌΠΈ multx, multy, ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° angle осСй ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ экрана. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ осСй производится ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Java. ΠœΠ΅Ρ‚ΠΎΠ΄ прорисовки paint () класса Org:

public void paint (Graphics2D g2, double length, Dimension dim, double mx, double my, Point shift){.

double dx = (dim.width — (double)this.dim.width)/2;

double dy = (dim.height -(double)this.dim.height)/2;

double x_c = (dim.width)/2;

double y_c = (dim.height)/2;

double zx = mx/multx;

double zy = my/multy;

double z_x_ord = (center.x + dx — x_c)*zx+x_c;

double z_y_ord = -(-(center.y + dy) + y_c)*zy+y_c;

Point g_center = new Point ((int)(z_x_ord)+shift.x,(int)(z_y_ord)+shift.y);

g2.drawLine ((int) (g_center.x — (int) (cos (angel*PI/180)*length)),.

(int) (g_center.y + (int) (sin (angel*PI/180)*length)),.

(int) (g_center.x + (int) (cos (angel*PI/180)*length)),.

(int) (g_center.y — (int) (sin (angel*PI/180)*length)));

g2.drawLine ((int) (g_center.x — (int) (cos (angel*PI/180+PI/2)*length)),.

(int) (g_center.y + (int) (sin (angel*PI/180+PI/2)*length)),.

(int) (g_center.x + (int) (cos (angel*PI/180+PI/2)*length)),.

(int) (g_center.y — (int) (sin (angel*PI/180+PI/2)*length)));

double d = min (dim.width, dim. height);

double xA = g_center.x — (int) (cos (angel*PI/180)*d/3);

double yA = g_center.y + (int) (sin (angel*PI/180)*d/3);

g2.drawLine ((int) (xA + (int) (cos (angel*PI/180+PI/8)*d/30)),.

(int) (yA — (int) (sin (angel*PI/180+PI/8)*d/30)),.

(int) (xA),.

(int) (yA));

g2.drawLine ((int) (xA + (int) (cos (angel*PI/180-PI/8)*d/30)),.

(int) (yA — (int) (sin (angel*PI/180-PI/8)*d/30)),.

(int) (xA),.

(int) (yA));

g2.setFont (new Font («Dialog», Font. PLAIN, (int)d/40));

g2.drawString («X», (int) (xA + (int) (cos (angel*PI/180+PI/2)*d/40)), (int) (yA — (int) (sin (angel*PI/180+PI/2)*d/40)));

xA = g_center.x — (int) (cos (angel*PI/180+PI/2)*d/3);

yA = g_center.y + (int) (sin (angel*PI/180+PI/2)*d/3);

g2.drawLine ((int) (xA + (int) (cos (angel*PI/180+PI/2+PI/8)*d/30)),.

(int) (yA — (int) (sin (angel*PI/180+PI/2+PI/8)*d/30)),.

(int) (xA),.

(int) (yA));

g2.drawLine ((int) (xA + (int) (cos (angel*PI/180+PI/2-PI/8)*d/30)),.

(int) (yA — (int) (sin (angel*PI/180+PI/2-PI/8)*d/30)),.

(int) (xA),.

(int) (yA));

g2.setFont (new Font («Dialog», Font. PLAIN, (int)d/40));

g2.drawString («Y», (int) (xA + (int) (cos (angel*PI/180+PI/2+PI/2)*d/40)), (int) (yA — (int) (sin (angel*PI/180+PI/2+PI/2)*d/40)));

}.

Π§Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° paintComponent (Graphics g) области отобраТСния ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ осСй:

double z = pow (0.9, zoom);

Dimension dim = this. getSize ();

int w = (int)image_w;

int h = (int)image_h;

Graphics2D g2 = (Graphics2D)g;

if (w>dim.width || h>dim.height){.

if (xy_ord ≠ null) {.

double sx = dim. width/(double)w;

double sy = dim. height/(double)h;

xy_ord.paint (g2, max (dim.width + z*sx*abs (x_drag + x_init), dim. height + z*sy*abs (y_drag + y_init)),.

dim,.

sx*z,.

sy*z,.

new Point ((int)(- x_drag — x_init),(int)(- y_drag — y_init)));

}.

}else{.

if (xy_ord ≠ null) {.

xy_ord.paint (g2, max (dim.width + z*abs (x_drag + x_init), dim. height + z*abs (y_drag + y_init)),.

dim,.

z,.

z,.

new Point ((int)(- x_drag — x_init),(int)(- y_drag — y_init)));

}.

}.

//Motion render->

if (isOxyOn) {.

new Ord (new Point ((int)(p.x — x_drag),(int)(p.y — y_drag)), 1,1,180 + angel_ord*0.5,dim).

paint (g2, max (dim.width, dim. height), dim, 1,1,new Point (0,0));

}.

5. ГСнСрация Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ являСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚ΠΎΡ‡Π΅ΠΊ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ установлСнных осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°. Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Как Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅ Ρ‚ΠΎΡ‡ΠΊΠ° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ опрСдСляСтся ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса G_Point ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ся Π΅Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ отобраТСния ΠΈ ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° Π±Ρ‹Π»Π° создана. Оси ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса Ord ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° вычисляСм ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Π΅Ρ‘ ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΊ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ осСй ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. Π—Π°Ρ‚Π΅ΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π½Π° ΠΎΠ±Π΅ оси ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊΠ°ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ расстояния ΠΎΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… оси (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Ord) Π΄ΠΎ Ρ€Π°Π½Π΅Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΉ Π½Π° ΡΡ‚ΠΈ оси с ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π½Π° Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±. Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ generateCords класса G_Point, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Ρƒ вСщСствСнных чисСл, ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ:

public List generateCords (Ord ord, double xStrain, double yStrain){.

double mx = ord. getMultX ();

double my = ord. getMultY ();

double dx = (ord.getDim ().width — dim. width)/2;

double dy = (ord.getDim ().heightdim.height)/2;

double x_c = (ord.getDim ().width)/2;

double y_c = (ord.getDim ().height)/2;

double zx = mx/multx;

double zy = my/multy;

double x1 = (center.x + dx — x_c)*zx+x_c;

double y1 = -(-(center.y + dy) + y_c)*zy+y_c;

double x0 = ord. getPoint ().x;

double y0 = ord. getPoint ().y;

double x0s = ord. getPoint ().x — (cos (ord.getAngel ()*PI/180));

double y0s = ord. getPoint ().y + (sin (ord.getAngel ()*PI/180));

double resultX = findPoj (x0, y0, x0s, y0s, x1, y1)*xStrain;

x0s = ord. getPoint ().x — (cos (ord.getAngel ()*PI/180+PI/2));

y0s = ord. getPoint ().y + (sin (ord.getAngel ()*PI/180+PI/2));

double resultY = findPoj (x0, y0, x0s, y0s, x1, y1)*yStrain;

List out = new ArrayList ();

out.add (0, resultX);

out.add (1, resultY);

return out;

}.

private double findPoj (double x0, double y0, double x0s, double y0s, double x1, double y1){.

try{.

double x =.

(x1*pow (x0,2)-y1*y0s*x0+y1*y0*x0+x0*pow (y0s, 2)-x0*y0*y0s-2*x1*x0s*x0- y1*y0*x0s+y1*y0s*x0s+x0s*pow (y0,2)+x1*pow (x0s, 2)-x0s*y0*y0s)/ (pow (y0,2)+pow (x0,2)+pow (x0s, 2)-2*x0s*x0+pow (y0s, 2)-2*y0*y0s);

double y =.

(2*y0*y1*y0s+y1*pow (y0,2)+y0*x1*x0+y1*pow (y0s, 2)+pow (x0s, 2)*y0+y0s*pow (x0,2) — x0s*x0*y0-y0s*x1*x0-x0s*x0*y0s-y0*x1*x0s+y0s*x1*x0s)/.

(pow (y0,2)+pow (x0,2)+pow (x0s, 2)-2*x0s*x0+pow (y0s, 2)-2*y0*y0s);

double out = sqrt (pow (x-x0,2)+pow (y-y0,2));

double s = 1;

if ((x0s-x0)*(x-x0)+(y0s-y0)*(y-y0)<0){.

s= -1;

}.

return out*s;

}catch (Exception e){.

System.out.println («error in G_Point.findProj»);

}.

return 0;

}.

6. РСализация основного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

private void graphAction (){.

//p-current position of mouse after click.

Dimension dim = this. getSize ();

int dx = dim. width / 2 — image. getWidth (null) / 2;

int dy = dim. height / 2 — image. getHeight (null) / 2;

Point p_tmp = this. toInitCord (p);

Point pt = new Point (p_tmp.x — dx, p_tmp.y — dy);

BufferedImage bimage = new BufferedImage (image.getWidth (null), image. getHeight (null), BufferedImage. TYPE_INT_RGB);

// Draw the image on to the buffered image.

Graphics2D g2 = bimage. createGraphics ();

g2.drawImage (image, 0, 0, null);

g2.dispose ();

int defColour = -1;

if (isPtInBImg (bimage, pt. x, pt. y)){.

defColour = bimage. getRGB (pt.x, pt. y);

}.

if (defColour==-1){.

return;

}.

//checking for two points being initialized.

if (isGraphOn2 == false){.

isGraphOn2 = true;

g_p = new Point (p_tmp.x — dx, p_tmp.y — dy);

return;

}.

if (g_p ≠ null){.

pt_last = g_p;

}else{.

return;

}.

int radius = 1;

boolean exit = false;

ArrayList> packs = new ArrayList>();

while (radius.

packs = new ArrayList>();

ArrayList content = new ArrayList ();

boolean contentwrite = false;

Point pt_tmp = new Point (pt.x — radius, pt. y — radius);

for (int i=0;i<=8*radius-1;i++){.

double alpha = PI/2 * (i/(2*radius));

if (isPtInBImg (bimage, pt_tmp.x, pt_tmp.y) && defColour == bimage. getRGB (pt_tmp.x, pt_tmp.y)){.

content.add (pt_tmp);

contentwrite = true;

}.

else if (contentwrite){.

packs.add (content);

content = new ArrayList ();

contentwrite = false;

}.

pt_tmp = new Point (pt_tmp.x + (int)cos (alpha), pt_tmp.y + (int)sin (alpha));

}.

if (contentwrite){.

if (!packs.isEmpty () && (packs.get (0).get (0).x == pt. x — radius && packs. get (0).get (0).y == pt. y — radius)){.

content.addAll (0, packs. get (0));

packs.set (0,content);

contentwrite = false;

}else{.

packs.add (content);

contentwrite = false;

}.

}.

if (packs.size ()==2){.

exit = false;

break;

}else{.

if (packs.size ()==1 && packs. get (0).size ()<=radius*2+1){.

exit = false;

break;

}.

radius++;

}.

}.

if (exit){return;}.

List> out = new ArrayList ();

for (int i=0;i.

List> tmp = graphAction_step (bimage, packs. get (i).size (),.

packs.get (i).get (packs.get (i).size ()/2),.

pt,.

pt_last,.

defColour,.

dx,.

dy,.

0,.

false,.

tmp_ways);

if (tmp ≠ null){.

out.addAll (tmp);

}.

}.

//saving ways.

wPoints = out;

DefaultTableModel model = (DefaultTableModel) ways. getModel ();

model.setRowCount (0);

for (int i=0;i.

model.addRow (new Object[]{i+1});

}.

};

private List> graphAction_step (BufferedImage bimage, int w, Point pt, Point previous, Point pt_last, int defColour, int dx, int dy, int stack, boolean erase, List tmp_ways){.

List trace = new ArrayList ();

int radius_tmp=w;

int radius = radius_tmp/2+1;

int width = radius_tmp;

int iterations = 0;

while (pt ≠ null){.

if (abs (pt_last.x — pt. x)<=width && abs (pt_last.y — pt. y)<=width){.

trace.add (new Point (pt_last.x +dx, pt_last.y +dy));

List> end = new ArrayList ();

end.add (trace);

return end;

}.

List> packs = new ArrayList>();

ArrayList content = new ArrayList ();

boolean contentwrite = false;

Point pt_tmp = new Point (pt.x — radius, pt. y — radius);

for (int i=0;i<=8*radius-1;i++){.

double alpha = PI/2 * (i/(2*radius));

if (isPtInBImg (bimage, pt_tmp.x, pt_tmp.y) && defColour == bimage. getRGB (pt_tmp.x, pt_tmp.y)){.

content.add (pt_tmp);

contentwrite = true;

}.

else if (contentwrite){.

packs.add (content);

content = new ArrayList ();

contentwrite = false;

}.

pt_tmp = new Point (pt_tmp.x + (int)cos (alpha), pt_tmp.y + (int)sin (alpha));

}.

if (contentwrite){.

if (!packs.isEmpty () && (packs.get (0).get (0).x == pt. x — radius && packs. get (0).get (0).y == pt. y — radius)){.

content.addAll (0, packs. get (0));

packs.set (0,content);

contentwrite = false;

}else{.

packs.add (content);

contentwrite = false;

private boolean isPtInBImg (BufferedImage bimage, int x, int y) y<0.

}.

}.

if (packs.isEmpty ()){.

break;

}.

else.

{.

iterations++;

for (int i = 0;i.

for (int j = 0;j.

if (previous ≠null && packs. get (i).get (j).x == previous. x && packs. get (i).get (j).y == previous. y){.

packs.remove (i);

break;

}.

}.

}.

for (int i=-(radius-1);i<=(radius-1);i++){.

for (int j=-(radius-1);j<=(radius-1);j++){.

if (isPtInBImg (bimage, pt. x + i, pt. y + j)){.

bimage.setRGB (pt.x + i, pt. y + j, -1);

}.

}.

}.

if (iterations > 1 && packs. size ()>1){.

List> end = new ArrayList ();

for (int i=0;i.

BufferedImage b = new BufferedImage (bimage.getWidth (),.

bimage.getHeight (),.

BufferedImage.TYPE_INT_RGB);

Graphics2D g2 = b. createGraphics ();

g2.drawImage (bimage, null, 0,0);

g2.dispose ();

List> get = graphAction_step (b,.

packs.get (i).size (),.

packs.get (i).get (packs.get (i).size ()/2),.

pt, pt_last, defColour, dx, dy, stack+1,false, tmp_ways);

if (get ≠ null){.

List> out = new ArrayList ();

for (int j=0;j.

List trace_tmp = new ArrayList ();

trace_tmp.addAll (trace);

trace_tmp.addAll (get.get (j));

out.add (trace_tmp);

}.

end.addAll (out);

}.

}.

if (end.isEmpty ()){.

return null;

}.

return end;

}.

List> tmp;

if (iterations == 1 && previous ≠ null){.

tmp = getNextPoint_vectorAngelCriterion (packs, new Point (pt.x — previous. x, pt. y — previous. y),-2,pt);

if (tmp == null){.

tmp = new ArrayList ();

}.

}else{.

tmp = packs;

}.

if (!tmp.isEmpty ()){.

if (tmp.get (0).size ()>width){.

radius++;

iterations—;

}else{.

int best = (tmp.get (0).size ()-1)/2;

Point old_pt = pt;

//find the best point->

double s = -3;

int pVx = pt_last.x — pt. x;

int pVy = pt_last.y — pt. y;

double pL = sqrt (pow (pVx, 2) + pow (pVy, 2));

for (int j = 0;j.

Point middle = tmp. get (0).get (j);

int cVx = middle. x-pt.x;

int cVy = middle. y-pt.y;

double cL = sqrt (pow (cVx, 2) + pow (cVy, 2));

double s_tmp = ((double)pVx/pL)*((double)cVx/cL) +.

((double)pVy/pL)*((double)cVy/cL);

if (s_tmp>=s){.

s=s_tmp;

best = j;

}.

}.

// <-find the best point.

pt = tmp. get (0).get (best);

trace.add (new Point (old_pt.x +dx, old_pt.y +dy));

previous = old_pt;

}.

}else{.

pt = null;

}.

}.

}.

return null;

}.

private boolean isPtInBImg (BufferedImage bimage, int x, int y) x>(bimage.getWidth ()-1).

private Point toInitCord (Point in){.

in = new Point ((int)(in.x + x_init),(int)(in.y + y_init));

int w = (int)image_w;

int h = (int)image_h;

Dimension dim = this. getSize ();

double z = pow (0.9, zoom);

double sx = 1;

double sy = 1;

if (w>dim.width | h>dim.height){.

sx = dim. width/(double)w;

sy = dim. height/(double)h;

}.

double x_c = (dim.width)/2;

double y_c = (dim.height)/2;

double zx = 1/(z*sx);

double zy = 1/(z*sy);

double z_x_ord = (in.x — x_c)*zx+x_c;

double z_y_ord = -(-(in.y) + y_c)*zy+y_c;

Point out = new Point ((int)(z_x_ord),(int)(z_y_ord));

repaint ();

return out;

}.

private List> getNextPoint_vectorAngelCriterion (List> packs, Point vect, double minScal, Point pt){.

if (packs==null || packs. isEmpty ()){.

return null;

}.

List> result = null;

List> out = new ArrayList ();

if (vect ≠ null){.

double scalar = -2;

for (int i = 0;i.

double s = -3;

int pVx = vect. x;

int pVy = vect. y;

double pL = sqrt (pow (pVx, 2) + pow (pVy, 2));

//find the best point->

for (int j = 0;j.

Point middle = packs. get (i).get (j);

int cVx = middle. x-pt.x;

int cVy = middle. y-pt.y;

double cL = sqrt (pow (cVx, 2) + pow (cVy, 2));

double s_tmp = ((double)pVx/pL)*((double)cVx/cL) +.

((double)pVy/pL)*((double)cVy/cL);

if (s_tmp>=s){.

s=s_tmp;

}.

}.

// <-find the best point.

if (s>scalar && s>minScal){.

scalar = s;

out = new ArrayList ();

out.add (packs.get (i));

}.

}.

if (!out.isEmpty ()){.

result = out;

}.

}else{.

int d = 0;

List pack = new ArrayList ();

for (int i=0;i.

if (packs.get (i).size ()>d){.

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