Поиск по базе сайта:
Пояснительная записка к дипломной работе на тему icon

Пояснительная записка к дипломной работе на тему




НазваПояснительная записка к дипломной работе на тему
Сторінка8/21
Дата конвертації08.07.2013
Розмір1.22 Mb.
ТипПояснительная записка
1   ...   4   5   6   7   8   9   10   11   ...   21

4.2. Описание алгоритма «Обработка и кодирование сегментов»



^ 4.2.1. Назначение и характеристика


Алгоритм «Обработка и кодирование сегментов» предназначен для поиска выделенных сегментов линий, их идентификации, поиска узловых точек, формирования кодов, содержащих координаты данных сегментов для последующей обработки их в подсистеме цепного кодирования или использования в других подсистемах. Для работы алгоритма необходимо наличие информации об узлах и сегментах изображения, полученных в результате работы алгоритмов «Поиск узлов» и «Поиск сегментов», описание которых приведено в пунктах 2.2 и 3.2 соответственно.

4.2.2. Используемая информация


При работе данного алгоритма используется следующая информация:

- значения массива точек исходного графического изображения;

- значения массива сегментов, содержащего описания принадлежности точки тому или иному сегменту;

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

4.2.3. Результаты решения


Данный алгоритм формирует строки, содержащие номера сегментов и необходимые координаты для последующего кодирования или обработки в других подсистемах.

4.2.4. Алгоритм решения



Алгоритм решения составлен с учетом математического описания, приведенного в пункте 4.1.4. Алгоритм представляется в текстовом виде следующим образом:

  1. Начало;

  2. Инициализация массивов и переменных;

  3. Если поиск узлов выполнен, то переход к п.5, иначе к п.4;

  4. AnalyzeNode, переход к п.3;

  5. Если поиск сегментов выполнен, то переход к п.7, иначе к п.6;

  6. AnalyzeSeg, переход к п.5;

  7. i=0; j=0; lnum=0; lineno=0;

  8. Если j>=N, то переход к п.15;

  9. Если i>=M, то переход к п.14;

  10. Если (apix[i][j]=1)и(apix1[i][j]<0)и((NeigCount(i,j)=1)или(NeigCount(i,j)=2)), то переход к п.11, иначе к п.13;

  11. lnum=lnum+1; lineno=lineno+1;

  12. GetLineVect(i,j,lineno);

  13. i=i+1; переход к п.9;

  14. i=0; j=j+1; переход к п.8;

  15. Конец.



4.2.5. Требования к контрольному примеру


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

- отдельно расположенные сегменты, начало, и конец которых являются обычными точками - такие сегменты представляют собой отдельные линии;

- сегменты, одна из начальных точек которых является узловой (входит в область пересечения с другими сегментами) – это сегменты, являющиеся началом какой-либо линии;

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

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

4.2.6. Список условных обозначений


В таблице 4.1 представлены условные обозначения, введенные в тексте подраздела

Таблица 4.1

Условные обозначения


Условные обозначения

Расшифровка

lnum

порядковый номер обрабатываемого сегмента

lineno

идентификатор обрабатываемого сегмента в массиве сегментов

M

ширина изображения

N

высота изображения

AnalyzeNode

алгоритм поиска узлов, формирующий значения элементов массива узлов

AnalyzeSeg

алгоритм поиска сегментов линий, формирующий значения элементов массива сегментов

apix[M][N]

массив точек исходного изображения

apix1[M][N]

массив сегментов

NeigCount

функция вычисления количества соседних точек

GetLineVect(x,y,n)

рекурсивная функция обработки точек сегмента и кодирования его координат, x,y – координаты начала обработки сегмента, n – номер сегмента



4.3. Описание программы «Обработка и кодирование сегментов»




4.3.1. Вводная часть


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

4.3.2. Функциональное назначение


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

4.3.3. Описание информации


Программа SegCode в качестве входной информации использует следующие данные:

- массив точек исходного изображения;

- массив узлов, содержащий описания узловых точек: их области, центры и их уникальную нумерацию для однозначной идентификации;

- массив сегментов, содержащий описания сегментов линий: точки, принадлежащие линии, координаты их пересечения и присвоенные номера для однозначной идентификации.

На выходе программа формирует координаты сегментов с указанием типа сегмента.

Формат описания сегментов линий:

n1:x11,y11 [,x12,y12 [,x13,y13]]

n2:x21,y21 [,x22,y22 [,x23,y23]]

nk:xk1,yk1 [,xk2,yk2 [,xk3,yk3]]

где ni – номер i-го сегмента линии (идентификатор);

xi1,yi1 – координаты первой точки i-го сегмента линии;

xi2,yi2 – координаты второй точки i-го сегмента линии, указываются в том случае, если точка (xi2,yi2)является узлом;

xi3,yi3 – координаты направления кодирования от точки (xi1,yi1), указываются в том случае, если точки (xi1,yi1) и (xi2,yi2) являются узлами.


4.3.4. Используемые подпрограммы


В процессе обработки изображение программа использует следующие подпрограммы:

- actExitExecute – обработка запроса завершения работы программы;

- FormCreate – создание формы обработки изображения;

- actZoomInExecute – режим увеличения изображения;

- actZoomOutExecute - режим уменьшения изображения;

- actOpenFileExecute – открытие файла для обработки;

- actSaveFileExecute – сохранение файла;

- Image2MouseMove – обработка события движения указателя мыши при наведении на элементы изображения;

- Image2MouseDown – обработка события нажатия кнопки мыши при редаутировании изображения;

- actZoom1Execute - режим установки масштаба изображения 100%;

- actAnalyzeExecute – вызов основной функции обработки изображения;

- FormCanResize – изменение размера окна;

- actNewFileExecute – создание нового файла для обработки;

- actGridCheckExecute – изменение режима просмотра сетки;

- actLightCheckExecute - изменение режима подсветки структурных элементов изображения;

- actZoom10Execute – режим установки 10-кратного увеличения изображения;

- actSegLightCheckExecute - изменение режима подсветки сегментов линий;

- actLockViewExecute – изменение режима блокировки изображения;

- actAnalyzeNodeExecute – обработка узлов изображения ;

- actAnalyzeSegExecute – обработка сегментов изображения;

- FormCloseQuery – обработка запроса на закрытие окна;

- actOpenArrayExecute – открытие изображения из файла массива точек;

- actSaveArrayExecute – сохранение изображения в файл массива точек;

- actOptionsExecute – вызов окна настройки;

- actSaveCodeExecute – запись результата обработки изображения в файл;

- actSegCodeOutExecute – выполнение алгоритма формирования координат сегментов;

- ZoomTo –установка заданного масштаба изображения;

- DrawGrid – рисование сетки изображения;

- ShowInfo – отображение информации о текущем состоянии;

- NeigCount – определение количества соседних точек;

- VectMove – осуществление движения координат обработки изобржаения в заданном направлении;

- wlog – вывод информации в журнал вычислений;

- VectToStr – преобразование кода вектора направления в строку;

- ValidateView – обработка свойств доступности элементов панели управления;

- plDistance(x, y, x1, y1, x2, y2) – вычисление расстояние (минимального) от точки (x,y) до прямой, заданной точками (x1,y1) и (x2,y2)

StrToLen – выравнивание строки для образования формата определенной длины;

- NeigNode – рекурсивная обработка соседей точки на принадлежность узлу

- NeigLine – рекурсивная обраобтка соседей точки (x,y) на принадлежность сегменту

- GetLineVect – рекурсивная обработка кода сегмента линии;

- NodeCentre - вычисление значения центра узла;

- FillLine изменение принадлежности точек одного сегмента другому;

- CodeLine – формирование кода сегмента линии.

4.3.5. Описание логики


Схема программы SegCode представлена на рис. 4.1. Здесь представлено текстовое описание схемы программы:

  1. Начало;

  2. Инициализация массивов и переменных;

  3. Если поиск узлов выполнен, то переход к п.5, иначе к п.4;

  4. AnalyzeNode, переход к п.3;

  5. Если поиск сегментов выполнен, то переход к п.7, иначе к п.6;

  6. AnalyzeSeg, переход к п.5;

  7. i=0; j=0; lnum=0; lineno=0;

  8. Если j>=N, то переход к п.15;

  9. Если i>=M, то переход к п.14;

  10. Если (apix[i][j]=1)и(apix1[i][j]<0)и((NeigCount(i,j)=1)или(NeigCount(i,j)=2)), то переход к п.11, иначе к п.13;

  11. lnum=lnum+1; lineno=lineno+1;

  12. GetLineVect(i,j,lineno);

  13. i=i+1; переход к п.9;

  14. i=0; j=j+1; переход к п.8;

  15. Конец.



4.3.6. Настройка программных средств


Для работы программы необходимо наличие операционной системы Windows 95/Windows NT или более поздней версии. Для работы программы с данными, размещенными в сети, необходима настройка сетевых подключений операционной системы к рабочей группе. Дополнительная настройка программы не требуется.
1   ...   4   5   6   7   8   9   10   11   ...   21



Схожі:




База даних захищена авторським правом ©lib.exdat.com
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації