ИСПОЛЬЗОВАНИе ИНТЕРФЕЙСА ЛОГИЧЕСКОГО И ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ ДЛЯ АНАЛИЗА ИЗОБРАЖЕНИЙ ГЕОМЕТРИЧЕСКИХ ТЕЛ

Н.Г. Волченков

Национальный исследовательский ядерный университет НИЯУ «МИФИ»

 

Содержание

Введение

1. Теоретические основы использования логического программирования для обработки изображений

1.1 DCG – механизм синтаксического анализа в логическом программировании

1.2 Использование механизмов Pattern matching и Backtracking

2. Технология практической реализации и полученные результаты

2.1 Реализация этапов предварительной обработки изображения

2.2 Реализация этапа структурного анализа изображения

2.3 Реализация этапа заключительной обработки изображения

3. Государственная регистрация программы

Заключение

Список литературы

 

Аннотация

Логическое программирование (в частности, язык Пролог) можно использовать для анализа изображений, для которых легко могут быть построены описания в виде текстов на поддающихся синтаксическому анализу языках. Для усиления выразительности представления исходных данных и результатов такого анализа «в помощь» Прологу целесообразно привлечь какой-либо визуальный язык программирования, например, Visual Basic. Результатом синтаксического анализа может быть не только перечень отдельных тел на изображении, но также их координаты, размеры, цвета. Эти данные могут быть полезными, например, для робота-манипулятора. В качестве примера класса тел, изображения которых поддаются указанному анализу, в работе рассматриваются геометрические тела в виде окрашенных в локальные цвета призм и цилиндров с вырезами и отверстиями. В работе приводятся примеры исходных растровых изображений, их промежуточное векторное представление и полученный результат – списки выявленных тел с указанными характеристиками.

 

Ключевые слова: структурные (синтаксические) методы анализа изображений, структурное описание изображения, растровое изображение, векторное изображение, полигон, логическое программирование, язык Пролог, визуальное программирование, язык Visual Basic.

 

Введение

 

Перед промышленным роботом-манипулятором может возникнуть «интеллектуальная» задача проанализировать изображение совокупности различных предметов, находящихся в его поле зрения, выделить из них нужный предмет, оценить его размер и расположение относительно других предметов, чтобы спланировать свои действия по его захвату и переносу. Для решения этой задачи робот может обладать лишь растровым изображением, полученным с видеокамеры. На рисунке 1 показаны примеры таких изображений.

 

а)

б)

Рис. 1. Примеры растровых изображений а) 4-х предметов и б) двух предметов

 

В результате анализа изображения, должны быть получены ответы на вопросы:

·         Сколько изображений на изображении?

·         Каковы размеры и цвет каждого изображения?

·         Каковы координаты центра тяжести каждого изображения?

В перспективе, может быть поставлен и такой вопрос: каково взаимное расположение тел? (Он важен в том смысле, что роботу приходится, например, решать задачу по освобождению захватываемого тела.)

Среди различных подходов к программированию анализа изображения для получения ответов на перечисленные выше вопросы можно предложить синтаксический (структурный, морфологический) подход на базе логического программирования [1, 2, 3, 4].

Почему выбрано именно это направление? Ведь помимо синтаксического подхода существуют и другие. Например, подход, основанный на нейронных сетях, дискриминантный подход и т.д.

Для обоснования этого выбора отметим, что автор данной статьи на протяжении многих лет читает курс «Логическое программирование. Язык Пролог» студентам кафедры «Кибернетика» НИЯУ МИФИ. Главная цель, которая ставится при изучении данного курса – это освоение студентами нетрадиционной парадигмы декларативного программирования [5], принципиально отличной от традиционной парадигмы императивного программирования.

Хотя языки декларативного программирования (в частности, язык Пролог) являются алгоритмически полными, их главное предназначение – решение не вычислительных задач, а задач символьной обработки, характерных для систем искусственного интеллекта [1, 4]. Особенностями решения этих задач, как правило, являются использование эвристических алгоритмов, требующих применения специфических механизмов. К ним относятся:

·         сопоставление образцов (сложных структур данных),

·         автоматический возврат при попадании решателя в тупиковые ситуации,

·         рекурсивные методы программирования.

По мнению автора статьи, широкое применение указанных механизмов и позволяет говорить о декларативном программировании как о языке искусственного интеллекта.

В силу того, что среди тем, которые включены в курс «Логическое программирование» [3], есть тема «Использование алгоритмов на Прологе при решении задач искусственного интеллекта», рассмотренная выше задача анализа изображений геометрических тел может служить достаточно ярким примером задач указанного класса. Поэтому, полученные автором результаты по созданию демонстрационного прототипа «интеллектуальной» составляющей системы анализа изображений геометрических тел [9, 10] могут служить хорошей основой для усвоения важнейшего компонента этого курса – навыков практического применения декларативного подхода к программированию многих задач искусственного интеллекта.

Многолетний опыт использования языков функционального и логического программирования для решения задач символьной обработки привел к пониманию необходимости визуализации результатов решения многих практических задач этого класса. Без визуализации интерпретация этих результатов бывает крайне затруднительной.

Приведенный выше пример задачи анализа изображений, как показано в данной статье, является иллюстрацией необходимости такого рода визуализации. В частности, для решения проблемы визуализации предлагается интерфейс двух языков программирования – языка логического программирования (Пролога) и визуального императивного языка программирования (Visual Basic), точнее, двух систем программирования для указанных языков [7, 8]. Пролог используется для решения основной, «интеллектуальной» части задачи. Visual Basic – для проведения вычислений, дополняющих логический вывод, а также для формирования наглядного представления результатов этого вывода.

 

1. Теоретические основы использования логического программирования для обработки изображений

 

Логическое программирование целесообразно применять для распознавания образов (в данном случае, для распознавания и анализа изображений, принадлежащих достаточно распространённым и многочисленным классам) в том случае, когда эти образы весьма сложны, а их распознавание требует рассмотрения очень большого числа признаков [6]. При этом традиционный для решения задач распознавания так называемый дискриминантный подход, основанный на разбиении пространства признаков на области и отнесении образа к той или иной области, работает не очень эффективно. (Отметим, что далее в статье, термин «образ» будет повсеместно заменён на термин «изображение».)

Изображения указанных выше классов отличаются той особенностью, что их можно интерпретировать как иерархические древовидные структуры, в которых корнем растущего вниз дерева является объект – образ всего изображения. Дочерними вершинами корня являются более простые подобразы, из которых он состоит. Дочерними вершинами этих подобразов являются ещё более простые подобразы и т.д. «Висячие» вершины дерева – это так называемые непроизводные элементы – простейшие неделимые далее части изображения. Для их описания могут быть предложены простые символьные структуры типа: f(x1, …, xn). Будем называть их терминальными символами.

Всё изображение удобно представлять в виде символьных текстов (цепочек), состоящих только из терминальных символов и знаков операций между ними, указывающих на способы соединения непроизводных элементов между собой. Как правило, после технически несложных преобразований описания изображений указанных выше классов могут быть сведены к таким символьным цепочкам.

Пример 1.1. Терминальные символы для непроизводных элементов (рисунок 2, а), изображение буквы «А» (рисунок 2, б) и его представление в виде текста – цепочки терминальных символов (рисунок 2 в).

 

R + ((R + L) * H) + L

а)

б)

в)

Рис. 2. Непроизводные элементы (а); изображение, состоящие из этих элементов (б) и цепочка терминальных символов (в)

 

В этом примере использованы бинарные операции конкатенации непроизводных элементов языка описания изображений PDL (Picture Description Language), разработанного Аланом Шоу [11]. Каждый непроизводный элемент помечается двумя точками: головной (head) и хвостовой (tail).  Из всех операций в данном примере используется только две: + и *. Смысл этих операций таков:

·         «a + b» - головная точка a примыкает к хвостовой точке b, хвостовая точка a становится хвостовой точкой результата; головная точка b становится головной точкой результата;

·         «a * b» - головная точка a примыкает к головной точке b, а хвостовая точка a примыкает к хвостовой точке b. Их головная и хвостовая точки становятся головной и хвостовой точками результата.

 

1.1 DCG – механизм синтаксического анализа в логическом программировании

 

Наиболее наглядный и эффективный путь получения результатов при структурном (синтаксическом) распознавании и анализе образов (изображений, в частности) заключается в использовании формальных грамматик для порождения иерархических структур, о которых шла речь выше. Цепочка терминальных символов, соответствующих непроизводным элементам, из которых состоит анализируемое изображение, а также знакам операций между ними – подобным тем, которые представлены в примере 1.1, – считается текстом формального языка. Этот язык и определяет класс изображений. Изображение считается «распознанным», если каким-то образом удалось доказать, что описывающий его текст принадлежит этому языку.

Порождающей грамматикой [3, 4] называется следующая четверка:

G = <VT, VN, S, P>,

где VT, VN – соответственно, терминальный и нетерминальный словари, S – начальный символ, P = {ai  ® bi} – множество правил вывода, причём aiцепочка, содержащая нетерминальный символ, bi – произвольная цепочка из терминальных и нетерминальных символов.

Непосредственным порождением называется отношение

l  Þ m,

где   l = d1 ai  d2,      m = d1  bi  d2     и существует правило:  ai bi.

Порождением называется отношение

g Þ* gn,                 n = 1, 2, ...

если существует последовательность отношений

g  Þ  g1 Þ ... Þ gn.

Языком, порождаемым грамматикой G, называется следующее множество:

L(G) = {g | S Þ* g}

(множество терминальных цепочек g – цепочек, состоящих только из символов терминального словаря VT).

Грамматики и языки подразделяют на типы. В практических задачах наиболее часто используются грамматики и языки следующих трех типов.

Типы грамматик:

·         Если нетерминальный символ в левой части какого-либо правила грамматики находится в окружении других символов (терминальных и/или нетерминальных), то такая грамматика называется контекстно-зависимой.

·         Грамматика называется контекстно-свободной, если левая часть каждого правила вывода этой грамматики – это цепочка, состоящая из единственного нетерминального символа.

·         Контекстно-свободная грамматика называется автоматной, если каждое правило вывода этой грамматики имеет следующий вид:

А ® аВ  или А ® а  или А ® l,

где A, B – нетерминальные символы, a – терминальный символ,

λ – пустая цепочка.

Типы языков:

·         Язык называется автоматным, если для его порождения можно построить автоматную грамматику. (Разумеется, для порождения этого языка можно построить грамматики и других типов.)

·         Язык называется контекстно-свободным, если для его порождения можно построить контекстно-свободную грамматику, но нельзя построить автоматную грамматику.

·         Язык называется контекстно-зависимым, если для его порождения нельзя построить контекстно-свободной грамматики.

В язык Пролог встроен специальный механизм, позволяющий строить эффективные нисходящие синтаксические анализаторы для языков, определяемых формальными грамматиками различных типов. Это механизмом DCG – Definite Clause Grammar [1, 3, 4]. Его наличие позволяет создавать эффективно работающие нисходящие грамматические разборщики на Прологе. Главное достоинство использования указанного механизма для распознавания и анализа изображений – это широкое использование рекурсивных правил в порождающих грамматиках вообще, и в правилах подъязыка DCG Пролога в частности. Их отсутствие сделало бы решение задачи распознавания изображений с большим числом регулярно повторяющихся комбинаций тел весьма проблематичным.

Пример 1.2. Изображение совокупности геометрических тел («пирамиды» из 4-х кубиков) с регулярно повторяющимся фрагментом демонстрирует рисунок 3. Далее, приводится грамматика с рекурсивными правилами, порождающая описание класса подобных изображений с произвольным числом повторений («пирамиды» из произвольного числа кубиков).

 

Рис. 3. Изображение с регулярно повторяющимся фрагментом («пирамида» из кубиков)

 

Pir à Cube | DCube + Sub + Pir

Cube à LSide * HSide * RSide

DCube à LSide * HPSide * SR

LSide à ( s + nw + n + so )

RSide à ( no + s + sw + n )

HSide à ( nw + no + so + sw )

HPSide à ( nw + no + so + sw ) | ( nw + no + s + so + no + so + sw ) |

         ( nw + no + so + no + n + so + sw ) | ( nw + no + s + so + no + n + so + sw )

Sub à nw | n | no

Здесь используются те же 2 операции («+» и «*») языка PDL,что и в примере 1.1. В соответствии с семантикой этих операций точки t и h для образа каждого кубика находятся точно в месте соединения трёх видимых его граней.

Смысл обозначений восьми непроизводных элементов (стрелок) объяснять не нужно – это стороны света: n – nord, no – nord-ost и т.д.

Нетерминальный символ Sub соответствует виртуальному, невидимому элементу  – он указывает на то, что очередной кубик DCube, считая снизу-вверх, с «загороженной» верхней гранью HPSide находится под пирамидой Pir. Нетерминал Cube означает кубик со свободной верхней гранью – это вершина пирамиды.

 

1.2 Использование механизмов Pattern matching и Backtracking

 

При решении задачи анализа изображений совокупности геометрических тел, рассмотренной в данной статье, автору удалось исключить необходимость использования имеющегося в Прологе механизма программирования синтаксического анализа с помощью подъязыка DCG. Вместо этого были использованы широкие возможности таких механизмов как Pattern matching (сопоставления образцов) в логическом программировании, – и Backtracking (автоматического возврата) в логическом программировании.

В частности:

·         Pattern matching (сопоставление образцов), при наличии большого разнообразия форм структур данных, развито в Прологе очень сильно. Оно позволяет строить многочисленные гипотезы относительно тех или иных свойств различных непроизводных элементов описания изображения. Например, свойством вертикального отрезка на контурном изображении может быть, как будет показано в следующем разделе статьи, одна из 4-х альтернатив: (1) выпуклая поверхность из двух плоских граней одного тела; (2) вогнутая поверхность из двух плоских граней одного тела; (3) вертикальная граница между телом и фоном справа; вертикальная граница между телом и фоном слева. Принятие одной из этих гипотез может ограничить в дальнейшем количество выбираемых гипотез для другого ребра и т.д.

·         Backtracking (автоматический возврат) начинает эффективно работать (и это не требует программирования!), если принятие той или иной гипотезы относительно свойства отрезка на контурном изображении окажется неудачным и заведёт в тупик. Анализатор, реализованный  на Прологе, вернётся в точку выбора альтернативной гипотезы и процесс анализа будет продолжен – до появления удачного сопоставления.

 

2. Технология практической реализации и полученные результаты

 

При практической реализации рассмотренного в данной статье прототипа демонстрационной системы анализа изображений геометрических тел процесс анализа был разбит на несколько этапов, которые будут подробно рассмотрены в данном разделе. Это:

·         три этапа предварительной обработки изображения;

·         этап структурного анализа изображения;

·         этап заключительной обработки изображения.

(Отметим, что в статье автора 2010 г. [10] приведены первые результаты, полученные при разработке данного прототипа демонстрационной программной системы.)

 

2.1 Реализация этапов предварительной обработки изображения

 

Предварительная обработка изображения – это его преобразование к форме, удобной для применения структурного метода его анализа. Он состоит из 3-х этапов.

Этап 1. Путём сканирования на изображении выделяются все узлы – вершины однородно окрашенных связных областей – «полигонов». Необходимо выделить списки пар этих точек – отрезков полигонов и вычислить усреднённый цвет каждого полигона.

Этап 2. Производится перевод растрового изображения в векторное, состоящее из: (1) множества описаний и (2) списка всех вершин.

Продемонстрируем указанные действия на примере.

Пример 2.1. Рассмотрим векторное изображение, полученное после обработки растрового изображения, показанного на рисунке 1, б).

Номер каждого из десяти полигонов указан под одной из его вершин.

Pic900 

Рис. 4. Векторное изображение, полученное после обработки растрового изображения, показанного на рисунке 1, б)

Векторное изображение, показанное на рис. 4, может быть представлено следующими двумя списками:

·         Список полигонов в форме: p(<a>,<r>,<g>,<b>) [<список номеров вершин>]:

p(200,150,000,000) [1,2,3,4]

p(200,255,000,000) [2,5,6,7,8,9,3]

p(200,255,080,080) [4,3,9,10]

p(200,150,000,000) [10,9,8,11]

p(200,000,150,000) [6,12,13,14,15,7]

p(200,255,080,080) [11,8,7,15,16]

p(200,000,255,000) [12,17,18,13]

p(200,080,255,080) [19,14,13,18,19,20,21,22,23,24,20]

p(200,000,150,000) [23,22,21,20]

p(200,000,255,000) [24,23,20]

·         Список вершин в форме: n(<x>, <y>):


n(010,100)

n(010,210)

n(070,180)

n(070,070)

n(130,270)

n(150,260)

n(250,210)

n(190,180)

n(130,210)

n(130,100)

n(190,070)

n(150,310)

n(270,250)

n(270,110)

n(250,120)

n(250,100)

n(270,370)

n(390,310)

n(390,170)

n(360,185)

n(360,265)

n(300,235)

n(300,215)

n(300,155)


Этап 3. Считая отрезки полигонов рёбрами некоторых тел, для каждого из этих отрезков устанавливается описание-образец. Это описание предлагается представлять в виде структуры f(a1, a2, a3) с тремя аргументами языка Пролог [3, 4, 5].

Функтор структуры f – это тип ребра: vr, pr или nr. Соответственно, вертикальное, поднимающееся вправо или опускающееся вправо ребро – как показано на рис. 5 – а), б), в).

 

Рис. 5. Три типа ребер данного класса изображений

 

Аргументы a1 и a2 структуры – это либо «фон» (константа fon), либо характеристики поверхностей, находящихся, соответственно, слева и справа от ребра. Например: левая_грань:тело1, верхняя_грань:тело1, правая_грань:тело2.

Аргумент a3 структуры – это свойство ребра – одно из 4-х значений: up (направленное вверх), down (направленное вниз), posit (выпуклое), negat (вогнутое). Первые два из них относятся к ребрам на границе изображения тела, если условиться обходить каждый полигон по часовой стрелке. А последние два из них относятся к ребрам, соответственно, для выпуклой или для вогнутой поверхности одного тела.

Например, 1-й отрезок 1-го полигона приведённого примера – это вертикальное ребро, имеющее описание: vr(fon, левая_грань:тело1, up); а 2-й отрезок 1-го полигона и 7-й отрезок 2-го полигона приведённого примера – это одно ребро, имеющее описание: nr(левая_грань:тело1, верхняя_грань:тело1, positive).

Разумеется, на данном этапе предварительной обработки изображения задача получения указанных описаний не решается – это задача более позднего, «интеллектуального» этапа анализа изображения. На данном этапе строятся лишь «шаблоны» структур, которые должны быть сопоставимы с указанными выше. В этих «шаблонах» все 3 аргумента – это переменные (в смысле Пролога), которые могут принимать разные значения. Например, для представленных выше двух описаний рёбер на предварительном этапе будут построены следующие структуры: vr(fon, R1, E1), nr(R1, R2, E2).

Полный список таких структур для изображения, показанного на рисунке 4, построенный на данном этапе, содержит следующие элементы:


vr(fon,R01,E01),

nr(R01,R02,E02),

vr(R01,R03,E03),

nr(fon,R01,E04),

pr(fon,R02,E05),

nr(R02,fon,E06),

nr(R02,R05,E07),

pr(R02,R06,E08),

nr(R04,R02,E09),

pr(R02,R03,E10),

vr(R03,R04,E14),

pr(R03,fon,E15),

vr(R04,R06,E18),

nr(fon,R04,E19),

vr(fon,R05,E20),

nr(R05,R07,E21),

vr(R05,R08,E22),

nr(fon,R05,E23),

vr(R06,R05,E24),

vr(R06,fon,E29),

pr(R06,fon,E30),

pr(fon,R07,E31),

nr(R07,fon,E32),

pr(R07,R08,E33),

pr(R08,fon,E35),

vr(R08,fon,E38),

vr(R09,R08,E40),

pr(R08,R09,E41),

vr(R08,R09,E42),

vr(R08,R10,E43),

pr(R10,R08,E44),

nr(R10,R09,E49).


(Список получен после объединения дубликатов – описаний одних и тех же рёбер, полученных в процессе анализа разных полигонов.)

 

2.2 Реализация этапа структурного анализа изображения

 

Этап 4. К полученному множеству описаний рёбер применяется эффективная процедура анализа, основанная на сопоставлении образцов, разработанная на Прологе. Идея принадлежат Д.Уоррену (D.H.D.Warren, 1977) [2]. Логическая программа содержит определения ряда образцов, сопоставимых с описаниями, полученными на этапе 2.

Условно, можно назвать совокупность указанных определений Пролога грамматикой, с помощью которой реализуется анализ изображений данного класса. (Как отмечено в разд.1 настоящей статьи, синтаксический подход к распознаванию образов достаточно полно изложен в монографии К.Фу [6].) Уорреном был предложен набор такого рода образцов для простого класса изображений нескольких тел с плоскими гранями. Он содержит всего 12 утверждений в виде фактов Пролога:

vr(левая:B, правая:B, posit).

vr(правая:B1, левая:B2, negat).

vr(правая:B, X, down).

vr(X, левая:B, up).

pr(горизонтальная:B, правая:B, posit).

pr(правая:B1, горизонтальная:B2, negat).

pr(X, горизонтальная:B, up).

pr(правая:B, X, down).

nr(левая:B, горизонтальная:B, posit).

nr(горизонтальная:B1, левая:B2, negat).

nr(горизонтальная:B, X, down).

nr(X, левая:B, up).

Для связывания одноименных переменных все описания ребер анализируемого текста (описания изображения) должны быть включены в одно целевое утверждение Пролога. Для этого Уоррен предложил представлять список дуг как правую часть единственного правила Пролога. Например, так:

solution(R01;R02;R03;R04;R05;R06;R07;R08;R09;R10):-


vr(fon,R01,E01),

nr(R01,R02,E02),

vr(R01,R03,E03),

nr(fon,R01,E04),

pr(fon,R02,E05),

nr(R02,fon,E06),

nr(R02,R05,E07),

pr(R02,R06,E08),

nr(R04,R02,E09),

pr(R02,R03,E10),

vr(R03,R04,E14),

pr(R03,fon,E15),

vr(R04,R06,E18),

nr(fon,R04,E19),

vr(fon,R05,E20),

nr(R05,R07,E21),

vr(R05,R08,E22),

nr(fon,R05,E23),

vr(R06,R05,E24),

vr(R06,fon,E29),

pr(R06,fon,E30),

pr(fon,R07,E31),

nr(R07,fon,E32),

pr(R07,R08,E33),

pr(R08,fon,E35),

vr(R08,fon,E38),

vr(R09,R08,E40),

pr(R08,R09,E41),

vr(R08,R09,E42),

vr(R08,R10,E43),

pr(R10,R08,E44),

nr(R10,R09,E49).


 

Автор расширил грамматику Уоррена для более широкого класса тел. Например, кроме призм, подобных тем, которые показаны на рисунке 1, автор рассматривает и цилиндрические тела. Кроме того, горизонтальные поверхности могут быть как верхними, так и нижними. Для того, чтобы не увеличивать число примитивов (рисунок 5), автор предлагает заменять дуги эллипсов их кусочно-линейной аппроксимацией, которая может быть достаточно грубой – такой, например, которая показана на рисунке 6. Число утверждений-образцов грамматики при этом увеличивается с 12 до 48:


vr(левая:B, правая:B, posit).

vr(правая:B1, левая:B2, negat).

vr(правая:B, X, down).

vr(X, левая:B, up).

vr(верт_цил:B, X, down).

vr(X, верт_цил:B, up).

pr(верхняя:B, правая:B, posit).

pr(левая:B, нижняя:B, posit).

pr(правая:B1, верхняя:B2, negat).

pr(нижняя:B1, левая:B2, negat).

pr(верхняя:B, верт_цил:B, posit).

pr(X, верхняя:B, up).

pr(X, левая:B, up).

pr(правая:B, X, down).

pr(левая:B, X, down).

pr(левая:B, прав_цил:B, posit).

pr(лев_цил:B, правая:B, posit).

pr(прав_цил:B, X, down).

pr(X, прав_цил:B, up).

pr(X, лев_цил:B, up).

pr(правая:B1, лев_цил:B2, up).

pr(прав_цил:B1, левая:B2, down).

pr(нижняя:B, X, down).

pr(верт_цил:B, X, down).

pr(X, верт_цил:B, up).

pr(верт_цил:B, верхняя:B, down).

pr(нижняя:B, верт_цил:B, up).

nr(левая:B, верхняя:B, posit).

nr(нижняя:B, правая:B, posit).

nr(верхняя:B1, левая:B2, negat).

nr(правая:B1, нижняя:B2, negat).

nr(верт_цил:B, верхняя:B, posit).

nr(верхняя:B, X, down).

nr(правая:B, X, down).

nr(X, левая:B, up).

nr(X, правая:B, up).

nr(лев_цил:B, правая:B, posit).

nr(левая:B, прав_цил:B, posit).

nr(X, лев_цил:B, up).

nr(лев_цил:B, X, down).

nr(прав_цил:B, X, down).

nr(прав_цил:B1, левая:B2, down).

nr(правая:B1, лев_цил:B2, up).

nr(X, нижняя:B, up).

nr(X, верт_цил:B, up).

nr(верт_цил:B, X, down).

nr(верхняя:B, верт_цил:B, up).

nr(верт_цил:B, нижняя:B, down)


 

Pic953

Pic502-s

Рис. 6. Примеры изображений тел с «аппроксимированными» цилиндрическими поверхностями

 

Заложенный в Пролог механизм эффективного перебора с использованием рассмотренных в разд. 1.3 механизмов Pattern Matching и Backtracking, позволяет найти единственный вариант сопоставления. Оно заключается в выявлении значений переменных R1, R2, … у всех граней (поверхностей) каждого тела, которые имеют определённую ориентацию (верхних, нижних, правых, левых, различного рода цилиндрических), а также выявление свойств рёбер – значений переменных E1, E2, …

В рассмотренном примере (рисунок 4), это сопоставление приводит к единственному результату. Приведём этот результат лишь для первых трёх и для последних трёх рёбер:

vr(fon,R01,E01) ↔ vr(fon, левая_грань:тело1, up),

nr(R01,R02,E02) ↔ nr(левая_грань:тело1, верхняя_грань:тело1, posit),

vr(R01,R03,E03) ↔ vr(левая_грань:тело1, правая_грань:тело1, posit),

vr(R08,R10,E43) ↔ vr(правая_грань:тело2, верхняя_грань:тело2, down),

pr(R10,R08,E44) ↔ pr(верхняя_грань:тело2, правая_грань:тело2, posit),

nr(R10,R09,E49) ↔ nr(верхняя_грань:тело2, левая_грань:тело2, negat).

Данный результат легко обобщить – перечислить все полигоны изображения с указанием того, к каким выявленным телам они принадлежат. Для данного примера таким обобщенным результатом является следующий список:


R01:[01,левая_грань].

R02:[01,верхняя_грань].

R03:[01,правая_грань].

R04:[01,левая_грань].

R05:[02,левая_грань].

R06:[01,правая_грань].

R07:[02,верхняя_грань].

R08:[02,правая_грань].

R09:[02,левая_грань].

R10:[02,верхняя_грань].

 

 


2.3 Реализация этапа заключительной обработки изображения

 

Оценивание размеров и цвета тел на изображении производится на 5-м, заключительном этапе анализа.

Этап 5. Размеры тел оцениваются как некие усреднённые характеристики площадей их видимых граней (поверхностей), а также координаты их «условных центров тяжести». В случае возникновения неоднозначностей (интерпретации нескольких разобщённых частей одного тела как нескольких тел) они устраняются с помощью анализа цвета этих частей. Цвет каждого тела устанавливается также как усреднённый цвет всех его граней (поверхностей). Соотношение значений составляющих цвета (R, G и B) позволяет устанавливать значение лингвистической переменной «цвет» для каждого выявленного тела. Например, обобщенный результат анализа изображения, приведенного на рис.2, следующий:

Тело 01 : (132, 155) : 054 : c(200, 213, 032, 032) : red

Тело 02 : (296, 227) : 086 : c(200, 016, 213, 016) : green

В прототипе системы анализа исходного изображения предполагается, что, во-первых, класс деталей ограничен предметами с плоскими равномерно окрашенными гранями и цилиндрическими поверхностями; и, во-вторых, задача первичной обработки изображения (этапы 1 и 2) уже решена – имеется векторное изображение в виде текстового файла с описанием совокупности полигонов – цветных многогранников. Есть и другие мало принципиальные ограничения.

Главным достоинством предлагаемого прототипа системы анализа изображений является отлаженный интерфейс главного приложения, разработанного на языке императивного типа (в данном случае, на языке Visual Basic) – это этапы 3, 5 описанного выше процесса, и вызываемой программы на языке декларативного типа Prolog (этап 4). Разница парадигм этих языков, описанная в 1-й главе книги [4] и в статье [5], в данном случае – при решении задач указанных этапов – носит принципиальный характер: технические задачи арифметических расчетов и визуализации удобней и проще программировать на Бейсике, а переборную «интеллектуальную» задачу анализа удобней и проще программировать на Прологе.

Более конкретно, на этапах 3 и 5 используется интегрированная среда разработки Microsoft Visual Studio 2010 и язык Visual Basic 2010 [8], на платформе Microsoft .NET Framework 4. А на этапе 4, при решении основной, «интеллектуальной» задачи, применяется интерпретатор LPA-Prolog [7] и используемый в нём так называемый базисный диалект языка Пролог с его множеством встроенных предикатов.

Примеры результатов – экранные формы демонстрируемого Windows приложения с отображаемыми в его окнах изображениями и списками выявленных тел с их характеристиками – показаны на рис. 7 – а) и рис. 7 – б).

 

а)

б)

Рис. 7. Примеры экранной формы приложения, в котором реализован интерфейс Visual Basic 2010 – Prolog LPA, с результатами анализа изображений, показанных на рис. 1 (а и б).


Имитация этапов 1 – 3 (подготовки векторного изображения) проводится с помощью приложения, разработанного также на языке Visual Basic 2010 [8], которое может дорабатываться и на более поздних версиях языка, требующих платформы Microsoft .NET Framework 4 (или последующие версии 4.5, 4.5.1 и т.д.).

 

3. Государственная регистрация программы

 

Представленный в данной статье результат прошел государственную регистрацию: автор получил свидетельство о государственной регистрации программы для ЭВМ «Демонстрационная программа по анализу изображений тел с плоскими гранями» № 2015611531 (дата государственной регистрации 30 января 2015 г.) [9].

 

Заключение

 

Рассмотрена принципиальная возможность совмещения средств логического (структурного) подхода к распознаванию и анализу изображений со средствами визуального программирования. В частности, рассмотрена задача структурного (синтаксического) распознавания изображений геометрических тел, позволяющая дать привязку отдельных фрагментов изображения к конкретному телу. Для этой задачи визуализация имеет первостепенное значение. Именно визуализация позволяет наглядно оценить полученные результаты: выделение логической программой отдельных тела на изображении, их характеристик и, в перспективе, взаимного расположения этих тел, необходимого роботу-манипулятору для решения тех или иных задач по захвату и переносу тел в пространстве.

Получен практический результат: написана и проверена на конкретных примерах демонстрационная программа для студентов, изучающих логическое программирование, которая является программным прототипом системы анализа изображений геометрических тел определенного класса. Эта программа прошла государственную регистрацию, и автор статьи получил авторское право в форме «Свидетельства о государственной регистрации программы для ЭВМ».

 

Список литературы

 

1.      Братко Иван. Алгоритмы искусственного интеллекта на языке PROLOG, 3-е издание.: Пер. с англ. – М.: Издательский дом «Вильямс», 2004. – 640 с.

2.      Warren D.H.D., Pereira L.M., Pereira F. PROLOG – the language and its implementation. Proceedings of the Symposium on Artificial Intelligence. SIGPLAN Notes, 12(8), 1977.

3.      Волченков Н.Г. Логическое программирование. Язык Пролог: Тексты лекций. Изд. второе, испр. и доп. – М.: МИФИ, 2015. – 160 с.

4.      Сергиевский Г.М., Волченков Н.Г. Функциональное и логическое программирование: Учеб. пособие для студ. высших учеб. заведений. – М.: Издательский центр «Академия», 2010. – 320 с.

5.      Волченков Н.Г. Использование современных информационных технологий в обучении студентов по направлению «Информатика и вычислительная техника», различным парадигмам программирования: «Современные научные исследования и инновации». 2015. № 3 [Электронный ресурс]. URL: http://web.snauka.ru/issues/2015/03/47345 (дата обращения 28.03.2015).

6.      Фу К.С. Структурные методы в распознавании образов. – М.: Изд. «Мир», 1977. – 320 с.

7.      Сайт компании Logic Programming Associates Ltd. [Электронный ресурс]. URL: http://www.lpa.co.uk/ (дата обращения 21.03.2015).

8.      Зиборов В.В. Visual Basic 2010 на примерах. – СПб.: БХВ-Петербург, 2010. – 336 с.

9.      Свидетельство о гос. регистрации программы для ЭВМ № 2015611531 «Демонстрационная программа по анализу изображений тел с плоскими гранями». Автор: Волченков Н.Г. (RU). [Электронный ресурс]. URL: http://www1.fips.ru/Archive/EVM/2015/2015.02.20/DOC/RUNW/000/002/015/611/531/document.pdf (дата обращения 07.04.2015).

10.  Волченков Н.Г. Синтаксический анализ изображений совокупности тел некоторого класса, использующий интерфейс логического и императивного визуального языков программирования. Журнал «Новые информационные технологии», ФГУП «ЦНИЛОТ», 2010, № 1, с.58 – 62.

11.  Shaw A.C. A formal picture description scheme as a basis for picture processing system. Information and Control, 1969, v.14, p. 9 – 52.

 


 

THE APPLICATION LOGICAL AND VISUAL PROGRAMMING INTERFACE FOR IMAGE ANALYSIS OF THE GEOMETRIC BODIES

N.G. Volchenkov

National Research Nuclear University MEPhI (Moscow Engineering Physics Institute)

 

Annotation

Logical programming (in particular, the Prolog language) can be used for the analysis of the images, for which the descriptions can be built easily in the form of the texts in the languages that can be syntactically analyzed. For emphasizing the expressiveness of the initial data and results of such analysis it is advisable that any visual language of programming, for example, Visual Basic should be used “to help”  Prolog. The result of syntactic analysis can be not only the list of separate bodies on the image, but also their coordinates, sizes, color. These data can be useful, for example, for a robot-manipulator. As an example of a category of the bodies, the images of which can be analyzed that way, here we take the geometric solids in the form of the prisms and cylinders painted in the local colors with the cuts and the openings. In the work the examples of initial scanning images are given as well as their intermediate vector idea and obtained result - lists of the revealed solids with the characteristics indicated.

 

The key words: structural (syntactic) methods of the image analysis, structural description of the image, scanning image, vector idea, polygon, logic programming, the Prolog language, visual programming, the Visual Basic language

 

List of References

 

1.         Bratko, Ivan. PROLOG Programming for Artificial Intelligence, Third edition. Addison-Wesley. 2000.

2.         Warren, D.H.D. PROLOG – the language and its implementation. / Warren D.H.D., Pereira L.M., Pereira F. Proceedings of the Symposium on Artificial Intelligence. SIGPLAN Notes, 12(8), 1977.

3.         Volchenkov, N.G. Logicheskoe programmirovanie. Jazyk Prolog [Logic programming. Prolog language]. – M.: Publishing Center National Research Nuclear University “MEPhI”. 2015. [In Russian]

4.         Sergievsky, G.M. Funkcional'noe i logicheskoe programmirovanie [Functional and Logic Programming] / G.M. Sergievsky, N.G. Volchenkov. – M.: Publishing Center “Academia”. 2010. [In Russian]

5.         Volchenkov, N.G. Ispol'zovanie sovremennyh informacionnyh tehnologij v obuchenii studentov po napravleniju «Informatika i vychislitel'naja tehnika», razlichnym paradigmam programmirovanija: «Sovremennye nauchnye issledovanija i innovacii». [The use of the modern information technologies in the teaching students specializing in "Computer Science", various programming paradigms. Scientific & practical journal «Modern scientific researches and innovations»]. 2015. № 3. [electronic resource]. URL: http://web.snauka.ru/issues/2015/03/47345 (access date: 10.05.2015). [In Russian]

6.         Fu, K.S. Strukturnye metody v raspoznavanii obrazov [Syntactic Methods in Pattern Recognition] / K.Fu. – Academic Press, New York and London, 1974. [In Russian]

7.         Logic Programming Associates Ltd. [electronic resource]. URL: http://www.lpa.co.uk/ (access date 21.03.2015).

8.         Ziborov, V.V . Visual Basic 2010 na primerah [Visual Basic 2010 examples] / Viktor Ziborov. – S-Pb. BHV-Petersburg, 2010. [In Russian]

9.         Certificate of state registration № 2015611531 "Demonstration program on the analysis of images of bodies with flat faces." Author: Volchenkov N.G. (RU). [electronic resource]. URL: http://www1.fips.ru/Archive/EVM/2015/2015.02.20/DOC/RUNW/000/002/015/611/531/document.pdf (access date 07.04.2015).

10.     Volchenkov, N.G. Sintaksicheskij analiz izobrazhenij sovokupnosti tel nekotorogo klassa, ispol'zujushhij interfejs logicheskogo i imperativnogo vizual'nogo jazykov programmirovanija [Parsing images of geometrical bodies using interface logical and visual programming languages] / N.G. Volchenkov. – M.: “New Information Technologies”, FSUE "TSNILOT", 2010, № 1. [In Russian]

11.     Shaw, A.C. A formal picture description scheme as a basis for picture processing system. Information and Control. 1969, v.14.