Разработка системы распознавания специального изображения на основе теории векторного пространства

 

Содержание


Введение

. Исследовательский раздел

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

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

.2.1 Распознавание по шаблонам

.2.2 Контекстное распознавание

.2.3 Структурный подход

.2.4 Нейронные сети

.2.5 Клеточные автоматы

.2.6 Другие варианты решения задачи распознавания текста

.3 Обзор и анализ существующих программ распознавания

.3.1 MatanCrack

1.3.2 Интернет сервис anti-captcha.com

.3.3 AddSite

.3.4 PWNtcha

.3.5 aiCaptcha

.4 Формализованное описание постановки задачи

.5 Обоснование выбора векторного пространства для принятия решения о совпадении символов

Выводы

. Специальный раздел

.1 Формально-логическая модель процесса разработки программного обеспечения

.2 Метод распознавания символов на основе теории векторного пространства

.3 Архитектура модуля распознавания символа, модулей корректировки изображения

.4 Особенности реализации предложенного решения и его качественная оценка

Выводы

. Технологический раздел

.1 Структура программного комплекса и UML-представление ПО

.2 Обоснование выбора инструментальных средств реализации программного решения

.3 Алгоритмическая реализация решения задачи

.4 Критерии сравнения разработанного ПО с существующими

решениями

.5 Анализ точности совпадения распознанного изображения

. Безопасность жизнедеятельности

.1 Анализ опасных и вредных факторов на рабочем месте пользователя ПЭВМ

.2 Аттестация рабочего места пользователя ПЭВМ

.3 Требования к микроклимату, содержанию аэроионов и вредных химических веществ в воздухе на рабочих местах, оборудованных ПЭВМ

.4 Требования к уровням шума и вибрации на рабочих местах, оборудованных ПЭВМ

.5 Требования к освещению на рабочих местах, оборудованных ПЭВМ

.6 Требования к помещениям для работы с ПЭВМ

.7 Экологическая оценка драгоценных металлов в деталях, узлах и модулях ПЭВМ, и технологическая схема переработки

. Организационно-экономический раздел

.1 Планирование разработки программного продукта с построением

графика

.2 Определение трудоемкости и продолжительности работ по созданию программного продукта

.3 Построение ленточного графика разработки программного

продукта

.4 Расчет сметы затрат на разработку программного продукта

.5 Расчет основных технико-экономических показателей использования программного продукта

.1 6. Другие разделы

.2 Руководство пользователя

.3 Руководство программиста

.4 Руководство системного администратора

. Научная новизна и практическая значимость проекта

Заключение

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

Приложение А. Листинг программы




Введение


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

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

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

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

В этой работе под специальным изображением мы будем подразумевать «капчу»(Captcha).- это (от англ. «Completely Automated Public Turing test to tell Computers and Humans Apart» - полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей) - торговая марка Университета Карнеги-Меллона, в котором разработали компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером. Термин появился в 2000 году. Основная идея теста: предложить пользователю такую задачу, которую с лёгкостью может решить человек, но которую несоизмеримо сложнее решить компьютеру.

По отношению к автоматизированному распознаванию существуют понятия «слабая CAPTCHA» и «сильная CAPTCHA». В числе «слабостей» - фиксированный шрифт, фиксированное положение символов, отсутствие искажений, отделение символов от фона с использованием цветового ключа или размытия по Гауссу <#"50" src="doc_zip1.jpg" />


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



Усложнение в распознавании заключается в нестабильном фоне. Но из-за фиксированного шрифта, постоянного расположения символов, большого контраста фона и текста алгоритм уязвим к банальному сравнению символов с эталоном.



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


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



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



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



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



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



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


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


Существует несколько основных методов поиска и распознавания, применимых к задаче.

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


.2.1 Распознавание по шаблонам

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


.2.2 Контекстное распознавание

При данном методе система часто включает словари для помощи алгоритмам распознавания. Словари предоставляют справки во многих случаях, но быстро отказывают, когда, например, имеют дело с именами собственными, которые не находятся в словаре. Этот эффект особенно заметен в российской программе FineReader, который чаще, чем в среднем по всем символам, ошибается в словах, которые отсутствует в его словаре.


.2.3 Структурный подход

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

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

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


.2.4 Нейронные сети

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

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

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

1.2.5 Клеточные автоматы

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


.2.6 Другие варианты решения задачи распознавания текста

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

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

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


.3 Обзор и анализ существующих программ распознавания


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

1.3.1 MatanCrack

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

Недостатки программы:

Черные символы на белом фоне;

Отсутствие шумов и других артефактов (например линий);

Символы никогда не пересекаются;

Всегда одинаковый шрифт;

Под интегралом всегда 4 слагаемых.

Степени и множители состоят из одной цифры;

Степени и множители находятся в диапазоне от 2 до 5.

К сильным сторонам можно отнести:

Наличие нелинейных искажений;

Возможное отсутствие степени или множителя;

Иногда, dx слипаются в один символ;

Меняется ширина капчи.

Интернет сервис anti-captcha.com <#"15" src="doc_zip11.jpg" /> элементов поля, обозначаемое как . Величины называются компонентами (координатами) вектора. Число компонентов вектора называется длиной вектора. Векторы считаются равными, если равны их соответствующие компоненты. Число ненулевых компонентов вектора называют весом вектора.

Определение векторного пространства.

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

Множество V является аддитивной абелевой группой.

Для любого вектора и любого скаляра - элемента a поля F определено произведение av, являющееся вектором. Это произведение определено так, что lv=v, где l - единичный элемент поля F.

Выполняются законы дистрибутивности


и ,


где - скаляры, а и - векторы.

Выполняется закон ассоциативности


,

где - скаляры, а - вектор.

Свойства векторного пространства

Максимальное число линейно независимых векторов в V называется размерностью пространства V над полем F.

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

Подмножество W векторного пространства F такое, что любая линейная комбинация векторов этого подмножества снова принадлежит W, называется подпространством пространства V. Легко проверить, что все векторы подпространства удовлетворяют аксиомам 1 - 4. Очевидно, что размерность подпространства не превышает размерности пространства, т.к. во всем пространстве содержится не более n линейно независимых векторов. Каждое подпространство можно рассматривать как самостоятельное пространство. Следовательно, каждое подпространство имеет свой базис.

Скалярным произведением двух векторов одинаковой длины n: и называется скаляр, определяемый как


.

Можно показать, что и .

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

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

Можно показать, что если - подпространство размерности k n-мерного векторного пространства , то размерность нулевого пространства равна n-k.

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


,

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

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


.3 Архитектура модуля распознавания символа, модулей корректировки изображения


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


Рисунок 2.1 - Функциональная структура


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

Если посмотреть на нашу, тестовую капчу, то можно увидеть три основных цвета:

Белый (фон);

Серый (шум);

Красный (текст).

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


Таблица 2.1 - Основные цвета изображения

ЦветКоличество пикселей255625212365220186219135169132227116213115234212051818415

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

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


Таблица 2.2 - Результат бинарного преобразования

ОригиналРезультат

После этого, нам необходимо избавиться от шумов на изображении. Сделать это можно с помощью преобразования Хафа[2.2]. Преобразование Хафа - метод по извлечению элементов из изображения, используемый в анализе, обработке изображения и компьютерном видении. Данный метод предназначен для поиска объектов, принадлежащих определённому классу фигур с использованием процедуры голосования. Процедура голосования применяется к пространству параметров, из которого и получаются объекты определённого класса фигур по локальному максимуму в, так называемом, накопительном пространстве, которое строится при вычислении трансформации Хафа. При автоматизированном анализе цифровых изображений очень часто возникает проблема определения простых фигур, таких как прямые, круги или эллипсы. Во многих случаях используется алгоритм детектирования границ в качестве предобработки для получения точек, находящихся на кривой в изображении. Однако, либо из-за зашумлённости изображения, либо из-за несовершенства алгоритма детектирования границ могут появиться «потерянные» точки на кривой, так же как и небольшие отклонения от идеальной формы прямой, круга или эллипса. По этим причинам часто довольно сложно сгруппировать выделенные границы в соответствующий набор прямых, кругов и эллипсов. Назначение преобразования Хафа в том, чтобы разрешить проблему группировки граничных точек путём применения определённой процедуры голосования к набору параметризованных объектов изображения.

В простейшем случае преобразование Хафа является линейным преобразованием для обнаружения прямых. Прямая может быть задана уравнением y = mx + b и может быть вычислена для любой пары точек на изображении (x, y). При преобразовании Хафа главная идея - учесть характеристики прямой не как точек изображения, а в терминах её параметров, то есть m - коэффициента наклона и b - точки пересечения. Основываясь на этом факте прямая y = mx + b может быть представлена в виде точки с координатами (b, m) в пространстве параметров. Однако, есть одна проблема в том, что вертикальные прямые имеют бесконечные значения для параметров m и b. Соответственно для удобства вычислений лучше всего представить прямую с помощью других параметров, более известных как и (тета). Параметр представляет собой длину радиус-вектора <#"9" height="15" src="doc_zip65.jpg" /> - это угол между этим вектором и осью координат. Таким образом уравнение прямой можно записать так (формула 2.2)


, (2.2)


что может быть преобразовано в


.(2.3)


Поэтому возможно связать с каждой прямой на изображении пару (r,?) которая является уникальной при условии если

, или если .


Плоскость (r,?) иногда называется Пространство Хафа для набора прямых 2-мерном случае. Это представление делает трансформацию Хафа концептуально очень близкой к 2-мерному преобразованию Радона <#"33" src="doc_zip74.jpg" /> в изображении, то все прямые, проходящие через неё соответствуют следующему уравнению:


(2.4)


Это соответствует синусоидальной кривой в (r,?) пространстве, которая, в свою очередь, уникальна для данной точки. Если кривые соответствующие двум точкам накладываются друг на друга, то точка (в пространстве Хафа) где они пересекаются, соответствует прямым (в оригинальном месте изображения), которые проходят через обе точки. В общем случае, ряд точек, которые формируют прямую линию, определяют синусоиды, которые пересекаются в точке параметров для той линии. Таким образом, проблема обнаружения коллинеарных точек может быть сведена к проблеме обнаружения пересекающихся кривых.

Алгоритм преобразования Хафа использует массив, называемый аккумулятором, для определения присутствия прямой y = mx + b. Размерность аккумулятора равна количеству неизвестных параметров пространства Хафа. Например, для линейной трансформации нужно использовать двумерный массив, так как имеются два неизвестных параметра: m и b. Два измерения аккумулятора соответствуют квантизированным значениям параметров m и b. Для каждой точки и её соседей алгоритм определяет достаточен ли вес границы в этой точке. Если да, то алгоритм вычисляет параметры прямой и увеличивает значение в ячейке аккумулятора, соответствующей данным параметрам.

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

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

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

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

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

Основные операции[2.3]:

Перенос. Операция переноса множества пикселов X на вектор t задаётся в виде ={x+t|x?X}. Следовательно, перенос множества единичных пикселов на бинарном изображении сдвигает все пикселы множества на заданное расстояние. Вектор переноса t может задаваться в виде упорядоченной пары (?r,?c), где ?r - компонент вектора переноса в направлении строк, а ?c - компонент вектора переноса в направлении столбцов изображения.

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

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

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

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


Рисунок 2.2 - Результат разбиения изображения на символы.


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

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


.4 Особенности реализации предложенного решения и его качественная оценка


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

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

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

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

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


Выводы


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

3. Технологический раздел


.1 Структура программного комплекса и UML-представление ПО


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

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


Рисунок 3.1 - Классификация функциональности


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

Далее приведено перечисление всех моментов, реализованных в программе:

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

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

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

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

Ниже представлена UML диаграмма классов (рисунок 3.2)


Рисунок 3.2 - UML диаграмма классов.


.2 Обоснование выбора инструментальных средств реализации программного решения


Выбор языка программирования и среды разработки обуславливался несколькими требованиями:

Разработанная на данном языке программа должна работать под большинством количеством ОС;

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

Программа должна работать на платформе Windows Mobile, Android OS, для того, чтобы запускать программно-математический комплекс на мобильных устройствах. Это делает шире область применения данной системы;

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

Этим требования удовлетворяет среда разработки Python IDE и язык программирования Python. Среда разработки кросс-платформенная, что позволяет запускать программы, написанные на языке Python на различных устройствах с различными операционными системами. - высокоуровневый язык программирования <#"680" src="doc_zip85.jpg" />

Рисунок 3.3 - Схема алгоритма работы программы

Рисунок 3.4 - Схема алгоритма распознавания


Реализация векторного пространства довольно проста, на рисунке 3.5 представлена схема алгоритма.

Рисунок 3.5 - Схема алгоритма построения векторного пространства


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

Генетические алгоритмы;

Преобразования Хафа. Можно рассматривать как разновидность автоматической векторизации;

Простое отделение линий, основываясь на соседние точки.

По сравнению с генетическими алгоритмами, преобразования Хафа являются математически более строгим и детерминированным алгоритмом, в котором нет влияния случайного фактора. В данном случае он менее ресурсоёмок, в тоже время достаточно прост для понимания и применения. Кратко, смысл алгоритма заключается в том, что любая прямая на плоскости может быть задана двумя переменными - углом наклона и расстоянием от начала координат. Эти переменными можно рассмотреть как признаки, они формируют своё собственное двумерное пространство. Поскольку прямая есть совокупность точек и каждой из них соответствует своя пара признаков, то в пространстве этих признаков мы будем иметь скопления точек (максимумы на пересечении) в пределах конечных окрестностей признаков соответствующие точкам прямой на исходной плоскости(изображении)[3.2].

Простое отделение линий же заключается в следующем:

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

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

Сохраняем координаты точки вместе с рядом стоящими точками, если они оказались шумом;

Удаляем все лишние точки.

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


Рисунок 3.6 - Изначальное изображение

Рисунок 3.7 - Результат работы алгоритма удаления шума


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

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


Рисунок 3.8 - График распределения точек в столбцах по вертикали


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

3.3 Критерии сравнения разработанного ПО с существующими решениями


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

количество использованной приложением динамической памяти;

требования приложения к системе;

скорость работы алгоритмов распознавания и поиска;

скорость отображения информации;

сбой приложения.

Данная программа была проверена на нескольких ЭВМ. Ниже приведены результаты работы тестового скрипта.

Core 2 Duo E65500m5.750s0m0.015s0m0.000sCore T44000m0.176s0m0.160s0m0.012s

В нашем каталоге находится 50 капч, из чего следует, что на разгадывание одной уходит примерно 0.12 секунд. Из этого следует, что мы можем разгадывать около 432 000 капч в день и получать 145 040 правильных результатов. Довольно не плохой результат, если учитывать что мы работаем в одном потоке. Добавив многопоточность, результаты будут в несколько раз лучше.

3.4 Анализ точности совпадения распознанного изображения

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

Верные предположения - 23

Неверные предположения - 37

Процент угадывания - 46%

Процент ошибок - 64%

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


Выводы


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


4. Безопасность жизнедеятельности


.1 Анализ опасных и вредных факторов на рабочем месте пользователя ПЭВМ


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

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

Рассмотрим подробнее основные вредные факторы[4.1]:

Недостаточная освещенность.

Для избежания недостаточной освещенности искусственное освещение в помещении с ПЭВМ осуществляется люминесцентными источниками света в потолочных светильниках. Величина освещенности при искусственном освещении в горизонтальной плоскости будет не ниже 300 лк.

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

Статическое электричество.

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

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

Шум.

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

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

Уровни звука и эквивалентные уровни звука в помещении, где работают операторы ПЭВМ, не должны превышать 65 дБ.

Электромагнитные поля.

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

Недостаточная чистота и количество необходимого воздуха.

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

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

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

Это приводит к нарушению сна, раздражительности, неудовлетворенности работой и др.

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


.2 Аттестация рабочего места пользователя ПЭВМ


Общие требования к организации рабочих мест пользователей ПЭВМ[4.3].

При размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видео монитора и экрана другого видеомонитора), должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов - не менее 1,2 м.

Рабочие места с ПЭВМ в помещениях с источниками вредных производственных факторов должны размещаться в изолированных кабинах с организованным воздухообменом.

Рабочие места с ПЭВМ при выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, рекомендуется изолировать друг от друга перегородками высотой 1,5-2,0 м.

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

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

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

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


4.3 Требования к микроклимату, содержанию аэроионов и вредных химических веществ в воздухе на рабочих местах, оборудованных ПЭВМ


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

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

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


Таблица 4.1 - Оптимальные параметры микроклимата

Температура, С°Относительная влажность, %Абсолютная влажность, г/м3Скорость движения воздуха, м/с196210<0,1205810<0,1215510<0,1

В помещениях, оборудованных ПЭВМ, проводится ежедневная влажная уборка и систематическое проветривание после каждого часа работы на ПЭВМ.

Уровни положительных и отрицательных аэроионов в воздухе помещений, где расположены ПЭВМ, должны соответствовать действующим санитарно-эпидемиологическим нормативам (таблица 4.2)[4.2]

Таблица 4.2 Уровни положительных и отрицательных аэроионов в помещениях с использованием ПЭВМ

Число ионов в 1 см3 воздуха положительных отрицательных Минимально необходимые 400 600 Оптимальные (нижняя граница) 1500 3000 Оптимальные (верхняя граница) 3000 5000 Максимально допустимые 50000 50000 .

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

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

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

4.4 Требования к уровням шума и вибрации на рабочих местах, оборудованных ПЭВМ


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

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

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

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

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


.5 Требования к освещению на рабочих местах, оборудованных ПЭВМ


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

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

Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300 - 500 лк. Освещение не должно создавать бликов на поверхности экрана. Освещенность поверхности экрана не должна быть более 300 лк.

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

Следует ограничивать отраженную блесткость на рабочих поверхностях (экран, стол, клавиатура и др.) за счет правильного выбора типов светильников и расположения рабочих мест по отношению к источникам естественного и искусственного освещения, при этом яркость бликов на экране ПЭВМ не должна превышать 40 кд/м2 и яркость потолка не должна превышать 200 кд/м2.

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

Яркость светильников общего освещения в зоне углов излучения от 50 до 90 градусов с вертикалью в продольной и поперечной плоскостях должна составлять не более 200 кд/м2, защитный угол светильников должен быть не менее 40 градусов.

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

Следует ограничивать неравномерность распределения яркости в поле зрения пользователя ПЭВМ, при этом соотношение яркости между рабочими поверхностями не должно превышать 3:1 - 5:1, а между рабочими поверхностями и поверхностями стен и оборудования - 10:1.

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

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

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

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

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

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

Коэффициент пульсации не должен превышать 5%.

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


.6 Требования к помещениям для работы с ПЭВМ


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

Возможный вариант расположения рабочих мест с ПЭВМ в помещении представлен на рисунке 4.2


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

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


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

4.7 Экологическая оценка драгоценных металлов в деталях, узлах и модулях ПЭВМ, и технологическая схема переработки


Моральное устаревание компьютерной техники - это неизбежное последствие технического прогресса. Срок службы компьютеров невелик: как правило, он не превышает двух-трёх лет. Учитывая, сколь велико количество эксплуатируемых в мире компьютеров, в ближайшие годы утилизация отработавшей своё компьютерной техники станет серьёзной экологической проблемой. По данным исследования, которое три года назад провело американским Национальным советом безопасности (NCS), в течение ближайших лет устаревшее компьютерное оборудование станет основным твердым мусором, загрязняющим планету.

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


Таблица 4.3 - Химический состав компонентов компьютера

Химический элементДоля в компонентах компьютера, %Кремний25Пластмасса23Железо20Алюминий14Медь7Свинец6Цинк2Олово1Никель1Другие вещества1

Процесс изготовления одной ПЭВМ (системный блок, монитор, принтер) общим весом 24 кг требует на технологические расходы 240 кг ископаемого топлива для энергоносителей, 22 кг химических веществ и 1500 кг воды.

Любую компьютерную технику можно переработать и пустить во вторичное использование. При грамотной утилизации около 70-80% отходов техники способны вернуться к нам в том или ином виде.

Более 40 лет назад Гордон Мур, один из основателей компании «Intel», заметил, что примерно каждые полтора года производительность компьютерных чипов возрастает вдвое. Вот только у этого вселяющего веру в прогресс «закона Мура» есть одно не упомянутое и малоприятное следствие. Получается, что в каждый момент времени все считающиеся на данный момент современными машины одновременно находятся и на грани устаревания. Постоянно разрабатываются программы, способные задействовать все возможности современных компьютеров. Требования по памяти и графике у последней на данное время (2007 г.) операционной системы Microsoft Vista, например, станут предвестником судного дня для стареющих компьютеров, которые хоть и со скрипом, но справлялись со своими функциями ещё год назад. Согласно оценке Агентства по охране окружающей среды США каждый следующий год от 30 до 40 миллионов ПК будут попадать в утиль.

Извлечение драгоценных металлов из вторичного сырья является частью проблемы использования возвратных ресурсов, которая включает в себя следующие аспекты: нормативно-правовой, организационный, сертификационный, технологический, экологический, экономико-финансовый. Проблема использования вторичного сырья, содержащего драгоценные материалы из компьютеров, периферийного оборудования и иных средств вычислительной техники (СВТ), актуальна в связи с техническим перевооружением отраслей промышленности. К драгоценным металлам относятся: золото, серебро, платина, палладий, родий, иридий, рутений, осмий, а также любые химические соединения и сплавы каждого из этих металлов. Статья 2 п.4 "Федерального закона о драгоценных металлах и драгоценных камнях" от 26 марта 1998 года N 1463 гласит: "Лом и отходы драгоценных металлов подлежат сбору во всех организациях, в которых образуются указанные лом и отходы. Собранные лом и отходы подлежат обязательному учету и могут перерабатываться собирающими их организациями для вторичного использования или реализовываться организациям, имеющим лицензии на данный вид деятельности, для дальнейшего производства и аффинажа драгоценных металлов".

Переработка узлов и деталей, содержащих серебро

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

свинцово-цинковых - 50 %;

медных -15%;

золотых - 10 %.

И только 25 % из собственно серебряных руд. За год в мире объем добычи составляет более 10 тыс. тонн.

Чистое серебро - очень мягкий, тягучий металл, плавящийся при 960.8С, имеющий плотность 10.5 г/см3.

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

В системном блоке ПЭВМ содержится 5.091336 г серебра.

К серебросодержащему (вторичному) сырью относятся: лом электрических контактов, лом с серебросодержащими покрытиями как металлов (железо, сталь, сплавы цветных металлов), так и неметаллов (стекло, пластмассы, керамика). Толщина слоя металлического серебра может составлять 10- 1800 мкм.

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

Для шламов, содержащих кроме серебра цветные и благородные металлы, предложен вариант жидкофазного хлорирования, который осуществляется в растворе серной кислоты H2S04 (40-80 г/л) в присутствии хлорного натрия NaCl2 (30-40 г/л) при соотношении 1:3. выщелачивание ведут при температуре 85-95 С и постоянном помешивании с подачей в пульпу газообразного хлора, расход которого - 8-10 дм/час - существенно зависит от состава пульпы. Продолжительность хлорирования составляет 1.5-3 часа. При этом в раствор переходят цветные металлы, золото, платина, железо. А серебро остается в нерастворимом осадке в виде хлористого серебра.

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


AgCL + NH4OH [Ag(NH3)2]Cl + H2O


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

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

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

Технология обеспечивает извлечение серебра на 99 - 99,5%. Содержание примесей в осадке хлористого серебра не превышает 0,3 - 0,7%.

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


Выводы по разделу


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


5. Организационно-экономический раздел


.1 Планирование разработки программного продукта с построением графика


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


5.2 Определение трудоемкости и продолжительности работ по созданию программного продукта


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

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

Согласно ГОСТ 23501.1-79 регламентируются следующие стадии проведения исследования:

техническое задание - ТЗ (ГОСТ 23501.2-79);

эскизный проект - ЭП (ГОСТ 23501.5-80);

технический проект - ТП (ГОСТ 23501.6-80);

рабочий проект - РП (ГОСТ 23501.11-81);

внедрение - ВП (ГОСТ 23501.15-81).

Планирование стадий и содержания работ осуществляется в соответствии с Методическими рекомендациями [5.1]. В таблице 5.1 приведён перечень работ, выполняемых на всех стадиях разработки ПС.

Таблица 5.1 - Состав работ и стадии разработки ПС

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

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

При этом трудоемкость каждой отдельной работы определяется в соответствии с Методическими указаниями [5.3] по формуле:


(5.1)


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

Продолжительность каждой работы в календарных днях (Ti) определяется по формуле [5.3]:


, (5.2а)


где:- трудоемкость работы, человек-дней;

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


, (5.2б)


где:кал - число календарных дней;раб - рабочие дни;

Для расчёта принимается среднее значение Kвых = 1,45.

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


Таблица 5.2 - Расчёт трудоёмкости и продолжительности работ по созданию ПС

№ работыНаименование стадий и работТрудоемкость, человеко-дниКоличество исполнителей, чел.Продолжительность, календарные дниt mint maxtiЧiТi1234567Техническое задание1.Постановка задачи;121,421,022.Подбор литературы;131,812,613.Сбор исходных данных;343,414,934.Определение требований к системе;121,421,025.Определение стадий, этапов и сроков разработки ПС;232,421,74Эскизный проект6.Анализ программных средств схожей тематики;565,417,837.Разработка общей структуры ПС242,822,038. Разработка структуры программы по подсистемам;353,822,769.Документирование232,413,48Технический проект10.Определение требований к ПС;121,421, 0211.Выбор языка программирования11111,4512. Определение свойств и требований к аппаратному обеспечению;121,412,03Рабочий проект13.Дизайн проекта;253,214,6414.Программирование;202522131,915.Тестирование и отладка ПС;81510,8115,6616. Разработка программной документации;253,214,6417.Согласование и утверждение программы и методики испытаний;242,822,03Внедрение18.Опытная эксплуатация;575,818,4119. Анализ данных полученных в результате эксплуатации;485,618,12 20. Корректировка технической документации по результатам испытаний;22212,9Итого: 84 110

Таким образом, общая трудоёмкость разработки ПС составляет 84 человеко-дней, а их продолжительность - 110 календарных дней.

5.3 Построение ленточного графика разработки программного продукта


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

Ленточный график разработки ПС, построенный на основе данных таблицы 5.2 приведён на рисунке 5.1.

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



Рисунок 5.1 - Ленточный график разработки ПС


.4 Расчет сметы затрат на разработку программного продукта


Сметная стоимость проектирования и внедрения программы включает в себя затраты, определяемые по формуле (5.3):


Спр=Сосн+Сдоп+Ссоц+См+Смаш.вр+Сн; (5.3)


где

Спр- стоимость разработки ПС;

См - затраты на используемые материалы;

Сосн - основная заработная плата исполнителей;

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

Ссоц - единый социальный налог (ЕСН), представляющий собой отчисления во внебюджетные фонды государственного социального страхования (пенсионный фонд, фонд обязательного медицинского страхования, фонд социального страхования). Рассчитывается в соответствии с установленной ставкой ЕСН как 30% от основной и дополнительной заработной платы;

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

Смаш.вр - стоимость машинного времени.

Основная заработная плата исполнителей

На статью «Заработная плата» относят заработную плату научных, инженерно-технических и других работников, непосредственно участвующих в разработке ПС. Расчёт ведётся по формуле (5.4):

Зисп=Зср*Т , (5.4)


где

Зисп - заработная плата исполнителей (руб.);

Зср - средняя дневная тарифная ставка работника организации разработчика ПС (руб./чел.дни);

Т - трудоёмкость разработки ПС (чел.дни).

Зср определяется по формуле (5.5):


Зср=С/Фмес , (5.5)


где: С - месячная зарплата работника (руб./мес.);

Фмес - среднее количество рабочих дней в месяце (20дн.).

Расчёт затрат на основную заработную плату разработчиков ПС приведен в таблице 5.3.


Таблица 5.3 - Затраты на заработную плату

№ИсполнительОклад, руб./мес.Оклад, руб./деньТрудоемкость, чел. днейСумма, руб.1234561.Руководитель30000150010150002.Инженер-программист2000010007474000Итого Сосн--8489000

Дополнительная заработная плата

Дополнительная заработная плата на период разработки ПС рассчитывается относительно основной и составляет 10% от её величины:


Сдоп=Сосн*0.1=89000*0,1=8900руб.


Расчёт отчислений на социальное страхование

Отчисления на социальное страхование рассчитываются относительно выплаченной заработной платы (суммы основной и дополнительной заработной платы). Составляют 30% :


Ссоц=(Сдоп+Сосн)*0.3 (5.6)

Ссоц= (8900+89000)*0.3 = 97900*0,3=29370 (руб.)


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

На эту статью относят все затраты на магнитные носители данных, бумагу, для печатных устройств, канцтовары и др. Затраты по ним определяются по экспертным оценкам. Расчёт расходов на материалы приведён в табл. 5.4.


Таблица 5.4 - Расчёт затрат на материалы

№МатериалыКоличество, штукиСтоимость, рубли2341.Бумага писчая, листов10003002.Диски, шт103503.Другие канцтовары-1500Итого См2150

Накладные расходы

На статью «Накладные расходы» относят расходы, связанные с управлением и организацией работ, содержанием помещений (освещение, отопление, уборка и т.д.). Накладные расходы рассчитываются относительно основной заработной платы. Величина накладных расходов принимается равной 60% от основной зарплаты исполнителей. Формула расчёта (5.7):


Сн=Сосн*К, (5.7)


где Сн - накладные расходы (руб.);

Сосн - основная заработная плата исполнителей (руб.);

К - коэффициент учёта накладных расходов (К=0,6).


Сн= 89000 * 0.6 = 53400 (руб.)


Расчёт стоимости машинного времени

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


Смаш.вр=Кмаш.вр·Змаш.вр, (5.8)


где

Кмаш.вр - средняя стоимость одного часа машинного времени (Кмаш.вр=50 руб./час);

Змаш.вр - машинное время, используемое на проведение исследования.

Необходимое количество машинного времени для реализации проекта по разработке программы рассчитывается по формуле (5.9):


Змаш.вр=ti·Тсм·Тср.маш,, (5.9)

где- трудоёмкость работ, человек-дней;

Тсм - продолжительность рабочей смены (при пятидневной рабочей неделе Тсм=8 часов);

Тср.маш - средний коэффициент использования оборудования (Тср.маш=0,7).

Тогда:


Змаш.вр=74·8·0,7= 414,4 (маш.час)

Стоимость машинного времени составит:


Смаш.вр=50·414,4= 20720 (руб.)


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


Таблица 5.5 - Смета затрат на разработку и внедрение ПС

№Наименование статейОбозначениеСумма, руб.В % к итогу123451.Основная заработная платаСосн8900044,62.Дополнительная заработная платаСдоп89004,53.Отчисления на социальные нуждыСсоц2545412,754.МатериалыСмат215015.Стоимость машинного времениСмаш.вр2072010,386.Накладные расходыСн5340026,75Итого:Спр199624100

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

Данная программа может быть реализована на рынке. При расчётном количестве реализованных программ - n, оптовая цена программы (Цопт) может быть рассчитана по формуле:


Цопт= Спр / n + Пi , где:


Спр - себестоимость разработки программы;

П - прибыль, определяется по формуле:


Пi=Yр * Спрi / n * 100,


где: Yр - средний уровень рентабельности, принимается Yр= 20%;

Таким образом, при среднем расчётном количестве реализованных программ = 10 оптовая цена программного продукта составит:


Цопт =199624/10 + 0,2*(199624 /10)=19962,4+3992,48=23955 (руб.)


Отпускная оптовая цена реализации программы потребителям должна включать налог на добавленную стоимость (НДС) и рассчитывается по формуле:


Цотп = Цопт + НДС,


где НДС - налог на добавленную стоимость, рассчитывается в соответствии с действующей ставкой этого налога - 18% от оптовой цены программы:


НДС= 23955 * 0,18= 4312 (руб.)

Цотп = 23955+ 4312= 28267 (руб.)


Таким образом, отпускная цена программы составит 28267 руб., в том числе НДС - 4312 (руб.).


.5 Расчет основных технико-экономических показателей использования программного продукта


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

Основные технико-экономические показатели проведения исследования приведены в таблице 5.6.


Таблица 5.6 - Основные технико-экономические показатели проекта

№Наименование показателяЕдиница измеренияПроектный вариант12341.Способ обработки информации---С применением ЭВМ и программных средств2.Характеристики исследования:3.Среда моделирования---Python4.Использованные технические средства:ПК---Intel Core Duo E5400 2700MHz / 2048Mb /250Gbпринтер---Canon Pixma MP2505.Количество исследователейчел16.Продолжительность проведения исследованиякалендарных дней1107.Трудоемкость разработки ПСчел-дней848.Затраты на проведение исследованияруб199624в том числе:стоимость расходных материаловруб2150основная заработная платаруб89000дополнительная заработная платаруб8900отчисления на социальные нуждыруб25454накладные расходыруб53400стоимость машинного временируб20720

Выводы


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

Трудоемкость разработки, согласно расчетам, составит 84 человеко-дней, продлится 110 календарных дня, а затраты на нее составят 199624 рублей.


6. Другие разделы


.1 Руководство пользователя


После запуска файла captcha.py, откроется основное окно программы. Интерфейс программы представлен на рисунке 6.1. Окно с дополнительной информацией на представлено на рисунке 6.2.


Рисунок 6.1 - Интерфейс главного окна программы

- Предварительный просмотр распознаваемого изображения

- Кнопки управления

- Результат работы программы

- Предварительный просмотр распознанных символов

- Окно для вывода служебной информации

Рисунок 6.2 - Окно дополнительной информации

- График, показывающий распределение точек в изображении

- Блок, с предварительно обработанным изображением

алгоритм векторный изображение шум

Принцип работы программы довольно прост, для начала нужно нажать на кнопку открыть, после чего откроется диалог выбора файла, содержащего специальное изображение. Выбрав файл, программа начнет его распознавать автоматически. После завершения распознавания, в поле вывода результата появится результат работы программы. В поле вывода служебной информации, должно появиться сообщение об окончании работы. Так же в служебной информации можно увидеть вероятность уверенности программы, в предполагаемом символе от «0» до «1». «1» означает, что символы идентичны, «0» - полностью не совпадают.


6.2 Руководство программиста


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

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

Программа разработана в среде Python IDLE с использованием языка Python 2.7. Сам по себе язык Python является скриптовым, поэтому для разработки графического интерфейса использовалась библиотека PyQT. Шаблон главного окна программы создан в среде QT Designer и сохранен в файле «./UI/main_frm.ui». Для компиляции кода в Python, написан небольшой скрипт pyuic4.bat. При запуске которого, запускается интерпретатор Python и скрипт компилятора шаблона. Сам скрипт имеет следующее содержимое:

@"C:\Python27\python" "C:\Python27\Lib\site-packages\PyQt4\uic\pyuic.py" -o main_frm.py main_frm.ui

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

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

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

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

Во время написания программы большое внимание было уделено детализации и улучшению читабельности кода. Каждая процедура прокомментирована. Названия переменных и функции даны в соответствии с их назначением, например class VectorCompare обозначает, что в данном классе реализованы функции работы векторного пространства, а def relation(self,concordance1, concordance2) означает, что данная функция сравнивает два векторных пространства и возвращает результат их идентичности.

При написании кода меток типа goto использовано не было. Код написан предельно просто и понятно, с расчетом на то, что в дальнейшем будет совершенствоваться. Логическая структура алгоритмов распознавания дана в подразделе 3.3.


.3 Руководство системного администратора


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

Для разработанной системы распознавания изображений, необходима любая система, с графическим интерфейсом и установленным интерпретатором Python 2.7. Для работы программы, необходимо установить графическую библиотеку PyQT. Путь для установки Python должен быть «C:\Python27\». В случае изменения пути, необходимо сообщить об этом программисту, чтобы он изменил путь в исходном коде. Так же, при запуске программы не из под операционной системы MS Windows, путь будет изменен.

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


7. Научная новизна и практическая значимость проекта


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


Заключение


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

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

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

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

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

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

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

Задачи, поставленные в данном дипломном проекте выполнены, цель дипломного проекта достигнута.


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


Неймарк Ю.И. Теклина Л.Г. Реккурентные процедуры МНК при ограничениях на параметры в задачах кодирования и распознавания. Сб.

«Распознавание образов и анализ изображений: новые информационные

технологии». Т.2. - Самара, 2003.

Daming Shi, Robert I. Damper and Steve R. Gunn, Off-line Hand-written Character Rocognition, Scool of Computer Engineering Nanyang , 2003. Vector Space Search Engine Theory, LA 2600 - January, 2004 - presented by Vidiot

Преобразование Хафа // (ru.wikipedia.org/wiki/Преобразование_Хафа)

M. Kutter, F. Jordan, F. Bossen, Digital Signature Of Color Images Using Amplitude Modulation // Proc. Of the SPIE Storage and Retrieval for Image and Video Databases. V. 1997. Vol. 3022. Pp.518-526..Darmstaedter, J.-F.Delaigle, J.J.Quisquater, B.Macq, Low Cost Spatial Watermarking // Computers and Graphics. 1998. Vol. 5. P.417-423.. Koch, J. Zhao, Towards Robust and Hidden Image Copyright Labeling. // IEEE Workshop on Nonlinear Signal and Image Processing. Greece, June 20-22, 1995. Pp. 123-132.

Описание библиотеки PyQt // (ru.wikipedia.org/wiki/PyQt)

Взлом каптчи файлообменника // (#"justify">ГОСТ 12.0.003-74. ССБТ. «Опасные и вредные производственные

факторы. Классификация».

СанПиН 2.2.2/2.4.1340-03 «Гигиенические требования к персональным

электронно-вычислительным машинам и организация работы» .

Безопасность жизнедеятельности. /Под ред. Н.А. Белова - М.: Знание,

.

ГОСТ 12.2.032-78. ССБТ. Рабочее место при выполнении работ сидя. Общие эргономические требования.

Шумилин В.К., Палькеев Е.П., Баринова В.М. и др. Охрана труда на рабочих местах с компьютером. - М.: «Нела-Информ», 2002. - 126 с.: ил.

Гетия И.Г. Безопасность при работе на ПЭВМ. - М.: МПЦ «Профессионал-Ф»,2001. - 127 с.: ил.

Гетия И.Г, Шумилин В.К., Леонтьева И.Н. и др. Экология компьютерной техники. Учебное пособие. - М.: МГУПИ, 2007. - 69 с.

«Методические указания по выполнению курсовой работы для студентов специальности 22.01.05 на тему «Организация, планирование и управление предприятием машиностроительной промышленности», М., МГАПИ, 2003.

Чаплыгин В.А. Организационно-экономический раздел дипломных работ научно-исследовательского характера. М., МГАПИ. 2000.

Методические указания по сбору материалов на преддипломной практике и выполнению организационно-экономического раздела дипломных проектов. М., МГАПИ, 2004.

Капелюш Г.С., Шестоперов С.Б. Технико-экономическое обоснование дипломных проектов по созданию программных средств вычислительной техники и информатики. Учебное пособие для студентов специальности 22.01. - М., МГАПИ, 2001.

«Сетевые графики и планирование», учебное пособие, Н. И. Новицкий, М., Высшая школа, 2004.

Прайс-лист ООО «Хюгель Компьютерс», 10.11.2012.

Прайс-лист ООО «Компьютерный Мир», 10.11.2012.

Приложение А


ЛИСТИНГ ПРОГРАММЫ.

# -*- encoding: utf-8 -*-

import sysimpPyQt4 import QtCore, QtGuiPyQt4.QtCore import QObject, SIGNALengine= ''trUtf8(Instance, SourceText):QObject.trUtf8(Instance, SourceTextprocessCaptcha(path,qobj):= engine.captcha().decode(path).main_w.label_3.clear().main_w.textEdit.append( '==================').main_w.textEdit.append( trUtf8(qobj,'Начинаем распознавание...'))probability,letter in res:.main_w.textEdit.append( trUtf8(qobj,'%s - с вероятностью %s'%(letter,probability))).main_w.label_3.setText(qobj.main_w.label_3.text() + letter.upper())

#print "",letter.main_w.textEdit.append( '==================').main_w.textEdit.append( trUtf8(qobj,'Распознавание успешно завершено!'))

.main_w.label_4.setPixmap( QtGui.QPixmap('tmp/0.gif') ).main_w.label_5.setPixmap( QtGui.QPixmap('tmp/1.gif') ).main_w.label_6.setPixmap( QtGui.QPixmap('tmp/2.gif') ).main_w.label_7.setPixmap( QtGui.QPixmap('tmp/3.gif') ).main_w.label_8.setPixmap( QtGui.QPixmap('tmp/4.gif') ).main_w.label_9.setPixmap( QtGui.QPixmap('tmp/5.gif') )Ui(QtGui.QMainWindow):

#sg = signals()__init__(self, parent=None):(Ui,self).__init__(parent).main_w = imp.load_source('main_frm', 'UI/main_frm.py').Ui_MainWindow().main_w.setupUi(self)_frm = self.main_w

#QObject.connect(self.main_w.pushButton, QtCore.SIGNAL("clicked()"), sg.on_pushButton_click).main_w.pushButton.clicked.connect(self.on_pushButton_click).main_w.pushButton_2.clicked.connect(self.on_pushButton2_click)on_pushButton_click(self):fname= QtGui.QFileDialog.getOpenFileName(self,u"Веберите капчу")fname:.main_w.textEdit.append(trUtf8(self,'Открытие капчи: ')+fname).main_w.label.setPixmap(QtGui.QPixmap(fname))

#processCaptcha(fname,self)on_pushButton2_click(self):fname != '' : processCaptcha(fname,self)__name__=='__main__':= QtGui.QApplication(sys.argv)= Ui().show().exit(app.exec_())PIL import Imagehashlibtimeosmatplotlib import pylabmatplotlib.pyplot as pltPIL import Image, ImageOps, ImageEnhance

#from opencv import cv, highgui, adaptorscvmathoperator import itemgetter

class VectorCompare:magnitude(self,concordance):= 0word,count in concordance.iteritems():+= count ** 2math.sqrt(total)

relation(self,concordance1, concordance2):= 0= 0word, count in concordance1.iteritems():concordance2.has_key(word):+= count * concordance2[word]topvalue / (self.magnitude(concordance1) * self.magnitude(concordance2))

class captcha:buildvector(self,im):= {}

= 0i in im.getdata():[count] = i+= 1

return d1 decode(parent,path):= VectorCompare()


iconset = ['0','1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']



imageset = []

letter in iconset:img in os.listdir('./iconset/%s/'%(letter)):= []img != "Thumbs.db": .append(parent.buildvector(Image.open("./iconset/%s/%s"%(letter,img)))).append({letter:temp})

= Image.open('%s'%path)= ImageOps.invert(img)= ImageEnhance.Contrast(img).enhance(1.9)= [0 for x in range (0,255)]= img.convert("P")

= img.histogram()

= {}

for i in range(256):[i] = his[i]

= []j,k in sorted(clrs.items(), key=itemgetter(1), reverse=True)[:15]:j != 0 and k > ( (img.size[0] * img.size[1])/100*5) :.append(j)


#print filt

#print "max = %d,max_ind = %d"%(max,max_ind)

= Image.new("P",img.size,255)x in range(img.size[1]):y in range(img.size[0]):= img.getpixel((y,x))pix in range(filt[0]-3,filt[0]+3): .putpixel((y,x),255):.putpixel((y,x),0)

= parent.RemoveLines(im)

#im = parent.Morphology(im)

#im.save('tmp.bmp')= parent.FindDividingCols(im)


'''

im2 = Image.new("P",im.size,255)= im.convert("P")_im = Image.new("P",im.size,255) = {}

for x in range(im.size[1]):y in range(im.size[0]):= im.getpixel((y,x))[pix] = pixpix == 220 or pix == 227: .putpixel((y,x),0)_im.putpixel((y,x),1)

#else: graph_im.putpixel((y,x),0)

= False=False= 0= 0

#graph_im = Image.new("P",im.size,255)

#im2.Copy(graph_im).FindDividingCols(graph_im,im2)= []

y in range(im2.size[0]): # slice acrossx in range(im2.size[1]): # slice down= im2.getpixel((y,x))pix != 255:= True

foundletter == False and inletter == True:= True= y

foundletter == True and inletter == False:= False= y.append((start,end))

inletter=False

= 0= []letters'''= 0= []img in os.listdir('tmp'):.remove('tmp/%s'%img)letter in letters:= hashlib.md5()= im.crop(( letter[0] , 0, letter[1],im.size[1] ))


#im3 = parent.Morphology(im3)

y in range(im3.size[0]): # slice acrossx in range(im3.size[1]): # slice down= im3.getpixel((y,x))pix == 0:.putpixel((y,x),255):.putpixel((y,x),0)

.save('tmp/%d.gif'%count)= []

image in imageset:x,y in image.iteritems():len(y) != 0:.append( ( v.relation(y[0],parent.buildvector(im3)),x) ).sort(reverse=True).append(guess[0])+= 1result result

FindDividingCols(self,img):= []

i in range(img.size[0]):.append(sum(1 for j in range(img.size[1]) if img.getpixel((i, j)) != 0))

= 0= 0= 1.5= []= False

i in range (len(lst)):inLetter == False:(lst[i] > porog):= True= i:(lst[i] < porog):= False= i(sum( lst[x] for x in range(st,end)) > 3):.append((st,end))


#print cols

ax1 = pylab.subplot(212).imshow(img, cmap=pylab.cm.gray, shape=(img.size[0], img.size[1]), interpolation='bilinear').subplot(211, sharex=ax1)

.plot(lst)

#print cols.show()

cols

cropMe(self,img):= []= Image.new("P",img.size,255)

i in range(img.size[1]):.append(sum(1 for j in range(img.size[0]) if img.getpixel((j, i)) != 0))


#print lstx in range(len(lst)):(lst[x] != 0):= img.crop( ( 0 , lst[x], img.size[0],img.size[1] ) )


#for x in range(len(lst),0,-1):

# if (lst[x] != 0):

# res = img.crop( ( 0 , lst[x], img.size[0],img.size[1] ) )

# break


#im3 = im.crop(( letter[0] , 0, letter[1],im.size[1] ))res

RemoveLines(self,img):= cv.CreateImage( img.size, cv.IPL_DEPTH_8U, 1 ).SetData(dst, img.tostring())= cv.CreateMemStorage(0)= cv.HoughLines2( dst, storage, cv.CV_HOUGH_PROBABILISTIC, 1, cv.CV_PI/180, 35, 35, 3 )line in lines:.Line( dst, line[0], line[1], 0, 2, 0 )_im = Image.fromstring("L", cv.GetSize(dst), dst.tostring())pil_im


def Morphology(self,img):= 1= cv.CreateImage( img.size, cv.IPL_DEPTH_8U, 1 )= cv.CreateImage( img.size, cv.IPL_DEPTH_8U, 1 ).SetData(src, img.tostring())

= cv.CreateStructuringElementEx(pos*2+1, pos*2+1, pos, pos, cv.CV_SHAPE_RECT).Dilate(src, dst, element, 1)= dst= 1= cv.CreateStructuringElementEx(pos*2+1, pos*2+1, pos, pos, cv.CV_SHAPE_RECT).Erode(src, dst, element, 1)_im = Image.fromstring("L", cv.GetSize(dst), dst.tostring())pil_im

# -*- coding: utf-8 -*-


# Form implementation generated from reading ui file 'main_frm.ui'

#

# Created: Sun Jan 13 23:49:59 2013

# by: PyQt4 UI code generator 4.9.6

#

# WARNING! All changes made in this file will be lost!

PyQt4 import QtCore, QtGui

:

_fromUtf8 = QtCore.QString.fromUtf8AttributeError:_fromUtf8(s):s

:

_encoding = QtGui.QApplication.UnicodeUTF8_translate(context, text, disambig):QtGui.QApplication.translate(context, text, disambig, _encoding)AttributeError:_translate(context, text, disambig):QtGui.QApplication.translate(context, text, disambig)

Ui_MainWindow(object):setupUi(self, MainWindow):.setObjectName(_fromUtf8("MainWindow")).setWindowModality(QtCore.Qt.ApplicationModal).resize(597, 370).centralwidget = QtGui.QWidget(MainWindow).centralwidget.setObjectName(_fromUtf8("centralwidget")).groupBox = QtGui.QGroupBox(self.centralwidget).groupBox.setGeometry(QtCore.QRect(0, 0, 211, 181)).groupBox.setObjectName(_fromUtf8("groupBox")).label = QtGui.QLabel(self.groupBox).label.setGeometry(QtCore.QRect(10, 20, 181, 61)).label.setLayoutDirection(QtCore.Qt.LeftToRight).label.setText(_fromUtf8("")).label.setScaledContents(False).label.setAlignment(QtCore.Qt.AlignCenter).label.setObjectName(_fromUtf8("label")).pushButton = QtGui.QPushButton(self.groupBox).pushButton.setGeometry(QtCore.QRect(40, 140, 75, 23)).pushButton.setObjectName(_fromUtf8("pushButton")).pushButton_2 = QtGui.QPushButton(self.groupBox).pushButton_2.setGeometry(QtCore.QRect(120, 140, 75, 23)).pushButton_2.setObjectName(_fromUtf8("pushButton_2")).groupBox_2 = QtGui.QGroupBox(self.centralwidget).groupBox_2.setGeometry(QtCore.QRect(210, 0, 381, 181)).groupBox_2.setObjectName(_fromUtf8("groupBox_2")).label_3 = QtGui.QLabel(self.groupBox_2).label_3.setGeometry(QtCore.QRect(20, 30, 351, 61))= QtGui.QFont().setFamily(_fromUtf8("Times New Roman")).setPointSize(36).setBold(True).setWeight(75).label_3.setFont(font).label_3.setText(_fromUtf8("")).label_3.setObjectName(_fromUtf8("label_3")).label_9 = QtGui.QLabel(self.groupBox_2).label_9.setGeometry(QtCore.QRect(190, 120, 21, 31)).label_9.setText(_fromUtf8("")).label_9.setObjectName(_fromUtf8("label_9")).label_4 = QtGui.QLabel(self.groupBox_2).label_4.setGeometry(QtCore.QRect(60, 120, 21, 31)).label_4.setText(_fromUtf8("")).label_4.setObjectName(_fromUtf8("label_4")).label_5 = QtGui.QLabel(self.groupBox_2).label_5.setGeometry(QtCore.QRect(90, 120, 21, 31)).label_5.setText(_fromUtf8("")).label_5.setObjectName(_fromUtf8("label_5")).label_6 = QtGui.QLabel(self.groupBox_2).label_6.setGeometry(QtCore.QRect(120, 120, 21, 31)).label_6.setText(_fromUtf8("")).label_6.setObjectName(_fromUtf8("label_6")).label_7 = QtGui.QLabel(self.groupBox_2).label_7.setGeometry(QtCore.QRect(150, 120, 21, 31)).label_7.setText(_fromUtf8("")).label_7.setObjectName(_fromUtf8("label_7")).label_8 = QtGui.QLabel(self.groupBox_2).label_8.setGeometry(QtCore.QRect(170, 120, 21, 31)).label_8.setText(_fromUtf8("")).label_8.setObjectName(_fromUtf8("label_8")).groupBox_3 = QtGui.QGroupBox(self.centralwidget).groupBox_3.setGeometry(QtCore.QRect(0, 180, 591, 151)).groupBox_3.setObjectName(_fromUtf8("groupBox_3")).textEdit = QtGui.QTextEdit(self.groupBox_3).textEdit.setGeometry(QtCore.QRect(10, 20, 571, 121)).textEdit.setReadOnly(True).textEdit.setObjectName(_fromUtf8("textEdit")).setCentralWidget(self.centralwidget).menubar = QtGui.QMenuBar(MainWindow).menubar.setGeometry(QtCore.QRect(0, 0, 597, 21)).menubar.setObjectName(_fromUtf8("menubar")).setMenuBar(self.menubar).statusbar = QtGui.QStatusBar(MainWindow).statusbar.setObjectName(_fromUtf8("statusbar")).setStatusBar(self.statusbar)

.retranslateUi(MainWindow).QMetaObject.connectSlotsByName(MainWindow)

retranslateUi(self, MainWindow):.setWindowTitle(_translate("MainWindow", "Captcha Crack", None)).groupBox.setTitle(_translate("MainWindow", "Captcha", None)).pushButton.setText(_translate("MainWindow", "Открыть", None)).pushButton_2.setText(_translate("MainWindow", "Распознать", None)).groupBox_2.setTitle(_translate("MainWindow", "Результат", None)).groupBox_3.setTitle(_translate("MainWindow", "Лог", None))


Содержание Введение . Исследовательский раздел .1 Постановка задачи для разработки системы распознавания специального изображения .2 Обзор и ана

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ