Следует заметить, что если на «особость» мы будем проверять только текущую точку (x,y), то при составлении топологического кода мы можем пропустить некоторые особые точки, например в букве «Ф» мы пропустим «триод» (A=3) и «крест» (A=4), как это показано на рис. 3. Но и проверять все соседние точки так же не целесообразно. Выходом из этой ситуации является проверка соседних точек с номерами 2, 4 и 6, если мы пришли с четного номера точки направления входа и с номерами 1, 3 и 5 в противном случае. Фактически же это будут одни и те же точки. Без учета поворотов на 90º их можно изобразить следующим образом (рис. 4).
Рис. 4. Проверка дополнительных точек
До сих пор мы не определили критерий остановки алгоритма. Пусть алгоритм заканчивает свою работу, когда мы вновь придем в начальную точку. Причем, согласно замечанию в алгоритме Павлидиса (Theo Pavlidis, 1982, [14]), мы должны выбирать начальную точку так, что бы она была концевой (для определенности, самой правой нижней из концевых). Кроме того, входить в нее следует с направлений L, W и R, как это показано на рис. 5. Причем если в образе не присутствует концевых точек, для определенности, начальной будем считать самую правую нижнюю точку образа.
Рис. 5. Ситуация с начальной точкой
Выбор начальной точки подразумевает, что мы проверяем все точки образа на «особость» еще до обхода контура, следовательно, проверку на «особость» в процессе обхода контура можно не делать, а просто производить проверку по массиву особых точек, что ускорит работу программы.
Таким образом, после выполнения алгоритма выделения контура, мы имеем набор особых точек и топологический код символа, по которым и производится распознавание. Кроме того, для улучшения качества распознавания могут использоваться некоторые дополнительные характеристики особых точек [15].







