Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке

Дипломная работа на тему «Информационная система анализа типоразмерных характеристик объектов на гибридной аппаратной платформе»

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

. ПОСТАНОВКА ЗАДАЧИ И ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ

.1 Постановка задачи распознавания

.2 Предметная область автоматизации процессов

.3 Условия применения и технические требования для работы программно-аппаратной платформы

.4 Обзор используемых программных и технических средств

. ОБЗОР СИСТЕМ РАСПОЗНАВАНИЯ

.1 Системы технического зрения Omron

.2 Система распознавания лиц VOCORD Face Control

.3 Система распознавания текста ABBYY FineReader

.4 Система распознавания номеров автотранспортных средств AutoTRASSIR

. МЕТОДЫ И СРЕДСТВА АВТОМАТИЗАЦИИ ПРОЕКТИРОВАНИЯ

.1 Контекстная диаграмма

.2 Диаграмма IDEF0

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

.3 Диаграмма IDEF3

. АЛГОРИТМЫ И СТРУКТУРА ФУНКЦИОНИРОВАНИЯ ПРОГРАММНО — АППАРАТНОЙ ПЛАТФОРМЫ

.1 Распознавание изображений

.2 Алгоритмы и методы, применяемые в программе

.2.1 Нахождение границ объекта

.2.2 Выявление признаков объектов

.2.3 Алгоритм хеширования MD5

.3 Построение общего алгоритма работы

. НАДЕЖНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

.1 Понятие надежности

. ОБЗОР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

.1 Панель администрирования

.2 Редактирование кода программы

ЗАКЛЮЧЕНИЕ

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ А Функциональная схема программно — аппаратной платформы

ПРИЛОЖЕНИЕ Б Структурная схема программно — аппаратной платформы

ПРИЛОЖЕНИЕ В Листинг программы

ВВЕДЕНИЕ

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

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

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

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

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

Целью выпускной квалификационной работы является применение алгоритмов системы технического зрения в программно-аппаратной платформе системы анализа бинарных образов распознаваемых объектов, способной принимать решения о реальных физических объектах, основываясь на воспринимаемых изображениях.

Выпускная квалификационная работа состоит из шести разделов.

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

Второй раздел выпускной квалификационной работы содержит примеры существующих систем анализа образов распознаваемых объектов и описание особенностей их работы.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

В третьем разделе функционально-ориентированного проектирования программно-аппаратной платформы представлена функциональная модель с использованием методологии IDEF3 и их декомпозиция на составляющие процессы. Так же выполнено построение диаграмм.

Четвертый раздел данной работы содержит структуру и алгоритмы функционирования программно-аппаратной платформы. Представлена обобщенная схема решения задачи и алгоритмизация осуществления отдельных модулей задачи.

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

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

. ПОСТАНОВКА ЗАДАЧИ И ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ

.1 Постановка задачи распознавания

Распознавание объектов представляет собой задачу отнесения исходных данных (входящей информации) к определенному классу путем выделения существенных признаков и параметров распознаваемых объектов[5].

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

Представление множества различных объектов является традиционной постановкой проблемы распознавания объектов[2]. Следует систематизировать данные множества объектов. Известно: информация о классах, представление данных об объектах, принадлежность которых к определенному классу неизвестна. Требуется согласно известным данным о классах и описании объектов выяснить, к какому классу причисляется тот или иной объект.

Данную задачу можно распределить на две части: обучение и распознавание. Обучение будет выполняться с помощью демонстрации отдельных объектов, с указанием их принадлежности к конкретному классу [5].

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

Система распознавания при поступлении объекта обрабатывает его изображение, далее она выделяет характерные признаки данного объекта, качественные или количественные. Одной из проблем распознавания объекта является выбор исходного описания: структурный или геометрический подход. Геометрический подход основывается на различии форм объектов. Структурный же основан на анализе элементов объектов. В этом случае в первую очередь выделяют части всех объектов, а так же характеристики их расположения относительно друг друга. Полученные данные составляют исходную базу данных, на ее основе можно строить разные гипотезы. Из них выбирают наиболее подходящие для конкретного случая, далее идет описание общего образа данных объектов, он применяется для идентификации других объектов [4, 12].

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Задачи для данной работы:

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

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

—     разработать систему анализа образов объектов распознавания. Для решения поставленных задач существует множество методик. В данной работе рассмотрим некоторые из них.

1.2 Предметная область автоматизации процессов

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

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

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

—     освобождение человека от однотипных монотонных действий;

—     увеличение скорости принимаемых решений;

—     уменьшение количества ошибок в поставленных задачах.

Для успешного решения задачи распознавания объектов и проектирования систем анализа образов требуется исследовать психологию машинного зрения. Изучить структуру восприятия зрения человека и перенос ее на машины с использованием алгоритмов.

Кибернетика дает возможности в исследование вопроса распознавания объектов ввести количественные методы, то есть представить процесс распознавания математическими методами.

1.3 Условия применения и технические требования для работы программно — аппаратной платформы

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Для работы программно — аппаратной платформы анализа образов объектов распознавания необходим персональный компьютер с минимальными системными требованиями:

процессор Intel Core i3 с тактовой частотой 3.0 ГГц и более, для выполнения расчетов;

оперативная память объемом от 4 Гб;

достаточное количество свободного дискового пространства;

1 Гб видеопамяти или более;

монитор с разрешением 1366×768;

мышь/клавиатура

На ПК должна быть установлена операционная система от Windows 7 до Windows 10. Данная система должна обеспечивать бесперебойную работу длительное время, сбои в работе компьютера должны быть исключены или хотя бы сведены к минимуму.

При выборе ОС определяющими факторами являются:

— поддержка сетевых технологий;

—     возможность использования различных устройств ввода-вывода;

—     быстродействие;

—     быстрая настройка новых аппаратных средств;

—     поддержка операционной системы производителем;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

—     наличие справочной службы для пользователей;

— наличие дружественного интерфейса;

—     совместимость с другими операционными системами;

—     поддержка новых информационных технологий.

К программно — аппаратной платформе с функцией распознавания образов объектов и их анализа предъявляется ряд требований:

а) простота использования;

б) поддержка функций анализа и обработки изображений, последующее накопление и хранение в программе необходимой информации;

в) интегрируемость новых компонентов, то есть добавление новых функций распознавания для более результативного решения поставленных задач;

г) возможность расширения установленной платформы с помощью добавления нового оборудования или заменой старого на более актуальные версии;

д) предотвращение несанкционированной деятельности с системой, изменения настроек.

Данная платформа обеспечит реализацию следующих функций:

—     обработка изображений и преобразование их в бинарный код;

—     разработка метода распознавания и анализа плоских изображений;

—     генерация случайных изображений;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

—     создание базы данных эталонов для идентификации изображений при помощи сравнения с эталонами;

—     вывод результатов обработки и сортировки изображений.

1.4 Обзор используемых программных и технических средств

программа распознавание текст лицо

Система программнно-аппаратной платформы анализа образов объектов распознавания разработана в среде программирования Borland Delphi 7 и СУБД MySQL.

Borland Delphi представляет собой среду быстрой разработки приложений, в которой в качестве языка программирования используется язык Delphi. Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит Object Pascal. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом (GUI) или консольных приложений (программ без графического интерфейса)[16].

Delphi соединяет в себе компилятор языка программирования Object Pascal, интегрированную среду разработки (IDE), библиотеку визуальных компонентов VCL, средства для работы с базами данных (BDE) и многое другое. С его помощью можно решить практически любую программистскую задачу, включая работу с базами данных, написание web — приложений, экранных заставок, системных утилит и прочего.

В состав Delphi 7 включена технология моделирования и проектирования приложений UML, что позволяет эффективно создавать свои приложения с помощью средств реорганизации кода и визуального моделирования. Возможности программного средства по реинжинирингу, интеграции и визуализации дают возможность создавать высококачественные проекты, применяя готовые шаблоны проектирования и создавая более крупные модели.- это одна из самых популярных и самых распространенных СУБД (система управления базами данных). Она может обрабатывать большой объем информации, но наиболее часто ее используют для работы в малых и средних приложениях[12, 13].отличатся хорошей скоростью работы, надежностью и гибкостью. Работа с ней не вызывает больших трудностей. Чаще эта СУБД используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, но в дистрибутив так же входит библиотека внутреннего сервера, которая позволяет подключать MySQL к автономным программам. Кроме того она является бесплатной и распространяется на условиях общей лицензии GNU (GPL, GNU Public License).

Основные преимущества СУБД MySQL:

—     простота в работе — установка и администрирование MySQL довольно просты, дополнительные приложения, например GUI, позволяет легко работать с БД;

—     богатый функционал — MySQL поддерживает большинство функционала SQL, языка запросов, который применяется во всех современных СУБД;

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

—     масштабируемость — MySQL легко работает с большими объемами данных и легко масштабируется;

—     скорость — упрощение некоторых стандартов позволяет MySQL значительно увеличить производительность, так же она считается одной из самых быстрых баз данных на сегодняшний день;

—     аппаратная совместимость — MySQL функционирует под управлением различных версий UNIX систем, а так же под управлением систем Windows и OS/2.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Для общения с данной СУБД используется язык SQL (Stuctured Query Language — язык структурированных запросов). Он содержит множество операторов, целью которых является взаимодействие с базами данных. MySQL содержит API <https://ru.wikipedia.org/wiki/API> (Application programming interface) — набор готовых классов <https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>, функций <https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>, процедур <https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>, структур <https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)> и констант <https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>, для использования во внешних программных продуктах, для языков Delphi, C, C++, PHP, Ruby, Smaltalk, Python, Лисп, Эйфель, Компонентный паскаль и Tcl, библиотеки для языков платформы .NET.

. ОБЗОР СИСТЕМ РАСПОЗНАВАНИЯ

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

2.1 Системы технического зрения Omron

Системы технического зрения omron — это системы визуального контроля и идентификации, которые могут применяться во многих областях промышленного производства. В наличие имеется разнообразный выбор моделей систем технического зрения. Все они оснащены сменным или постоянным объективом и легко крепятся на DIN рейку.

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

Основные преимущества системы Omron:

—   высокое быстродействие- 3,6 мс;

—   сравнение по всей площади;

—   различные модели источников света;

—   функция обучения;

—   модели с RS232C и RS422;

Датчик F400 является более продвинутым решением в данной системе:

—   недорогая цветная видео система;

—   распознает цвет объекта, яркость и контраст цветовой гаммы;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

—   до 11 входов и 21 выходов (возможно PNP или NPN);

—   функция обучения.

2.2 Система распознавания лиц VOCORD Face Control

Данная система предназначена для некооперативного распознавания лиц.

Некооперативность означает, что системе не требуется «сотрудничество» человека, чтобы верно его распознать. Поэтому она успешно применяется для распознавания лиц в местах массового скопления людей — на вокзалах, в аэропортах, метро, стадионах, концертных залах и в других публичных местах, где людей нельзя принудить взаимодействовать с системой биометрической идентификации <#»896590.files/image001.gif»>

Рисунок 3.1 — Контекстная диаграмма программно-аппаратной платформы анализа бинарных образов объектов распознавания.

3.2 Диаграмма IDEF0

Этапы проектирования платформы: выбор изображения, анализ и обработка образов исследуемых объектов, сравнение образов с эталоном и отображение результатов обработки.

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

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

3.3 Диаграмма IDEF3

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

При анализе и обработке объектов рассматриваются значения отношения удвоенного квадрата периметра контура исследуемого объекта к его площади. Это требуется для того, чтобы разрабатываемая система при распознавании не реагировала на перемещения и повороты объекта. Далее все полученные характеристики сравниваются со значениями эталонов, и принимается решение о причислении исследуемого объекта к определенному классу или о невозможности причисления объекта к какому — либо классу.

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

Рисунок 3.3 — Диаграмма IDEF3

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

. АЛГОРИТМЫ И СТРУКТУРА ФУНКЦИОНИРОВАНИЯ ПРОГРАММНО — АППАРАТНОЙ ПЛАТФОРМЫ

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

4.1 Распознавание изображений

Все объекты, биологические или технические, представляют собой сложные системы. Они подвергаются воздействию внешней среды и реагируют на определенные виды воздействия: освещенность, температуру, давление. Уровень воздействия регистрируется имеющимися у объекта датчиками. Результат работы датчика, функционально зависящий от изменения воздействия, называется сигналом. Последовательность сигналов определяет изменение некоторого воздействия во времени и пространстве. Примерами таких последовательностей являются звуковые волны, регистрируемые микрофоном или электромагнитное излучение, фиксируемое в виде изображения[3].

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

Для любого распознавания изображения необходимы эталоны или модели классов объектов распознавания. Классификация методов возможна по типам используемых эталонов или по способу представления объектов на входе системы распознавания. Большинство систем распознавания применяют растровый, структурный или признаковый методы[6].

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

Каждый пиксель бинарного изображения определяется значением 0 или 1. Классический способ распознавания объектов состоит из трёх частей:

—   преобразование входного изображения в первоначальное представление (включает в себя предобработку и математические преобразования);

—   выделение главных характеристик распознаваемого объекта;

—   построение алгоритма классификации объекта.

Создание способа распознавания строится на информации о предметной области и корректируется экспериментальной информацией, которая появляется в ходе разработки метода распознавания изображений.

4.2 Алгоритмы и методы, применяемые в программе

Что бы улучшить результаты распознавания приведем все символы к единому стандарту. Уменьшим размер символов до 64х64 пикселей и за счет этого уменьшим время обработки и, тем самым, увеличим скорость работы всей системы в целом. По завершении всех этапов обработки изображений сравним все изображения с загруженным ранее множеством эталонов. Далее мы получим предполагаемый объект на выходе и данные по его размерности.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

4.2.1 Нахождение границ объекта

Одной из основных и важнейших целей цифровой обработки изображений является распознавание присутствующих на них объектов [4]. Для распознавания и анализа объектов на изображении более информативными являются характеристики их границ — контуров. То есть, основная информация заключена не в яркости отдельных областей, а в их очертаниях. По этому, задача выделения контуров объектов состоит в построении изображения их границ и очертаний однотипных областей.

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

Наиболее часто применяются методы сокращения избыточности. Они опираются на различные специфичные особенности зрительного восприятия изображений. Субъективное восприятие рассматриваемого изображения происходит через представление его в виде отдельных областей и выделение контурных линий. Контурные линии делят изображение на участки с различными свойствами, в счет этого выделение контуров может рассматривается как предварительная обработка, направленная на дальнейшее выполнение сегментации[6,7]. Препарат, образующийся в некоторых случаях, может самостоятельно использоваться для распознавания изображений, так как информация, содержащаяся в нем с позиции зрительного восприятия, вполне достаточна для решения многих задач.

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

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

Построение границ бинарного изображения объектов складывается из двух последовательных операций: выделения контуров и их пороговой обработки.

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

Применение фильтра выделения границ к конкретному изображению может значительно уменьшить количество обрабатываемых данных, так как отфильтрованная часть изображения относится к менее значимым, а более важные структурные свойства изображения сохраняются [5].

4.2.2 Выявление признаков объектов

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

—   периметр и площадь изображения;

—   число и взаимное расположение углов;

—   размеры вписанных простейших геометрических фигур

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

—   моменты инерции изображений исследуемых объектов.

Важной особенностью множества геометрических признаков является инвариантность относительно разворота изображения объекта. Кроме того при нормировании геометрических признаков относительно друг друга достигается неизменность относительно масштаба изображения. [8].

Нахождение периметра и площади изображения объекта. Площадь вычисляется с помощью подсчёта числа элементов, относящихся к данному объекту:

; ,                 (4.1)

где L — множество координат массива , относящихся к выбранному объекту.

Далее находим периметр изображения объекта «Р». Он вычисляется после нахождения границ объекта суммированием контурных точек изображения:

; ,  (4.2)

где  — множество граничных контурных точек изображения объекта.

На основе выделенных признаков нормированный признак, инвариантный к масштабу изображения

 , либо                                         (4.3)

 (4.4)

где P — периметр изображения объекта,

A — площадь изображения объекта.

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

Более простой алгоритм, с практической точки зрения, является более предпочтительным. Он основывается на оценке расстояний между начальной и конечной точками части контура. К примеру, между частями контура с порядковыми номерами k — 2 и k + 2.

Абсциссой и ординатой контурных элементов являются x(k) и y(k). Решающее правило в таком случае будет выглядеть следующим образом:

,              (4.5)

где H — пороговое значение, которое выбирается с учётом свойств исследуемых объектов.

В случае выполнения условий, расчетная точка контура принадлежит множеству угловых точек L.

При определении сторон описанного прямоугольника вначале находятся минимальные и максимальные значения абсцисс и ординат входящего изображения объекта, далее необходимо найти высоту (H) и основание прямоугольника (L):

, (4.6)

,                             (4.7)

где — максимальное значение абсциссы,

— минимальное значение абсциссы,

— максимальное значение ординаты,

 — минимальное значение ординаты.

Данный признак не инвариантен к развороту изображения объекта, то есть он может измениться.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Нахождение радиусов вписанных и описанных окружностей осуществляются следующим образом:

В начале находят координаты геометрического центра изображения:

 , (4.8)

 (4.9)

где x и y — номера столбцов и строк пикселей , входящих в объект.

Далее вычисляем минимальное и максимальное расстояния от центра до границ изображения объекта.

 (4.10)

 , (4.11)

 , (4.12)

Нормированный признак  =  инвариантен к масштабу изображения объекта.

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

Вычисления проходят следующим образом:

В начале находятся координаты центра тяжести изображения объекта.

 , (4.13)

 . (4.14)

Далее находятся промежуточные моменты .

, (4.15)

 , (4.16)

 . (4.17)

В итоге вычисляются главные моменты.

 (4.18)

где  — главные искомые моменты инерции изображения объекта,

 — моменты инерции относительно вертикальной и горизонтальной осей системы координат,

 — смешанный момент.

4.2.3 Алгоритм хеширования MD5

MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института в 1991 году. Предназначен для создания «отпечатков» или дайджестов сообщений произвольной длины и последующей проверки их подлинности. Широко применятся для проверки целостности информации и хранения паролей в закрытом виде.

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

Для обработки MD5 получает некоторую строку (данные). Далее она преобразуется в последовательность из нулей и единиц. Это происходит следующим образом: у каждого символа есть свой номер, их можно записать в двоичной системе счисления, то есть получается, что каждый отдельный символ записывается как последовательность нулей и единиц.Воспользовавшись этим, получим из входящей строки последовательность нулей и единиц. Примем «q» за длину получившейся последовательности (ровно 64 бита). К данной последовательности приписывается 1, то есть ее длина увеличивается на 1. Затем к этой же последовательности приписываются нули, пока длина не станет по модулю 512 равна 448. Далее дописываются младшие 32 бита числа q, затем — старшие. После всех операций длина становится кратной 512. Полученную последовательность назовем «S». Для подсчета результата используются четыре двойных слова (32 бита). Эти слова инициализируются следующими шестнадцатеричными значениями, где первым следует самый младший байт:: 01 23 45 67: 89 ab cd ef: fe dc ba 98: 76 54 32 10

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

(X,Y,Z) = XY v not(X) Z(X,Y,Z) = XZ v Y not(Z)(X,Y,Z) = X xor Y xor Z(X,Y,Z) = Y xor (X v not(Z))

где X,Y,Z — это двойные слова. Результаты функций, то же являются двойными словами. Для подсчета используется еще одна функция, обозначим ее «W». Она обрабатывает данные и возвращает результат. Обработка данных происходит с использованием функций F, G, H, I.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Рисунок 4.2 — Функция «W»

На рисунке схематически изображена функция. Слева — входные данные, справа — выходные.

Просчет результата происходит по следующим принцмпам:

. запоминаются первые 512 бит последовательности S;

. удаляются первые 512 бит последовательности S;

. вызывается функция W.

Параметры A,B,C,D являются текущими значениями соответствующих двойных слов. Параметр T — это запомненные 512 бит.

. Суммируются результаты вычислений:

=A+A0.=B+B0.=C+C0.=D+D0.

. Если длина последовательности равна нулю, то выходим, в противном случае переходим к шагу 1.

После выполнения данного алгоритма A,B,C,D — это результат (его длина будет 128 бит). Так же результат MD5может быть записан как последовательность из 32 символов 0..f. Это означает, что результат записан не в двоичной системе счисления, а в шестнадцатеричной.

4.3 Построение общего алгоритма работы

Программно-аппаратная платформа анализа бинарных образов объектов распознавания состоит из трех главных модулей:

—   обработка и анализ образа исследуемого объекта;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

—   сравнение образа с загруженными эталонами;

—   визуализация результатов обработки.

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

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

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

Данный подход решения задач обработки и анализа образов следует отнести к комплексному методу распознавания объектов, так как при анализе учитываются множество различных характеристик. Функциональная и структурная схемы представлены в приложениях на страницах 55 и 56 данной работы. Код программы представлен в приложении «Листинг программы», страница 57.

Рисунок 4.3 — Обобщенная блок-схема системы распознавания

. НАДЕЖНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

5.1 Понятие надежности

Надежность программного обеспечения есть вероятность его работы без отказов в течение определенного периода времени, рассчитанная с учетом стоимости для пользователя каждого отказа[10].

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

В программном обеспечении имеется ошибка, если оно не выполняет ожидаемых от него действий. Отказ программного обеспечения — это проявление ошибки в нем.

Одним из параметров надежности является интенсивность отказов — количество отказов в единицу времени. Так же величина обратная интенсивности отказов — наработка на отказ, математическое ожидание времени между отказами.

Наиболее частыми причинами ошибок являются:

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

—   большая сложность программного обеспечения, например, по сравнению с аппаратной частью;

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

Чаще всего ошибки в программном обеспечении случаются из — за:

—   внутренних ошибок (ошибки проектирования, программирования, алгоритмизации, недостаток средств защиты, ошибки в документации);

—   внешние ошибки (сбои и отказы в аппаратной части, ошибки пользователей, искажение пакетов информации в каналах связи, изменения конфигурации системы).

Одними из важных этапов жизненного цикла программного обеспечения, определяющих надёжность всей системы, являются тестирование и контроль[11].

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

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

По мимо перечисленного важным критерием надежности является восстанавливаемость. Она определяется затратами времени и труда для устранения отказа программы и его последствий.

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

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

5.2 Оценка надежности

При оценке надежности применяют три основные группы показателей: количественные, качественные и порядковые[11].

Количественными показателями надежности программного обеспечения являются:

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

—     вероятность безотказной работы P(t) — это вероятность того, что в пределах заданной наработки или заданном интервале времени отказ объекта не возникает;

Наработкой называют продолжительность или объем работ. Вероятность безотказной работы в течение наработки t определяется статистической оценкой:

 , (5.1)

где  — число объектов, работающих исправно в интервале [0,t];

Возьмем число объектов в начале испытания равное 50. Допустим, что за время работы равное 168 часов отказало 4 объектов, тогда:

.

— вероятность отказа — вероятность того, что в пределах заданной наработки возникнет хотя бы один отказ;

Данный параметр находится по формуле:

 , (5.2)

.

— безотказность системы можно также характеризовать плотностью вероятности возникновения отказов системы или её невосстанавливаемого элемента, которая статистически определяется по формуле:

 , (5.3)

где  — интервал времени;

 — число отказов за интервал времени ;

— число объектов в начале испытания.

.

— интенсивность отказов системы l(t) — отношение числа отказавших объектов в единицу времени к среднему числу объектов, работающих в данный отрезок времени исправно, при условии, что отказавшие объекты не восстанавливаются и не заменяются исправными;

Находится по формуле:

 , (5.4)

где  — число отказов за интервал времени .

 , (5.5)

.

где  — число работающих исправно объектов в начале интервала времени ;

 — число работающих исправно объектов в конце интервала времени .

.

— средняя наработка на отказ Т0 — характеризует надёжность восстанавливаемого прибора, устройства или технической системы. Средняя продолжительность работы устройства между отказами, то есть показывает, какая наработка в среднем приходится на один отказ. Выражается в часах. Находиться по формуле:

 , (5.6)

где n — число отказов в системе;

 — время исправной работы системы между (i-1) и i — м отказами системы.

Допустим, за весь период наблюдения произошло 2 отказа системы. Перед началом наблюдения система проработала 72 часа, в конце наблюдения наработка составила 336 часов. Используя эти данные получим:

    5.3 Модели надежности

Модель надежности программного обеспечения относится к математическим терминам и построена для оценки зависимости надежности программного обеспечения от определенных параметров. Значения данных параметров могут быть известными, или измерены в ходе наблюдений за функционированием программного обеспечения[10,11].

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

Аналитические модели, в свою очередь, представлены двумя группами: динамические и статические модели. В динамических моделях поведение программ, появление отказов, рассматривается во времени. Статические модели появление отказов не связывают со временем, они рассматривают только зависимость количества ошибок от числа тестовых прогонов или от характеристики входных данных.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

5.3.1 Модель Муса

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

На протяжении всего жизненного цикла программного обеспечения может быть выявлено М0 отказов. Так же будут выявлены все N0 ошибок, которые были найдены до начала тестирования.

Общее число отказов M0 взаимосвязано с первоначальным числом ошибок N0 , соотношением:

 , (5.7)

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

Модель Муса предусматривает два вида времени:

—   суммарное время функционирования τ, которое учитывает
чистое время тестирования до контрольного момента, когда проводится оценка надежности;

—   оперативное время t — время выполнения программы, планируемое от контрольного момента и далее при условии, что дальнейшего устранения ошибок не будет (время безотказной работы в процессе эксплуатации).

Суммарное время функционирования τ предполагает:

—   интенсивность отказов пропорциональна числу неустраненных ошибок;

—   скорость изменения числа устраненных ошибок, измеряемая относительно суммарного времени функционирования, пропорциональна интенсивности отказов.

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

 , (5.8)

где t — время работы до отказа.

Если интенсивность отказов постоянна, то средняя наработка на отказ обратно пропорциональна интенсивности отказов.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Средняя наработка находится по формуле:

, (5.9)

где — средняя наработка на отказ до начала тестирования;

С — коэффициент сжатия тестов;

τ — суммарное время функционирования.

К примеру, если 1 ч тестирования равен 8 ч работы в реальных условиях, то коэффициент сжатия тестов равен 8.

 , (5.10)

где f — средняя скорость исполнения программы, отнесенная к числу операторов;

k — является коэффициентом проявления ошибок, который связывает частоту возникновения ошибок со «скоростью ошибок» (скорость, с которой бы встречались ошибки программы, если бы программа выполнялась линейно-последовательно по командам), значение определяют эмпирическим путем по однотипным программам, оно лежит в пределах от 1,54 10-7 до 3,99 · 10-7;

 — начальное число ошибок программы, его можно рассчитать по модели Шумана на основе статических данных.

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

 , (5.11)

Предположим, что в системе работают 500 операторов, скорость работы системы равна 106 операторов в час. Система тестировалась 120 часов, за которые было выявлено 30 ошибок и 12 отказов.

По формуле (5.10) найдём среднюю наработку на отказ перед началом тестирования:

Среднюю наработку на отказ найдём по формуле (5.9):

221,45

Надежность для оперативного периода  равную 150 часам найдём по формуле (5.10):

.

5.3.2 Модель Коркорэна

Применение модели предполагает знание следующих ее показателей:

—     содержание изменяющейся вероятности отказов для различных источников ошибок и разную вероятность их исправления;

—     использование таких параметров, как результат только N испытаний, в которых наблюдается  ошибок i-го типа;

—     выявление в ходе N испытаний ошибки i-го типа появляется с вероятностью .

 , (5.12)

где N0 — число безотказных (или безуспешных) испытаний, выполненных в серии из N испытаний;- известное число типов ошибок.

Параметр Yi вычисляется из соотношения:

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

 ;

 .

где  — вероятность выявления при тестировании ошибки i-го типа.

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

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

Надежность составляет 95,24%.

. ОБЗОР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ   6.1 Панель администрирования

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

Рисунок 6.1 — Меню программы

Выбрав вкладку меню «DB» → «Connect» отправляется запрос на подключение к базе данных. Подключение совершается только при правильном заполнении значений в таблице, пример показан на рисунке 6.2.

Рисунок 6.2 — Таблица значении для подключения к БД

При входе в систему с правами администратора требуется пройти авторизацию (Рисунок 6.3).

Рисунок 6.3 — Процедура авторизации

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

Рисунок 6.4 — Загрузка эталонных изображений

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

Рисунок 6.5 — Выбор изображения

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

На рисунке 6.6 представлен результат анализа изображения в графическом виде.

Рисунок 6.6 — Результат анализа изображения

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

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

Рисунок 6.7 — Данные об анализах объектов   6.2 Редактирование кода программы в Borland Delphi 7.0

Для внесения в программу различных изменений необходимо открыть файл проекта программы с помощью Borland Delphi 7.0. Кроме того, для внесения изменений в программный код необходимо зайти в раздел «Программный код» представленный на рисунке 6.8.

Рисунок 6.8 — Редактирование кода в Borland Delphi 7.0

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

заключение

При выполнении данной выпускной квалификационной работы применялись алгоритмы обработки изображений в системах технического зрения, которые на основании изображений могут вычислить различные данные о реальном объекте исследования. Данная платформа является гибридной, так как используется аналого-цифровая обработка изображений объектов, то есть преобразование аналогового сигнала с видеокамер в цифровое изображение.

В результате этого программно — аппаратная платформа формирует набор неизменных признаков за короткий период времени вычисления. Данные признаки используют для распознавания объектов и причисления их к какому — либо классу.

Подобные системы можно применять на производстве (определение площади или периметра какого — либо объекта, отбор необходимых деталей среди множества различных объектов, например на конвейере).

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

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

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

Одним из известных методов определения количественно — качественных характеристик исследуемого объекта является использование лазерного и видео сканирования, но он требует обязательного прохождения объекта через специальные площадки.

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

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

Все перечисленные выше альтернативные решения являются более сложными и вынуждают применять специальное дорогостоящее оборудование.

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

Список использованных источников

1. Бьюли А. Изучаем SQL / А. Бьюли. — Санкт — Петербург — Москва: Символ — Плюс, 2007. — 312 с.

2. Визильтер Ю. В. Обработка и анализ изображений в задачах машинного зрения / Ю. В. Визильтер, С. Ю. Желтов, А. В. Бондаренко. — Москва: Физматкнига, 2010. — 672 с.

. Горелик А. Л. Методы распознавания / А. Л. Горелик, В. А. Скрипкин. — Москва: Высшая школа, 2004. — 264 с.

4. Гридин В. Н. Адаптивные системы технического зрения / В. Н. Гридин, В. С. Титов, М. И. Труфанов. — Санкт — Петербург: Наука, 2009. — 442 с.

5. Ерош, И. Л. Обработка и распознавание изображений в системах превентивной безопасности / И. Л. Ерош, М. Б. Сергеев, Н. В. Соловьев. — Санкт — Петербург , 2005. — 154 с.

6. Коржинский, С. Н. Изучаем Delphi [Электронный ресурс] / С. Н. Коржинский. — SNK Press Online, 2007. — 344 с. Режим доступа: #»896590.files/image086.gif»>

Более подробно данная схема рассмотрена в главе 3.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

Приложение Б

Структурная схема программно — аппаратной платформы

Общий вид структурной схемы программно — аппаратной платформы анализа типоразмерных характеристик объектов.

Приложение В

Листинг программы

unit Main;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, StdCtrls, ComCtrls, Grids, md5Hash, DB, mySQLDbTables,, DBCtrls, mySQLDirectQuery,MySQLBatch, ValEdit, Menus;= class(TForm): TLabel;: TLabel;: TListBox;: TListBox;: TPageControl;: TTabSheet;: TTabSheet;: TStringGrid;: TStringGrid;: TButton;: TButton;: TGroupBox;: TImage;: TButton;: TGroupBox;: TImage;: TStringGrid;: TDBGrid;: TValueListEditor;: TDataSource;: TmySQLTable;: TmySQLDatabase;: TButton;: TLabel;: TButton;: TmySQLQuery;: TmySQLTable;: TDataSource;: TShape;: TLabel;: TShape;: TLabel;: TShape;: TLabel;: TShape;: TLabel;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TLabel;: TDBNavigator;: TMenuItem;: TLabel;FormCreate(Sender: TObject);Button3Click(Sender: TObject);ListBox1DblClick(Sender: TObject);ListBox2Click(Sender: TObject);ListBox1Click(Sender: TObject);StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);Button1Click(Sender: TObject);Button4Click(Sender: TObject);Button5Click(Sender: TObject);Button6Click(Sender: TObject);Connect1Click(Sender: TObject);Disconnect1Click(Sender: TObject);N3Click(Sender: TObject);Image3Click(Sender: TObject);N4Click(Sender: TObject);N5Click(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);DBGrid1CellClick(Column: TColumn);

{ Private declarations }

{ Public declarations };: TForm1;Unit2, tools;

{$R *.dfm}TForm1.FormCreate(Sender: TObject);;(‘images’, form1.ListBox1);;TForm1.Button3Click(Sender: TObject);rnd:integer;.DBGrid1.Enabled:=False;.MainMenu1.Items.Find(‘Изображение’).Find(‘Анализ’).Enabled:=True;.Button6.Enabled:=True;(form1.StringGrid2);(form1.StringGrid1);(form1.StringGrid4);:= Random(Form1.ListBox1.Count);.ListBox2.Clear;.Caption := ExtractFileDir(ParamStr(0)) + ‘\’ + Form1.ListBox1.Items[rnd];(label9.Caption, form1.Image1);(ExtractFileDir(ParamStr(0)) + ‘\areaarea.bmp’, form1.Image2);(form1.StringGrid1, form1.Image1);.Refresh;;TForm1.ListBox1DblClick(Sender: TObject);p:real;:integer;:string;.Button6.Enabled:=True;(form1.StringGrid2);(form1.StringGrid1);(form1.StringGrid4);.ListBox2.Clear;.Refresh;:= ExtractFileDir(ParamStr(0));(path + ‘\area\area.bmp’, form1.Image2);.Label9.Caption := path + ‘\’ + Form1.ListBox1.Items[form1.ListBox1.ItemIndex];(form1.Label9.Caption, form1.Image1);(form1.StringGrid1, form1.Image1);;TForm1.ListBox2Click(Sender: TObject);Form1.ListBox2.Items.Count = Form1.ListBox1.Items.Count then.ListBox1.Selected[form1.ListBox2.ItemIndex];.ListBox1.ItemIndex:= form1.ListBox2.ItemIndex;.ListBox1.SetFocus;Click(ListBox1);.Refresh;;;TForm1.ListBox1Click(Sender: TObject);;

//выводим массив таблицыTForm1.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);form1.StringGrid1.Cells[ACol,ARow]<>» thenform1.StringGrid1.Cells[Acol, ARow] = ‘0’ then.StringGrid1.Canvas.Brush.Color:=clYellow;.StringGrid1.Canvas.FillRect(Rect);.StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid1.Cells[Acol,Arow]);;Perimeter(form1.StringGrid1, Acol,Arow) = True then.StringGrid1.Canvas.Brush.Color:=clRed;.StringGrid1.Canvas.FillRect(Rect);.StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid1.Cells[Acol,Arow]);;Vertex(StringGrid1, Acol, Arow) = True then.StringGrid1.Canvas.Brush.Color:=clBlue;.StringGrid1.Canvas.FillRect(Rect);.StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid1.Cells[Acol,Arow]);;Extrema(StringGrid1, Acol, Arow) = True then.StringGrid1.Canvas.Brush.Color:=clPurple;.StringGrid1.Canvas.FillRect(Rect);.StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid1.Cells[Acol,Arow]);;Centroid(StringGrid1, Acol, Arow) = True then.StringGrid1.Canvas.Brush.Color:=clGreen;.StringGrid1.Canvas.FillRect(Rect);.StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid1.Cells[Acol,Arow]);;.StringGrid1.Canvas.Brush.Color:=clWhite;.StringGrid1.Canvas.FillRect(Rect);.StringGrid1.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid1.Cells[Acol,Arow]);;;TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);form1.StringGrid2.Cells[ACol,ARow]<>» thenform1.StringGrid2.Cells[Acol, ARow] = ‘0’ then.StringGrid2.Canvas.Brush.Color:=clYellow;.StringGrid2.Canvas.FillRect(Rect);.StringGrid2.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid2.Cells[Acol,Arow]);;Perimeter(form1.StringGrid2, Acol,Arow) = True then.StringGrid2.Canvas.Brush.Color:=clRed;.StringGrid2.Canvas.FillRect(Rect);.StringGrid2.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid2.Cells[Acol,Arow]);;Vertex(StringGrid2, Acol, Arow) = True then.StringGrid2.Canvas.Brush.Color:=clBlue;.StringGrid2.Canvas.FillRect(Rect);.StringGrid2.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid2.Cells[Acol,Arow]);;Extrema(StringGrid2, Acol, Arow) = True then.StringGrid2.Canvas.Brush.Color:=clPurple;.StringGrid2.Canvas.FillRect(Rect);.StringGrid2.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid2.Cells[Acol,Arow]);;Centroid(StringGrid2, Acol, Arow) = True then.StringGrid2.Canvas.Brush.Color:=clGreen;.StringGrid2.Canvas.FillRect(Rect);.StringGrid2.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid2.Cells[Acol,Arow]);;.StringGrid2.Canvas.Brush.Color:=clWhite;.StringGrid2.Canvas.FillRect(Rect);.StringGrid2.Canvas.TextOut(Rect.Left,Rect.Top, form1.StringGrid2.Cells[Acol,Arow]);;;TForm1.Button1Click(Sender: TObject);List: TList;.mySQLDatabase1.ConnectionCharacterSet:=’cp1251′;.mySQLDatabase1.Host := Form1.ValueListEditor1.Values[‘HOST’];.mySQLDatabase1.UserName := Form1.ValueListEditor1.Values[‘USER’];.mySQLDatabase1.UserPassword:=form1.ValueListEditor1.Values[‘PASSWORD’];.mySQLDatabase1.Connect;.mySQLDatabase1.SelectDB(form1.ValueListEditor1.Values[‘DB’]);.mySQLTable1.TableName:=’list’;.mySQLTable1.Open;form1.mySQLDatabase1.Connected = True then.MainMenu1.Items.Find(‘DB’).Find(‘Connect’).Visible:=False;.MainMenu1.Items.Find(‘DB’).Find(‘Disconnect’).Visible:=True;.MainMenu1.Items.Find(‘Изображение’).Enabled:=True;.ListBox1.Enabled:=True;.Button5.Enabled:=True;.Button3.Enabled:=True;.Label3.Caption:=’Connected’;.Button1.Enabled := False;;;TForm1.Button4Click(Sender: TObject);.Show;;TForm1.Button5Click(Sender: TObject);.mySQLDatabase1.Disconnect;form1.mySQLDatabase1.Connected = False then.ListBox1.Enabled:=False;.MainMenu1.Items.Find(‘Изображение’).Find(‘Анализ’).Enabled:=False;.MainMenu1.Items.Find(‘DB’).Find(‘Connect’).Visible:=True;.MainMenu1.Items.Find(‘DB’).Find(‘Disconnect’).Visible:=False;.MainMenu1.Items.Find(‘Изображение’).Enabled:=False;.Button5.Enabled:=False;.Label3.Caption:=’Disconnected’;.Button1.Enabled := True;.Button3.Enabled := False;.Button6.Enabled := False;(ExtractFileDir(ParamStr(0)) + ‘\area\area.bmp’, form1.Image1);(ExtractFileDir(ParamStr(0)) + ‘\area\area.bmp’, form1.Image2);(form1.StringGrid2);(form1.StringGrid1);;;TForm1.Button6Click(Sender: TObject);st:TStringList;,hash2,p,s,p2,s2,col_v,col_e,col_v2,col_e2:string;,parent:variant;.DBGrid1.Enabled:=True;:= TStringList.Create();.Clear;:= QuotedStr(getValHash(form1.StringGrid1));:= getValP(form1.StringGrid1);:= getValS(form1.StringGrid1);_v := getValVertex(form1.StringGrid1);_e := getValExtrems(form1.StringGrid1);.Add(‘SELECT * FROM benchmarks WHERE hash=’ + hash + ‘;’);.mySQLTable2.TableName := ‘benchmarks’;.mySQLTable2.Open;.mySQLQuery1.SQL := st;.mySQLQuery1.Active := True;:= form1.mySQLQuery1.FieldValues[‘path’];:= form1.mySQLQuery1.FieldValues[‘hash’];.mySQLQuery1.Active := False;path <> Null thenparent <> ‘-‘ then(path, form1.Image2);(form1.StringGrid2, form1.Image2);;:= QuotedStr(getValHash(form1.StringGrid2));:= getValP(form1.StringGrid2);:= getValS(form1.StringGrid2);(‘Совпадение с эталоном’ + chr(13) + ‘hash (изображения): ‘ + hash + chr(13) + ‘hash (эталона): ‘ + hash2 + chr(13) + ‘P (изображения): ‘ + p + chr(13)+ ‘P (эталона): ‘ + p2 + chr(13) + ‘S (изображения): ‘ + s + chr(13)+ ‘S (эталона): ‘ + s2);.mySQLDatabase1.Execute(‘INSERT INTO list VALUES(0,’ + hash + ‘,’ + p + ‘,’+ s + ‘,’ + col_v + ‘,’ + col_e + ‘,’ + QuotedStr(parent) + ‘,’ + QuotedStr(StringReplace(form1.Label9.Caption, », ‘\’,[rfReplaceAll, rfIgnoreCase])) + ‘);’);.Clear;.Add(‘SELECT * FROM benchmarks WHERE p=’ + p + ‘ and s=’ + s + ‘;’);.mySQLQuery1.SQL := st;.mySQLQuery1.Active:=True;:= form1.mySQLQuery1.FieldValues[‘path’];:= form1.mySQLQuery1.FieldValues[‘hash’];path <> Null thenparent <> ‘-‘ then(path, form1.Image2);(form1.StringGrid2, form1.Image2);;:= QuotedStr(getValHash(form1.StringGrid2));:= getValP(form1.StringGrid2);:= getValS(form1.StringGrid2);(‘Совпадение с эталоном’ + chr(13) + ‘hash (изображения): ‘ + hash + chr(13) + ‘hash (эталона): ‘ + hash2 + chr(13) + ‘P (изображения): ‘ + p + chr(13)+ ‘P (эталона): ‘ + p2 + chr(13) +’S (изображения): ‘ + s + chr(13)+ ‘S (эталона): ‘ + s2);.mySQLDatabase1.Execute(‘INSERT INTO list VALUES(0,’ + hash + ‘,’ + p + ‘,’+ s + ‘,’ + col_v + ‘,’ + col_e + ‘,’ + QuotedStr(parent) + ‘,’ + QuotedStr(StringReplace(form1.Label9.Caption, », ‘\’,[rfReplaceAll, rfIgnoreCase])) + ‘);’);(form1.StringGrid1, form1.Image1);(form1.StringGrid2);(‘Нет совпадений’);.mySQLDatabase1.Execute(‘INSERT INTO list VALUES(0,’ + hash + ‘,’ + p + ‘,’ + s + ‘,’ + col_v + ‘,’ + col_e + ‘,’ + QuotedStr(‘-‘) + ‘,’ + QuotedStr(StringReplace(form1.Label9.Caption, », ‘\’,[rfReplaceAll, rfIgnoreCase])) + ‘);’);;;.Free;.mySQLTable1.Refresh;.Button6.Enabled:=False;.mySQLQuery1.Active:=False;;TForm1.Connect1Click(Sender: TObject);.Button1.Click;;TForm1.Disconnect1Click(Sender: TObject);.Button5.Click;;TForm1.N3Click(Sender: TObject);;TForm1.Image3Click(Sender: TObject);.Button3.Click;;

____________________________________________________________tools;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, StdCtrls, ComCtrls, Grids, md5Hash, DB, mySQLDbTables,, DBCtrls, mySQLDirectQuery,MySQLBatch;Perimeter(SG:TStringGrid; col, row:integer):bool;Centroid(SG:TStringGrid; col, row:integer):bool;CheckVoidSG(SG:TStringGrid):bool;cleanTable(SG:TStringGrid);Extrema(SG:TStringGrid; col, row:integer):bool;Area(col, row, max_x, max_y, min_x, min_y:integer):bool;GetAllBMPFiles( Path: string; Lb: TListBox );getValCentroid(SG:TStringGrid):string;getValP(SG:TStringGrid):string;getValS(SG:TStringGrid):string;getValHash(SG:TStringGrid):string;getValVertex(SG:TStringGrid):string;getValExtrems(SG:TStringGrid):string;MaxP(m:array of real):integer;LoadBitmap(path:String; img:TImage);ImgToBin(M:TStringGrid; img:TImage);StringToHex(S: String): String;Vertex(SG:TStringGrid; col, row:integer):bool;SmoothResize(Src, Dst: TBitmap);xy_max_and_min(SG:TStringGrid; var max_x, max_y, min_x, min_y:integer);= array[Word] of TRGBTriple;= ^TRGBArray;Perimeter(SG:TStringGrid; col, row:integer):bool;c1,c2,c3,c4,c5:string;:=False;(col <> 0) and (row <> 0) and (col <> SG.ColCount — 1) and (row <> SG.RowCount — 1) then:= SG.Cells[col, row — 1];:= SG.Cells[col + 1, row];:= SG.Cells[col, row + 1];:= SG.Cells[col — 1, row];:= SG.Cells[col, row];((c1 = ‘1’) or (c2 = ‘1’) or (c3 = ‘1’) or (c4 = ‘1’)) and (c5 = ‘0’) then:= True;SG.Cells[col, row] = ‘0’ then:= True;;;xy_max_and_min(SG:TStringGrid; var max_x, max_y, min_x, min_y:integer);i,j:integer;_x := 65;_y := 65;_x := -1;_y := -1;j:=0 to SG.RowCount — 1 doi:=0 to SG.ColCount — 1 doExtrema(SG, j, i) = True theni > max_x then_x:=i;i < min_x then_x:=i;j > max_y then_y:=j;j < min_y then_y:=j;;;Area(col, row, max_x, max_y, min_x, min_y:integer):bool;:= False;((col >= min_x) and (col <= max_x)) and ((row >= min_y) and (row <= max_y)) then:= True;;;Vertex(SG:TStringGrid; col, row:integer):bool; //определение вершины образаc1,c2,c3,c4,c5,c6,c7,c8,c9:integer;:=False;Perimeter(SG, col, row) = True then(col <> 0) and (row <> 0) and (col <> SG.ColCount — 1) and (row <> SG.RowCount — 1) then:= strtoint(SG.Cells[col, row]);:= strtoint(SG.Cells[col, row — 1]);:= strtoint(SG.Cells[col + 1, row — 1]);:= strtoint(SG.Cells[col + 1, row]);:= strtoint(SG.Cells[col + 1, row + 1]);:= strtoint(SG.Cells[col, row + 1]);:= strtoint(SG.Cells[col — 1, row + 1]);:= strtoint(SG.Cells[col — 1, row]);:= strtoint(SG.Cells[col — 1, row — 1]);c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8 + c9 = 5 then:=True;((row = 0) and (col = 0)) or ((row = 0) and (col = SG.ColCount — 1)) or ((row = SG.RowCount — 1) and (col = 0)) or ((row = SG.RowCount — 1) and (col = SG.ColCount — 1)) then:=True;:= strtoint(SG.Cells[col, row]);row = 0 then:= strtoint(SG.Cells[col — 1, row]);:= strtoint(SG.Cells[col, row + 1]);:= strtoint(SG.Cells[col + 1, row]);;col = 0 then:= strtoint(SG.Cells[col, row — 1]);:= strtoint(SG.Cells[col, row + 1]);:= strtoint(SG.Cells[col + 1, row]);;row = SG.RowCount — 1 then:= strtoint(SG.Cells[col — 1, row]);:= strtoint(SG.Cells[col + 1, row]);:= strtoint(SG.Cells[col, row -1]);;col = SG.ColCount — 1 then:= strtoint(SG.Cells[col, row — 1]);:= strtoint(SG.Cells[col, row + 1]);:= strtoint(SG.Cells[col — 1, row]);;(c2 = 1) or (c3 = 1) or (c4 = 1) then:= True;;;;Extrema(SG:TStringGrid; col, row:integer):bool;i,k:integer;:= False;Vertex(SG, col, row) = True then(row <> 0) and (col <> 0) and (row <> SG.RowCount-1) and (col <> SG.ColCount — 1) then:= 0;i := 0 to SG.ColCount — 1 do:= k + strtoint(SG.Cells[i, row + 1]);k = SG.ColCount then:= True;:= 0;i := 0 to SG.ColCount — 1 do:= k + strtoint(SG.Cells[i, row — 1]);k = SG.ColCount then:= True;Result = False then:= 0;i := 0 to SG.RowCount — 1 do:= k + strtoint(SG.Cells[col + 1, i]);k = SG.RowCount then:= True;:= 0;i := 0 to SG.RowCount — 1 do:= k + strtoint(SG.Cells[col — 1, i]);k = SG.RowCount then:= True;;:= True;; CheckVoidSG(SG:TStringGrid):bool; //проверка отсутствия значений в таблице

var r,i,j:integer;:=False;:=0;i := 0 to SG.RowCount — 1 doj := 0 to SG.ColCount — 1 doSG.Cells[j,i] <>» then:= r + 1;r = (SG.ColCount * SG.RowCount) then:= True;;SmoothResize(Src, Dst: TBitmap); //сжатие изображения, y: Integer;, yP: Integer;, yP2: Integer;, SrcLine2: pRGBArray;: Integer;, z2, iz2: Integer;: pRGBArray;: Integer;, w2, w3, w4: Integer;.PixelFormat := pf24Bit;.PixelFormat := pf24Bit;(Src.Width = Dst.Width) and (Src.Height = Dst.Height) then.Assign(Src):= Dst.ScanLine[0];:= Integer(Dst.ScanLine[1]) — Integer(DstLine);:= MulDiv(pred(Src.Width), $10000, Dst.Width);:= MulDiv(pred(Src.Height), $10000, Dst.Height);:= 0;y := 0 to pred(Dst.Height) do:= 0;:= Src.ScanLine[yP shr 16];(yP shr 16 < pred(Src.Height)) then:= Src.ScanLine[succ(yP shr 16)]:= Src.ScanLine[yP shr 16];:= succ(yP and $FFFF);:= succ((not yp) and $FFFF);x := 0 to pred(Dst.Width) do:= xP shr 16;:= xP and $FFFF;:= MulDiv(z, iz2, $10000);:= iz2 — w2;:= MulDiv(z, z2, $10000);:= z2 — w4;[x].rgbtRed := (SrcLine1[t3].rgbtRed * w1 +[t3 + 1].rgbtRed * w2 +[t3].rgbtRed * w3 + SrcLine2[t3 + 1].rgbtRed * w4) shr 16;[x].rgbtGreen :=

(SrcLine1[t3].rgbtGreen * w1 + SrcLine1[t3 + 1].rgbtGreen * w2 +[t3].rgbtGreen * w3 + SrcLine2[t3 + 1].rgbtGreen * w4) shr 16;[x].rgbtBlue := (SrcLine1[t3].rgbtBlue * w1 +[t3 + 1].rgbtBlue * w2 +[t3].rgbtBlue * w3 +[t3 + 1].rgbtBlue * w4) shr 16;(xP, xP2);; {for}(yP, yP2);:= pRGBArray(Integer(DstLine) + DstGap);; {for}; {if}; {SmoothResize}GetAllBMPFiles( Path: string; Lb: TListBox ); //выбор изображения: TSearchRec;: boolean;:= FindFirst( Path + ‘*.bmp’, faAnyFile, sRec ) = 0;isFound do( sRec.Name <> ‘.’ ) and ( sRec.Name <> ‘..’ ) then( sRec.Attr and faDirectory ) = faDirectory then( Path + » + sRec.Name, Lb );.Items.Add( Path + » + sRec.Name );;.ProcessMessages;:= FindNext( sRec ) = 0;;( sRec );; MaxP(m:array of real):integer; // определение необходимости данной функции

var, i:integer;, max:real;:= 0;:= 0;i:= 0 to Length(m) -1 dom[i] > max then:= m[i];:= i;;;:= maxNO;;cleanTable(SG:TStringGrid);i,j:integer;i:=0 to SG.RowCount — 1 doj:=0 to SG.ColCount — 1 do.Cells[j,i]:=»;;LoadBitmap(path:String; img:TImage); // загрузка изображенияbm: TBitmap;:= TBitmap.Create;.LoadFromFile(path);(bm, Img.Picture.Bitmap);.Refresh();;ImgToBin(M:TStringGrid; img:TImage); // преобразование изображения вx,y,p,s: integer; // таблицуy := 0 to Img.Height — 1 do beginx := 0 to Img.Width — 1 do beginImg.Canvas.Pixels[x,y]<>0 then p:=1 else p:=0;.Cells[x,y]:=IntToStr(p);;;;StringToHex(S: String): String; //преобразование в 16, в строкуI: Integer;:= »;I := 1 to length (S) do:= Result+IntToHex(ord(S[i]),2);;Centroid(SG:TStringGrid; col, row:integer):bool;x,y,buff,xc,yc:integer;,sumx,sumy:cardinal;:=False;:=0;sumy:=0;N:=0;

// Алгоритм вычисления центра масс образа

for y := 0 to SG.RowCount — 1 dox := 0 to SG.ColCount — 1 do:= strtoint(SG.Cells[y,x]);buff = 0 then buff := 1 else buff := 0;:= sumx + x * buff;:= sumy + y * buff; := N + buff;

end;

// получение координат центра масс образа

xc:= round(sumx/N);:= round(sumy/N);(col = xc) and (row = yc) then:=True;;getValCentroid(SG:TStringGrid):string; //возвращение координаты центраi,j:integer;i:=0 to SG.RowCount — 1 doj:=0 to SG.ColCount — 1 doCentroid(SG, j, i) = True then:= ‘x: ‘ + inttostr(j) + ‘ / y: ‘+ inttostr(i);;;getValExtrems(SG:TStringGrid):string;i,j,e:integer;:=0;i:=0 to SG.RowCount — 1 doj:=0 to SG.ColCount — 1 doExtrema(SG, j, i) = True then:= e + 1;:= inttostr(e);;getValVertex(SG:TStringGrid):string;i,j,v:integer;:=0;i:=0 to SG.RowCount — 1 doj:=0 to SG.ColCount — 1 doVertex(SG, j, i) = True then:= v + 1;:= inttostr(v);;getValP(SG:TStringGrid):string; //получение значения периметраi,j,p:integer;:=0;i:=0 to SG.RowCount — 1 doj:=0 to SG.ColCount — 1 doPerimeter(SG, j, i) = True then:= p + 1;:= inttostr(p);;getValS(SG:TStringGrid):string; //получение значения площадиi,j,s:integer;:=0;i:=0 to SG.RowCount — 1 doj:=0 to SG.ColCount — 1 doSG.Cells[j,i] = ‘0’ then:= s + 1;:= inttostr(s);;getValHash(SG:TStringGrid):string; // получение хэша таблицыstr_for_hash:string;,j:integer;_x, max_y, min_x, min_y:integer;_max_and_min(SG, max_x, max_y, min_x, min_y);_for_hash:=»;i:=0 to SG.RowCount — 1 doj:=0 to SG.ColCount — 1 doArea(j,i,max_x, max_y, min_x, min_y) = True then

//SG.Cells[i,j]:=’0′;_for_hash := str_for_hash + SG.Cells[i,j];;str_for_hash <> » then:=md5(StringToHex(str_for_hash));;.md5Hash;, SysUtils;md5(S: String): String;= Array of Byte;= Array of DWORD;= Array[0..3] of DWORD;= 4;= 16;= 64;LRot32(A: DWORD; B: Byte): DWORD;:= (A shl B) or (A shr (32-B));;Compressor(Hash, Buffer: Pointer; IV: LongWord = 0);, B, C, D: DWORD;:= TArrayOfDWORD(Hash)[0];:= TArrayOfDWORD(Hash)[1];:= TArrayOfDWORD(Hash)[2];:= TArrayOfDWORD(Hash)[3];:= Pointer(DWORD(Buffer) + IV);:= B + LRot32(A + (D xor (B and (C xor D))) + TArrayOfDWORD(Buffer)[ 0] + $D76AA478, 7);:= A + LRot32(D + (C xor (A and (B xor C))) + TArrayOfDWORD(Buffer)[ 1] + $E8C7B756, 12);:= D + LRot32(C + (B xor (D and (A xor B))) + TArrayOfDWORD(Buffer)[ 2] + $242070DB, 17);:= C + LRot32(B + (A xor (C and (D xor A))) + TArrayOfDWORD(Buffer)[ 3] + $C1BDCEEE, 22);:= B + LRot32(A + (D xor (B and (C xor D))) + TArrayOfDWORD(Buffer)[ 4] + $F57C0FAF, 7);:= A + LRot32(D + (C xor (A and (B xor C))) + TArrayOfDWORD(Buffer)[ 5] + $4787C62A, 12);:= D + LRot32(C + (B xor (D and (A xor B))) + TArrayOfDWORD(Buffer)[ 6] + $A8304613, 17);:= C + LRot32(B + (A xor (C and (D xor A))) + TArrayOfDWORD(Buffer)[ 7] + $FD469501, 22);:= B + LRot32(A + (D xor (B and (C xor D))) + TArrayOfDWORD(Buffer)[ 8] + $698098D8, 7);:= A + LRot32(D + (C xor (A and (B xor C))) + TArrayOfDWORD(Buffer)[ 9] + $8B44F7AF, 12);:= D + LRot32(C + (B xor (D and (A xor B))) + TArrayOfDWORD(Buffer)[10] + $FFFF5BB1, 17);:= C + LRot32(B + (A xor (C and (D xor A))) + TArrayOfDWORD(Buffer)[11] + $895CD7BE, 22);:= B + LRot32(A + (D xor (B and (C xor D))) + TArrayOfDWORD(Buffer)[12] + $6B901122, 7);:= A + LRot32(D + (C xor (A and (B xor C))) + TArrayOfDWORD(Buffer)[13] + $FD987193, 12);:= D + LRot32(C + (B xor (D and (A xor B))) + TArrayOfDWORD(Buffer)[14] + $A679438E, 17);:= C + LRot32(B + (A xor (C and (D xor A))) + TArrayOfDWORD(Buffer)[15] + $49B40821, 22);:= B + LRot32(A + (C xor (D and (B xor C))) + TArrayOfDWORD(Buffer)[ 1] + $F61E2562, 5);:= A + LRot32(D + (B xor (C and (A xor B))) + TArrayOfDWORD(Buffer)[ 6] + $C040B340, 9);:= D + LRot32(C + (A xor (B and (D xor A))) + TArrayOfDWORD(Buffer)[11] + $265E5A51, 14);:= C + LRot32(B + (D xor (A and (C xor D))) + TArrayOfDWORD(Buffer)[ 0] + $E9B6C7AA, 20);:= B + LRot32(A + (C xor (D and (B xor C))) + TArrayOfDWORD(Buffer)[ 5] + $D62F105D, 5);:= A + LRot32(D + (B xor (C and (A xor B))) + TArrayOfDWORD(Buffer)[10] + $02441453, 9);:= D + LRot32(C + (A xor (B and (D xor A))) + TArrayOfDWORD(Buffer)[15] + $D8A1E681, 14);:= C + LRot32(B + (D xor (A and (C xor D))) + TArrayOfDWORD(Buffer)[ 4] + $E7D3FBC8, 20);:= B + LRot32(A + (C xor (D and (B xor C))) + TArrayOfDWORD(Buffer)[ 9] + $21E1CDE6, 5);:= A + LRot32(D + (B xor (C and (A xor B))) + TArrayOfDWORD(Buffer)[14] + $C33707D6, 9);:= D + LRot32(C + (A xor (B and (D xor A))) + TArrayOfDWORD(Buffer)[ 3] + $F4D50D87, 14);:= C + LRot32(B + (D xor (A and (C xor D))) + TArrayOfDWORD(Buffer)[ 8] + $455A14ED, 20);:= B + LRot32(A + (C xor (D and (B xor C))) + TArrayOfDWORD(Buffer)[13] + $A9E3E905, 5);:= A + LRot32(D + (B xor (C and (A xor B))) + TArrayOfDWORD(Buffer)[ 2] + $FCEFA3F8, 9);:= D + LRot32(C + (A xor (B and (D xor A))) + TArrayOfDWORD(Buffer)[ 7] + $676F02D9, 14);:= C + LRot32(B + (D xor (A and (C xor D))) + TArrayOfDWORD(Buffer)[12] + $8D2A4C8A, 20);:= B + LRot32(A + (B xor C xor D) + TArrayOfDWORD(Buffer)[ 5] + $FFFA3942, 4);:= A + LRot32(D + (A xor B xor C) + TArrayOfDWORD(Buffer)[ 8] + $8771f681, 11);:= D + LRot32(C + (D xor A xor B) + TArrayOfDWORD(Buffer)[11] + $6D9D6122, 16);:= C + LRot32(B + (C xor D xor A) + TArrayOfDWORD(Buffer)[14] + $FDE5380C, 23);:= B + LRot32(A + (B xor C xor D) + TArrayOfDWORD(Buffer)[ 1] + $A4BEEA44, 4);:= A + LRot32(D + (A xor B xor C) + TArrayOfDWORD(Buffer)[ 4] + $4BDECFA9, 11);:= D + LRot32(C + (D xor A xor B) + TArrayOfDWORD(Buffer)[ 7] + $F6BB4B60, 16);:= C + LRot32(B + (C xor D xor A) + TArrayOfDWORD(Buffer)[10] + $BEBFBC70, 23);:= B + LRot32(A + (B xor C xor D) + TArrayOfDWORD(Buffer)[13] + $289B7EC6, 4);:= A + LRot32(D + (A xor B xor C) + TArrayOfDWORD(Buffer)[ 0] + $EAA127FA, 11);:= D + LRot32(C + (D xor A xor B) + TArrayOfDWORD(Buffer)[ 3] + $D4EF3085, 16);:= C + LRot32(B + (C xor D xor A) + TArrayOfDWORD(Buffer)[ 6] + $04881D05, 23);:= B + LRot32(A + (B xor C xor D) + TArrayOfDWORD(Buffer)[ 9] + $D9D4D039, 4);:= A + LRot32(D + (A xor B xor C) + TArrayOfDWORD(Buffer)[12] + $E6DB99E5, 11);:= D + LRot32(C + (D xor A xor B) + TArrayOfDWORD(Buffer)[15] + $1FA27CF8, 16);:= C + LRot32(B + (C xor D xor A) + TArrayOfDWORD(Buffer)[ 2] + $C4AC5665, 23);:= B + LRot32(A + (C xor (B or (not D))) + TArrayOfDWORD(Buffer)[ 0] + $F4292244, 6);:= A + LRot32(D + (B xor (A or (not C))) + TArrayOfDWORD(Buffer)[ 7] + $432AFF97, 10);:= D + LRot32(C + (A xor (D or (not B))) + TArrayOfDWORD(Buffer)[14] + $AB9423A7, 15);:= C + LRot32(B + (D xor (C or (not A))) + TArrayOfDWORD(Buffer)[ 5] + $FC93A039, 21);:= B + LRot32(A + (C xor (B or (not D))) + TArrayOfDWORD(Buffer)[12] + $655B59C3, 6);:= A + LRot32(D + (B xor (A or (not C))) + TArrayOfDWORD(Buffer)[ 3] + $8F0CCC92, 10);:= D + LRot32(C + (A xor (D or (not B))) + TArrayOfDWORD(Buffer)[10] + $FFEFF47D, 15);:= C + LRot32(B + (D xor (C or (not A))) + TArrayOfDWORD(Buffer)[ 1] + $85845DD1, 21);:= B + LRot32(A + (C xor (B or (not D))) + TArrayOfDWORD(Buffer)[ 8] + $6FA87E4F, 6);:= A + LRot32(D + (B xor (A or (not C))) + TArrayOfDWORD(Buffer)[15] + $FE2CE6E0, 10);:= D + LRot32(C + (A xor (D or (not B))) + TArrayOfDWORD(Buffer)[ 6] + $A3014314, 15);:= C + LRot32(B + (D xor (C or (not A))) + TArrayOfDWORD(Buffer)[13] + $4E0811A1, 21);:= B + LRot32(A + (C xor (B or (not D))) + TArrayOfDWORD(Buffer)[ 4] + $F7537E82, 6);:= A + LRot32(D + (B xor (A or (not C))) + TArrayOfDWORD(Buffer)[11] + $BD3AF235, 10);:= D + LRot32(C + (A xor (D or (not B))) + TArrayOfDWORD(Buffer)[ 2] + $2AD7D2BB, 15);:= C + LRot32(B + (D xor (C or (not A))) + TArrayOfDWORD(Buffer)[ 9] + $EB86D391, 21);(TArrayOfDWORD(Hash)[0], A);(TArrayOfDWORD(Hash)[1], B);(TArrayOfDWORD(Hash)[2], C);(TArrayOfDWORD(Hash)[3], D);;HashToStr(Hash: Pointer): String;: Byte;:= »;i := 0 to HashSize — 1 do:= Result + IntToHex(TArrayOfByte(Hash)[i], 2);;md5(S: String): String;: THash;, LenHI, LenLO: LongWord;: LongWord;:= »;:= Length(S);:= Len shr 29;:= Len * 8;:= S + #$80;(Len);i := 0 to BuffSize — (Len mod BuffSize) — 1 do S := S + #0;(Len mod BuffSize > 56) theni := 0 to BuffSize — 1 do S := S + #0;(S)[(Length(S) div BlockSize) — 1] := LenHI;(S)[(Length(S) div BlockSize) — 2] := LenLO;[0] := $67452301;[1] := $EFCDAB89;[2] := $98BADCFE;[3] := $10325476;i := 0 to (Length(S) div BuffSize) — 1 do(@CurrentHash, PChar(S), i * BuffSize);:= LowerCase(HashToStr(@CurrentHash));;.

Средняя оценка 0 / 5. Количество оценок: 0

Поставьте оценку первым.

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

356

Закажите такую же работу

Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке