Смекни!
smekni.com

Система автоматизированного анализа пространственной структуры изображений Подсистема линейной сегментации (стр. 8 из 17)

- 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 или более поздней версии. Для работы программы с данными, размещенными в сети, необходима настройка сетевых подключений операционной системы к рабочей группе. Дополнительная настройка программы не требуется.


4.4. Описание контрольного примера

4.4.1. Назначение

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

Схема программы SegCode

Рис. 4.1

4.4.2. Исходные данные

В качестве исходных данных используется графическое изображение размером 32x32 точки, приведенное на рис. 4.2.

Данное изображение содержит рассмотренные типы сегментов линий и узлов, которые могут быть выделены для дальнейшей обработки. Координаты точек изображения находятся в интервале [0..31].

Рис. 4.1. Продолжение

Исходное изображение

Рис. 4.2

4.4.3. Результаты расчета

В результате анализа исходных данных определим точки, формирующие узлы. В данном случае изображение содержит 3 узла, отмеченных на рис. 4.3.

Узлы изображения

Рис. 4.3

Выделенные узлы имеют координаты

1: (14,25)

2: (25,22)

3: (10,11)

Разобьем линии на изображении на сегменты. В результате разбиения можно выделить 11 сегментов линий.

На рис. 4.4 выделен сегмент, не имеющий пересечений. Ни одна из образующих его точек не является узловой. Для передачи координат точек такого сегмента в подсистему цепного кодирования достаточно указания одной из координат.

На рис. 4.5 выделены 8 сегментов, одна из крайних точек которых является узлом. Для идентификации такого сегмента линии необходимо указать координаты начала сегмента и координаты узла, в котором завершается данных сегмент.

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

Сегмент, не имеющий пересечений

Рис. 4.4

Сегменты с одним узлом

Рис. 4.5

Сегменты, образованные двумя узлами

Рис. 4.6

Координаты точек сегментов представлены в таблице 4.2

Таблица 4.2

Координаты точек сегментов

Номер сегмента Начальная точка Конечная точка Количество узлов в сегменте
1 30,11 13,2 0
2 14,30 14,25 1
3 25,30 25,22 1
4 7,27 14,25 1
5 28,22 25,22 1
6 5,16 10,11 1
7 1,7 10,11 1
8 14,7 10,11 1
9 25,9 25,22 1
10 14,25 10,11 2
11 14,25 25,22 2

Точки, определяющие направления для кодирования сегментов 10 и 11, образованных двумя узлами имеют координаты, представленные в таблице 4.3.

Таблица 4.3

Точки, определяющие направление

Номер сегмента Координаты первой точки Координаты точки направления Координаты второй точки
10 14,25 14,24 10,11
11 14,25 15,25 25,22

4.4.4. Результаты испытания программы

Для проверки правильности работы программы использовались исходные данные, указанные в пункте 4.4.2, и на их основе согласно математическому описанию, (см. п. 2.1.4, 3.1.4, 4.1.4) были выведены результаты, указанные в п. 4.4.3. Ниже приведены результаты работы программы:

1: (14,30)-(14,25)

2: (25,30)-(25,22)

3: (7,27)-(14,25)

4: (14,25)-(25,22) [15,25]

5: (14,25)-(10,11) [14,24]

6: (28,22)-(25,22)

7: (25,9)-(25,22)

8: (5,16)-(10,11)

9: (30,11)

10: (1,7)-(10,11)

11: (14,7)-(10,11)

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


5. ОРГАНИЗАЦИОННО-ЭКОНОМИЧЕСКАЯ ЧАСТЬ

5.1. Расчет затрат на разработку «Подсистемы линейной сегментации»

Для определения величины расходов, потребовавшихся для создания подсистемы, используем прямой метод.

Расчет сметы затрат осуществляется по следующим статьям:

- расходы на материалы;

- расходы на оплату труда разработчиков;

- единый социальный налог;

- расходы на содержание и амортизацию ВТ;

- накладные расходы;

- прочие расходы.

К статье “Расходы на материалы” относятся покупные изделия, необходимые для выполнения работы, перечисленные в таблице 5.1.

Таблица 5.1

Расходы на материалы

Наименование материала Количество Стоимость, руб.
Картридж для HPDeskJet 3420C 1 шт. 983
Канцелярские товары - 250
Итого: 1233

Для расчета расходов по оплате труда определим продолжительность разработки системы. Она составила 5 месяцев. График работ по этапам (и их длительность) отображен в таблице 5.2.


Таблица 5.2

Продолжительность работ по этапам

Наименование этапа разработки Длительность, месяцев
1. Исследование объекта автоматизации, изучение средств разработки и программирования, формулировка требований к подсистеме. 0.5
2. Анализ данных, разработка структур обмена данными, анализ быстродействия и ресурсоемкости структур обмена данными. 1
3. Проработка интерфейсов, экранных форм, общая настройка системы. 0.5
4. Разработка алгоритмов обработки 1
5. Реализация на ЯП и отладка 1
6. Документирование 1
Итого: 5

Оклад инженера-программиста, работающего над созданием системы, на период разработки (Пм = 5 месяцев) составил Окл = 5000.00 рублей в месяц. Вычислим расходы на оплату труда разработчиков за весь период разработки (ОТобщ):

Отр=Окл*Пм, (5.1)

где Отр – расходы на оплату труда программиста за 5 месяцев.

Отр = 5000 * 5 = 25000 руб.

Кроме того, необходимо учесть уральский коэффициент (15%).

Кур = 25000 * 0.15= 3750 руб.

Следовательно, расходы на оплату труда с учетом уральского коэффициента (Отрук) составила:

Отрук =Отр + Кур (5.2)

Отрук = 25000 + 3750 = 28750 руб.

Всего расходы на оплату труда:

ОТобщ = 28750 руб.

Статья единый социальный налог (ЕСН) – 26% рассчитывается от расходов на оплату труда (ОТобщ), кроме того необходимо учитывать отчисления в фонд страхования от несчастных случаев (ФСС) – 0.2%:

Сумма отчислений составляет:

Сотч = ОТобщ * 0.262 (5.3)

Сотч = 28750* 0.262 = 7532,50 руб.

Статья «Расходы на содержание и амортизацию ВТ» включает расходы, связанные с использованием ресурсов ЭВМ.

Стоимость одного машинного часа рассчитывается по формуле:

Ач = Сисп / (Чм * Кч), (5.4)

где Ач – аренда за час использования;

Сисп - общая стоимость использования ЭВМ (рассчитывается по формуле);

Чм – число месяцев в году;

Кч – среднемесячная продолжительность рабочего времени.

Сисп=Акомп+ЗПобсл+Сзч+Сэл+Апо, (5.5)