Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пiдручник_РСПЗ_03_11.doc
Скачиваний:
30
Добавлен:
08.05.2019
Размер:
3.48 Mб
Скачать

2.2. Виділення і запис ознак стилізованих цифр

Виділення ознак стилізованих цифр полягає у визначенні наявності сегментів цих цифр в областях їх можливого розташування.

При виділенні сегментів стилізованих цифр слід враховувати можливі відхилення ліній цифр від направляючих ліній трафарету (зсуви, перекоси, хвилястість тощо). Наявність таких відхилень призводить до того, що області можливого розташування сегментів суттєво розширюються.

У зв’язку з цим, в процесі розпізнавання стилізованих цифр формуюються області пошуку ознак, розміри яких вибираються з урахуванням допустимих значень зазначених відхилень.

Частини зображень цифр, що потрапили в кожну з областей пошуку ознак, проглядаються через області виділення ознак (фільтри), що зміщуються від однієї межі області пошуку ознак до іншої у напрямі, перпендикулярному направляючій лінії трафарету.

На рис. 2.5 наведено послідовності положень областей виділення ознак в областях пошуку горизонтальних і вертикальних ознак у процесі розпізнавання.

Рисунок 2.5 – Послідовності положень областей виділення ознак

в областях пошуку ознак

У кожному положенні області виділення ознак формується проекція чорних елементів зображення, що потрапили в зазначену область, на її осьову лінію і підраховується довжина цієї проекції. Максимальна зі знайдених довжин порівнюється з пороговим числом (пороговими числами), за результатами цього порівняння виноситься рішення про наявність чи відсутність ознаки.

Використання фільтрів дозволяє суттєво знизити ймовірність помилкового виділення ознак, обумовлену наявністю перетинань областей сегментів, а заміна елементів ліній зображення їх проекціями на осьові лінії трафарету практично виключає вплив товщини ліній на прийняття рішень про наявність чи відсутність ознак.

При реалізації на ЕОМ алгоритм виділення будь-якої ознаки включає три цикли:

  • цикл 1 просування від однієї межі фільтра до іншої в напрямі, перпендикулярному відповідній осьовій лінії трафарету;

  • цикл 2 просування від однієї межі фільтра до іншої ї в напрямі, паралельному відповідній осьовій лінії трафарету;

  • цикл 3 зсуву фільтра від однієї межі області пошуку ознаки до іншої в напрямі, перпендикулярному відповідній осьовій лінії трафарету.

На рис. 2.6 наведено напрями обходу зображення в процесі виділення горизонтальних і вертикальних ознак.

Рисунок 2.6 – Напрями обходу зображення

Приймаючи до уваги, що при стандартному розмірі знака 5 х 10 мм номінальні протяжності горизонтальних і вертикальних ознак рівні і складають 5 мм, розміри усіх областей пошуку і виділення ознак визначаються значеннями: М = 7 мм, N = 3,5 мм, D = 1 мм.

З метою уніфікації алгоритмів виділення ознак, вертикальні ознаки розглядаються як горизонтальні, повернені на 90° проти стрілки годинника, внаслідок чого початкові точки обходу областей набувають значень, наведених на рис. 14.

Прийняття рішення про наявність чи відсутність ознаки Si може виконуватися шляхом порівняння знайденої довжини ознаки Li з одним (Р) або з двома (Р0, Р1) пороговими числами.

У першому випадку знайдена довжина ознаки Li порівнюється з пороговим числом Р. При Li Р приймається рішення про відсутність ознаки Si, при

Li Р – про її наявність.

У другому випадку знайдена довжина ознаки Li порівнюється з пороговими числами Р0 і Р1. При Li Р0 приймається рішення про відсутність ознаки Si, при Li Р1 – про її наявність, а при Р0Li Р1 – про потрапляння довжини ознаки у сумнівну область, тобто про невизначене значення ознаки Si.

На рис. 2.7 наведено ілюстрацію визначення значень ознак.

Рисунок 2.7 – Визначення значень ознак

Для значень ознак, наведених на рис. 15, у першому випадку будуть прийняті рішення про відсутність ознак S1, S2 і наявність ознак S3, S4, а у другому – про відсутність ознаки S1, наявність ознаки S4 і невизначені значення ознак S2 і S3.

Фактично, при двопороговому порівнянні значення ознак подаються не двійковими, а трійковими числами. Зазначена обставина враховується при проведенні класифікації одержаних ознак стилізованих цифр.

Алгоритм виділення горизонтальних і вертикальних ознак стилізованих цифр наведено на рис. 2.8.

Алгоритм містить 39 блоків на рівні мови Асемблер, яка дозволяє реалізувати його як на мікропроцесорах, так і на персональних ЕОМ.

У блоках 1...4 виконується підготовка чотирьох циклів обходу сегментів цифр.

У блоці 1 виконується підготовка четвертого (зовнішнього) циклу: номеру поточного сегмента NS присвоюється значення NS = 7, внаслідок чого готується виділення сьомого (нижнього правого вертикального) сегмента.

У блоці 2 виконується підготовка третього циклу: розраховуються адреса А і біт В початкової точки сегмента NS, обнульовується лічильник результату SR, а лічильнику циклу SN присвоюється його початкове значення SN = N - D.

У блоці 3 виконується підготовка другого циклу: формуються дублі адреси і біта початкової точки сегмента DA = A, DB = B, обнульовується поточний лічильник элементів сегмента ST, а лічильнику циклу SM присвоюється його початкове значення SM = M.

У блоці 4 виконується підготовка першого (внутрішнього) циклу: формуються другі дублі адреси і біта початкової точки сегмента DDA = DA, DDB = DB, обнульовується ознака проекції РР, а лічильнику циклу SD присвоюється його початкове значення SD = D.

У блоках 5...15 здійснюється перший цикл обходу сегмента NS.

У блоці 5 перевіряється значення ознаки проекції РР. При РР = 0 (у проекції відсутні чорні елементи) здійснюється перехід до блока 6, при РР = 1 (у проекції присутні чорні елементи) – до блока 9.

У блоці 6 виконується зчитування значення елемента Е зображення за DDA, DDB.

У блоці 7 аналізується значення зчитаного элемента Е. При Е = 1 – перехід до блока 8, при Е = 0 – до блока 9.

У блоці 8 значення поточного лічильника ST інкрементується на одиницю, а ознаці проекції РР присвоюється одиничне значення.

У блоці 9 значення лічильника циклу SD декрементується на одиницю.

У блоці 10 виконується перевірка закінчення циклу. При SD ≠ 0 (цикл не закінчено) – перехід до блока 11, при SD = 0 (цикл закінчено) – до блока 16.

У блоці 11 виконується вибір напряму руху. При NS < 4 (горизонтальний сегмент) – перехід до блока 12, при NS ≥ 4 (вертикальний сегмент) – до блока 15.

У блоці 12 значення DDB інкрементується на одиницю, внаслідок чого здійснюється просування у вертикальному напрямі зверху-вниз.

Рисунок 2.8 – Алгоритм виділення ознак стилізованих цифр

У блоці 13 перевіряється наявність виходу номера біта за межі комірки пам’яті. При DDB ≠ 0 (інкрементований біт залишається у комірці пам’яті) – повернення до блока 5, при DDB = 0 (інкрементований біт виходить за межі комірки пам’яті) – перехід до блока 14.

У блоці 14 значення DDA інкрементується на одиницю і здійснюється перехід до блока 5.

У блоці 15 значення DDA збільшується на число Q комірок пам’яті, що містять елементи одного рядка графічного зображення, внаслідок чого здійснюється просування в горизонтальному напрямі зліва-направо і здійснюється повернення до блока 5.

У блоках 16...22 здійснюється другий цикл обходу елементів сегмента NS.

У блоці 16 здійснюється вибір напряму руху. При NS < 4 (горизонтальний сегмент) – перехід до блока 17, при NS ≥ 4 (вертикальний сегмент) – до блока 18.

У блоці 17 значення DA збільшується на число Q комірок пам’яті, що містять елементи одного рядка графічного зображення, внаслідок чого здійснюється просування у горизонтальному напрямі зліва-направо.

У блоці 18 значення DB декрементується на одиницю, внаслідок чого здійснюється просування у вертикальному напрямі знизу-уверх.

У блоці 19 перевіряється наявність виходу номера біта за межі комірки пам’яті. При DBr - 1 (декрементований біт залишається у комірці пам’яті) – перехід до блока 21, при DB = r - 1 (декрементований біт виходить за межі комірки пам’яті) – до блока 20.

У блоці 20 значення DA декрементується на одиницю.

У блоці 21 значення лічильника циклу SM декрементується на одиницю.

У блоці 22 здійснюється перевірка закінчення циклу. При SM ≠ 0 (цикл не закінчено) – повернення до блока 4, при SM = 0 (цикл закінчено) – перехід до блока 23.

У блоках 23...31 виконується третій цикл обходу елементів сегмента NS і формування результату.

У блоці 23 порівнюються значення SR і ST. При SRST (раніше зафіксована протяжність сегмента більше або дорівнює поточній) – перехід до блока 25, при SR < ST (раніше зафіксована протяжність сегмента менше поточної) – до блока 24.

У блоці 24 лічильнику SR присвоюється значення ST.

Блоки 25, 26, 27, 28, 29 аналогічні блокам 11, 12, 13, 14, 15.

У блоці 30 значення лічильника цикла SN декрементується на одиницю.

У блоці 31 виконується перевірка закінчення циклу. При SN ≠ 0 (цикл не закінчено) – повернення до блока 3, при SN = 0 (цикл закінчено) – перехід до блока 32.

У блоках 32...39 здійснюється формування ознак (двопорогове порівняння) и четвертий цикл роботи алгоритму.

У блоці 32 значення SR порівнюється з нижнім порогом. При SR < P0 (ознака відсутня) – перехід до блока 33, у протилежному випадку – до блока 34.

У блоці 33 формується значення ознаки S = 0 і виконується перехід до блока 37.

У блоці 34 значення SR порівнюється з верхнім порогом. При SR ≥ Р1 (ознака присутня) – перехід до блока 35, у протилежному випадку – до блока 36.

У блоці 35 формується значення ознаки S = 1 і виконується перехід до блока 37.

У блоці 36 формується значення ознаки S = ?.

У блоці 37 виконується запис сформованого значення ознаки за адресою, що визначається номером сегмента NS.

У блоці 38 значення NS декрементується на одиницю, внаслідок чого готується виділення чергової ознаки.

У блоці 39 виконується перевірка закінчення формування всіх ознак. При NS ≠ 0 (сформовані не усі ознаки) – повернення до блока 2, при NS = 0 (сформовані усі ознаки) – закінчення роботи алгоритму.