ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния

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

Π’ Ρ…ΠΎΠ΄Π΅ изучСния возмоТностСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenCV Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² findContours для нахоТдСния полоТСния стСн ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΡΡŒΠΌΠΈΠ±ΠΈΡ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль кодируСтся 8 Π±ΠΈΡ‚Π°ΠΌΠΈ) — Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Ρ†Π²Π΅Ρ‚Π½ΠΎΠ³ΠΎ использовался ΠΌΠ΅Ρ‚ΠΎΠ΄ cvtColor… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

  • 1. Π’Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠ° Π»Π΅ΠΆΠΈΡ‚ Ρƒ Π½Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π·Π°ΠΌΠΈ: стСны ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π½ΠΎΠΉ ΠΆΠΈΡ€Π½ΠΎΠΉ;
  • 2. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом ΠΎΠ½ Π½Π°Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ своСго мобильного устройства Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΡƒ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΡƒΡŽ Π½Π° Π»ΠΈΡΡ‚Π΅ Π±ΡƒΠΌΠ°Π³ΠΈ;
  • 3. Π”Π°Π»Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΆΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΌΠ΅Ρ€Π° Π΅Π³ΠΎ устройства ΠΏΠΎΠΉΠΌΠ°Π΅Ρ‚ «Ρ„окус» ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Ρ€Π°Π·ΠΌΡ‹Ρ‚Ρ‹ΠΌ ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΈΠΌ;
  • 4. ПослС этого ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, которая Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ запустит ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ распознавания ΠΈ ΠΏΠΎΡΡ‚роСния 3D ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΠΊΠ΅Ρ‚Π° ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹. ВмСстС с ΡΡ‚ΠΈΠΌ происходит созданиС ΠΌΠ΅Ρ‚ΠΊΠΈ для позиционирования Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ;
  • 5. ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ распознаСтся, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ модСль Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹ Π½Π° ΡΠΊΡ€Π°Π½Π΅ мобильного устройства Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ОписаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° распознавания Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния

Как Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния OpenCV сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс для хранСния изобраТСния Mat. ВсС прСобразования ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π½ΠΈΠΌ.

Рассмотрим Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ распознавания ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΎΠΊ. Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.

Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Рисунок 2. Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Π’ Ρ…ΠΎΠ΄Π΅ изучСния возмоТностСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenCV Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² findContours для нахоТдСния полоТСния стСн ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΡΡŒΠΌΠΈΠ±ΠΈΡ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль кодируСтся 8 Π±ΠΈΡ‚Π°ΠΌΠΈ) — Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Ρ†Π²Π΅Ρ‚Π½ΠΎΠ³ΠΎ использовался ΠΌΠ΅Ρ‚ΠΎΠ΄ cvtColor. Π”Π°Π»Π΅Π΅, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ расходится Π½Π° Π΄Π²Π΅ Π²Π΅Ρ‚Π²ΠΈ: для ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΎΠΊ, стСны Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΎΠΉ ΠΈ Ρ‡Π΅Ρ€Π½ΠΎΠΉ ΠΆΠΈΡ€Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ стСн, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Ρ… ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ, использовался ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ изобраТСния ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ лишний Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ.

Рассмотрим, Ρ‡Ρ‚ΠΎ происходит с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ссли трСбуСтся Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΡƒ с ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²Ρ‹ΠΌΠΈ линиями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ располоТСниС стСн. Π’Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° cvtColor Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° adaptiveThreshold дСлаСтся инвСрсным ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль подвСргаСтся ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠΌ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ пиксСль ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π±Π΅Π»Ρ‹ΠΌ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ. Π”Π°Π»Π΅Π΅ примСняСтся функция delite, которая позволяСт с ΠΌΠ°ΡΠΊΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ количСство ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… пиксСлСй, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Π»ΠΈΠ·ΠΊΠΈ ΠΊ ΡΡ€Π΅Π΄Π½Π΅ΠΌΡƒ максимуму Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… маски. ПослС примСнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ становится Π±ΠΎΠ»Π΅Π΅ насыщСнным ΠΈ Π²ΡΠ΅ Π΅Π³ΠΎ элСмСнты Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ сильнСС Π±Π΅Π»Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Π”Π°Π»Π΅Π΅ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ morphologyEx, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ «Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ΡˆΡƒΠΌ» со Π²ΡΠ΅Ρ… Π±Π΅Π»Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ изобраТСния, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ стСны Π²Ρ‹Π΄Π΅Π»ΡΠ»ΠΈΡΡŒ Π½Π° Ρ„ΠΎΠ½Π΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ. ПослС этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ снова становится Π΅Π΄ΠΈΠ½Ρ‹ΠΌ, ΠΊΠ°ΠΊ для стСн исполнСнных ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ Π΄Π»Ρ стСн, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Ρ‡Π΅Ρ€Π½ΠΎΠΉ сплошной Π»ΠΈΠ½ΠΈΠ΅ΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ распознавания Π½Π΅ ΠΏΠΎΠΏΠ°Π»ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ лишнСго, ΠΊΡ€ΠΎΠΌΠ΅ самой ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ для нахоТдСния Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ², Π° ΠΈΠΌΠ΅Π½Π½ΠΎ findContours. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Ρ‡ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° Π²Ρ…ΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΡƒΡ… Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ получаСтся ΠΈΠ· ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Canny, ΠΈ ΠΎΠ½ Π½Π΅ всСгда срабатываСт ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ «Π½Π°ΠΉΡ‚ΠΈ» ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ нахоТдСния самого большого ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° изобраТСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹ вся ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π° ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ самым большим ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠΌ. Π­Ρ‚ΠΎ происходит простым ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ всСх распознанных ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ². ПослС нахоТдСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° происходит Π·Π°Π»ΠΈΠ²ΠΊΠ° Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ всСй ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части изобраТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ лишниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈ распознавании стСн.

НСпосрСдствСнно послС этого ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ распознавания стСн, ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ Ρ€Π°Π·Π½Ρ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° стСн. Для распознавания стСн, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Ρ… ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ использовался ΠΌΠ΅Ρ‚ΠΎΠ΄ wallDetector_hatch, Π° Π΄Π»Ρ стСн, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Ρ… сплошной Ρ‡Π΅Ρ€Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ — wallDetector_solid. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getStructuringElement ΠΈΠ· ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π±Ρ‹Π»ΠΈ «Π²Ρ‹Π΄Π΅Ρ€Π½ΡƒΡ‚Ρ‹» всС ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ ΡΠ²Π»ΡΡŽΡ‚ся искомыми стСнами. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€ класса Mat ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ walls. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ слоТный Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сначала распознаСт стСны ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ сплошной Π»ΠΈΠ½ΠΈΠ΅ΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ маски Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ‚Π΅ ΠΌΠ΅ΡΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся стСнами Π½Π° ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Благодаря этому ΠΏΡ€ΠΈΠ΅ΠΌΡƒ, с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ изобраТСния (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ€ класса Mat walls) ΡƒΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ лишниС Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ приняты Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ стСн.

ПослС продСлывания описанных дСйствий, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π΅Π»Ρ‹Π΅ очСртания стСн (вытянутыС ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ). ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Рисунок 3. ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π”Π°Π»Π΅Π΅ ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠ΅Π³ΠΎΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° findContours ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС изобраТСния. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ всС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ всСх стСн Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠ΅. Но ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π±ΠΎΠ»ΡŒΡˆΠΎΠ³ΠΎ количСства Ρ‚ΠΎΡ‡Π΅ΠΊ. Π­Ρ‚ΠΎ Π²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅Ρ‚очностям ΠΏΡ€ΠΈ построСнии 3D-ΠΌΠΎΠ΄Π΅Π»ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ стСны Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒΡΡ Π½Π΅Ρ€ΠΎΠ²Π½ΠΎΠΉ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΡΠΎΠΎΡ‚вСтствуСт исходной ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠ΅. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ contours_points класса ModelBuilder. Он ΡƒΠ΄Π°Π»ΡΠ΅Ρ‚ лишниС Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° для достиТСния Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²Π΄ΠΈΠ²ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° построСния Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π£Π΄Π°Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΡƒΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ большС 115 градусов.

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

ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния.
ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ всС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ списков Point — counter_wall, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Π½Π΅ΠΌ хранятся списки Ρ‚ΠΈΠΏΠ° Point (Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ x ΠΈ y), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°ΠΌ. ИмСя всС Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Ρ‚Π°ΠΊΠΎΠΌ спискС Π»Π΅Π³ΠΊΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит XΠΈ Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ вСртСксов искомой 3D-ΠΌΠΎΠ΄Π΅Π»ΠΈ. Z-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° приравниваСтся ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ статичСскому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ высоту выдавливания, ΠΎΠ½ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ‚ся ΠΎΡ‚ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠ΅.

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

Для распознавания Π΄Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΌΠΎΠ² Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠ΅, Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ создан ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ doorDetector, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ встроСнныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ OpenCV. Π’ ΡΡ‚ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ΅ΠΌ поиска ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ matchShapes. Он ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ изобраТСния, Π° Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π² Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ хранится шаблон Π΄Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΌΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сравнивания с ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°ΠΌΠΈ изобраТСния. Он ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.

Π¨Π°Π±Π»ΠΎΠ½ для поиска Π΄Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΌΠΎΠ².

Рисунок 4. Π¨Π°Π±Π»ΠΎΠ½ для поиска Π΄Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΌΠΎΠ².

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сначала Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ самый большой ΠΊΠΎΠ½Ρ‚ΡƒΡ€ шаблона, Π·Π°Ρ‚Π΅ΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° изобраТСния с ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ мобильного устройства. Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ изобраТСния Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° findContours. ПослС этого ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ функция matchShapes сравниваСт ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ изобраТСния с ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ поиск Π΄Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΌΠΎΠ².

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

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 5 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ вСсь Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ распознавания стСн ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния.

Рисунок 5. Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния.

Рассмотрим, ΠΊΠ°ΠΊ строится конСчная 3D-модСль ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹. ИмСя массив Ρ‚ΠΎΡ‡Π΅ΠΊ verts ΠΈ ΠΌΠ°ΡΡΠΈΠ² Π½ΠΎΡ€ΠΌΠ°Π»Π΅ΠΉ normals, пСрСдавая ΠΈΡ… Π² ΠΊΠ»Π°ΡΡ ModelShape, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт GLSurfaceView. Renderer ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ модСль Π½Π° ΡΠΊΡ€Π°Π½Π΅ мобильного устройства. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ verts ΠΈΠ΄ΡƒΡ‚ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС: сначала ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° x, ΠΏΠΎΡ‚ΠΎΠΌ y ΠΈ ΡΠΎΠΎΡ‚вСтствСнно z. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ Ρ‚Ρ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнта массива ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ вСртСкс. Π”Π΅Π²ΡΡ‚ΡŒ ΠΈΠ΄ΡƒΡ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ элСмСнтов — ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Массив составлСн Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Π΅Π³ΠΎ числа Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ модСль ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹. Массив Π½ΠΎΡ€ΠΌΠ°Π»Π΅ΠΉ описываСт Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ вСртСкса. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для расчСта Ρ†Π²Π΅Ρ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, для Π±ΠΎΠ»Π΅Π΅ рСалистичного восприятия.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ модСль ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹ Π² ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ «STL» Π½ΡƒΠΆΠ½ΠΎ просто Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ‚Скстовый Ρ„Π°ΠΉΠ» ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ порядкС. Рассмотрим структуру, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» «STL». ВсСгда Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄Ρ‚ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, состоящий ΠΈΠ· 80 Π±Π°ΠΉΡ‚, Π·Π°Ρ‚Π΅ΠΌ количСство Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² (ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ²) — Ρ†Π΅Π»ΠΎΠ΅ число (Int). Π”Π°Π»Π΅Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ описываСтся Π΄Π²Π΅Π½Π°Π΄Ρ†Π°Ρ‚ΡŒΡŽ 32 Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой: 3 числа для Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ ΠΈ ΠΏΠΎ 3 числа Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ для X/Y/Z ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. ПослС этого Π² Ρ„Π°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ΄Ρ‚ΠΈ 2 Π±Π°ΠΉΡ‚Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ «short».

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