Автоматизация процесса оцифровки, обработки графической информации и цифровых данных

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 06.03.2013
Размер файла 3,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

56

Размещено на http://www.allbest.ru/

Реферат

Пояснительная записка 64 с., 30 рис., 14 источников.

ОБРАБОТКА ИЗОБРАЖЕНИЙ, ОЦИФРОВКА ГРАФИКОВ, ОЦИФРОВКА ГРАФИЧЕСКОЙ ИНФОРМАЦИИ, ИЗВЛЕЧЕНИЕ ЧИСЛОВЫХ ДАННЫХ, ОБРАБОТКА ЧИСЛОВЫХ ДАННЫХ, ГЕНЕРИРОВАНИЕ ГРАФИКОВ

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

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

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

Разработанное программное обеспечение может быть использовано при обработке большого массива графической информации.

Содержание

  • Введение 4
  • 1. Обзор существующих методов и программного обеспечения для извлечения числовых данных из графической информации 7
    • 1.1 Описание предметной области 7
      • 1.1.1 Введение в предметную область 7
      • 1.1.2 Общие сведения о процессе оцифровки 7
      • 1.1.3 Область применения 8
    • 1.2 Цели и задачи оцифровки графической информации 9
    • 1.3 Методы извлечения числовых данных 10
      • 1.3.1 Итерационный метод 10
      • 1.3.2 Волновой алгоритм 10
    • 1.4 Обзор программного обеспечения для извлечения графических данных 14
      • 1.4.1 ПО getdata Graph Digitizer 14
      • 1.4.2 ПО Graph2Digit 16
      • 1.4.3 ПО G3Data 17
      • 1.4.4 ПО Grafula 18
    • 1.5 Анализ программного обеспечения для извлечения числовых данных 20
    • 1.6 Дополнительные возможности 21
      • 1.6.1 Удаление шумов 21
      • 1.6.2 Удаление координатной решетки 24
  • 2. Программное обеспечение «graphtrace». Структура ПО и методы обработки данных 26
    • 2.1 Постановка задачи 26
    • 2.2 Обоснование выбора платформы для реализации 27
    • 2.3 Реализация программного обеспечения 30
      • 2.3.1 Структура приложения 30
      • 2.3.2 Структура классов проекта graphtrace, их описание и назначение 31
      • 2.3.3 Структура классов проекта Diagram, их описание и назначение 37
    • 2.4 Модуль оцифровки графиков 41
    • 2.5 Модуль экспорта данных 42
    • 2.6 Модуль удаления шумов 43
    • 2.7 Модуль удаления координатной решетки 45
    • 2.8 Модуль генерирования графиков 47
  • 3. Использование программы «graphtrace» для графических данных различного типа 49
    • 3.1 Основные элементы программы 49
    • 3.2 Процесс подготовки изображений 50
      • 3.2.1 Процесс удаления координатной решетки 50
      • 3.2.2 Процесс удаления шумов 52
    • 3.3 Процесс обработки изображения 53
    • 3.4 Процесс экспорта числовых данных 57
    • 3.5 Процесс создания графиков из внешних или внутренних источников 58
  • Заключение 60
  • Список использованных источников 61

ВВЕДЕНИЕ

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

Рисунок 1 - График зависимости давления от скорости потока

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

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

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

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

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

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

График, конечно, можно «оцифровать» докомпьютерными (безкомпьютерными) средствами - взять в руки линейку и калькулятор и вручную составить таблицу значений точек на графике. Но современные аппаратные и программные средства компьютеров должны позволять автоматизировать эту работу[1].

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

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

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

· обработка изображений и удаление шумов, если необходимо;

· определение и удаления координатной решетки;

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

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

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

1.1 Описание предметной области

программный графический цифровой данные

1.1.1 Введение в предметную область

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

1.1.2 Общие сведения о процессе оцифровки

Оцифровка - описание объекта, изображения или аудио - видеосигнала (в аналоговом виде) в виде набора дискретных цифровых замеров (выборок) этого сигнала/объекта, при помощи той или иной аппаратуры, т.е. перевод его в цифровой вид, пригодный для записи на электронные носители.

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

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

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

1.1.3 Область применения

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

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

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

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

1.2 Цели и задачи оцифровки графической информации

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

· существование решения

· единственность решения

· устойчивость решения

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

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

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

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

1.3 Методы извлечения числовых данных

1.3.1 Итерационный метод

Также известен как метод перебора. Метод перебора (метод равномерного поиска) - это простейший из методов поиска значений по какому-либо из критериев сравнения.

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

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

1) Выбирается начальная точка для поиска (X1,Y1).

2) Начинаем обход растра поочередно по обеим осям с заданным шагом.

3) На каждом шаге проверяется, удовлетворяет ли текущая точка

условиям поиска. Если удовлетворяет, то она добавляется в результирующий набор.

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

1.3.2 Волновой алгоритм

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

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

Метод состоит из следующих шагов:

1) Построение скелета изображения с помощью сферической волны.

2) Оптимизация полученного скелета.

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

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

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

Рисунок 2 - Проход волны по кривой линии

Для выделения ребер определяются точки где:

1) Происходит разделение волны на полуволны, т.е. соединение или пересечение отрезков (рисунок 3).

Рисунок 3 - Разделение волны на разветвлении

2) Происходит затухание волны, т.е. конец отрезка (рисунок 4).

Рисунок 4 - Затухание волны при окончании отрезка

В случае затухания волны возможны два варианта:

1) Мы нашли конец ребра

2) Мы нашли точку соединения ребер

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

Описание алгоритма:

1) Создаем пустой стек для хранения генераций волны.

2) Заносим в него любую точку графического изображения как генерацию волны.

3) Пока стек не пуст продолжаем шаги 4-8

4) Выбираем генерацию волны из стека

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

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

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

8) Переходим к п.3.

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

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

1.4.1 ПО GetData Graph Digitizer

Тип лицензии: Shareware (30$ частная лицензия).

Описание:

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

1) Открыть график.

2) Установить масштаб (систему координат).

3) Оцифровать(автоматически или вручную) и скопировать данные в буфер обмена, или экспортировать в TXT, XLS, XML, DXF или EPS файл.

Основные возможности GetData Graph Digitizer:

· поддержка графических форматов TIFF, JPEG, BMP и PCX;

· два алгоритма для автоматической оцифровки;

· удобная оцифровка вручную;

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

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

· копирование полученных данных в буфер обмена;

· экспорт в форматы: TXT, XLS, XML, DXF и EPS.

Рабочее окно программы представлено на рисунке 5.

Рисунок 5 - Главное окно программы GetData Graph Digitizer

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

1.4.2 ПО Graph2Digit

Тип лицензии: Freeware

Описание:

Эта программа предназначена для оцифровки графиков с рисунков представленных файлами в форматах bmp, jpg, tiff, pcx и др. Программа позволяет оцифровать график с заданным шагом и при необходимости отредактировать полученные результаты. Результаты оцифровки можно сохранить в текстовый файл или скопировать в буфер обмена для дальнейшей обработки, например в Excel. Рабочее окно программы изображено на рисунке 6.

Свойства программы:

· поддержка графических форматов bmp, jpg, tiff, pcx, gif, png b wmf;

· возможность вставлять изображение из буфера обмена;

· поддержка сканера;

· возможность поворота картинки;

· автоматический режим оцифровки по максимальной яркости;

· автоматический режим оцифровки по цвету;

· режим ручной оцифровки;

· режим правки;

· быстрая привязка координат по 2, 3 или 4 точкам;

· выделение прямоугольной области для оцифровки;

· редактирование полученных данных в таблице;

· выполнение основных действий с помощью горячих клавиш;

· сохранение полученных данных в файл или копирование в буфер обмена;

Рисунок 6 - Главное окно программы Graph2Digit

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

1.4.3 ПО G3Data

Тип лицензии: Freeware

Описание:

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

Загружается растровое изображение. Тыкаем поочередно на кнопки Set Point X1, Set Point X2 и так далее, отмечая произвольные точки на оси абсцисс и ординат и указывая их численные значения. Затем втыкаем точки на кривой, передаем данные в текстовый dat файл. Данные можно импортировать, например в OpenOffice, и выполнить их аппроксимацию кривой заданного вида (или просто использовать как таблицу и пользуясь функцией интерполяции получать нужные для расчетов значения). Рабочее окно программы представлено на рисунке 7.

Рисунок 7 - Рабочее окно программы G3Data

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

1.4.4 ПО Grafula

Тип лицензии: Freeware

Описание:

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

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

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

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

Рисунок 8 - Рабочее окно программы Grafula

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

1.5 Анализ программного обеспечения для извлечения числовых данных

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

· Отсутствие возможности предварительной подготовки изображений к оцифровке;

· Отсутствие возможности удаления координатной решетки;

· Отсутствие методов для автоматической трассировки линий;

· Отсутствие экспорта данных в популярные форматы;

· Отсутствие возможности генерирования графиков.

1.6 Дополнительные возможности

1.6.1 Удаление шумов

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

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

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

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

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

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

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

Шум бывает нескольких видов, самые распространенные из них:

1. Белый шум - сигнал, отсчеты которого не коррелируют друг с другом, и его разновидность - белый гауссовский шум.

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

3. Цветные пятна - характерны для аналогового сигнала (к примеру, присутствуют в видеоизображении, оцифрованном с видеокассет VHS).

4. Шум вида «соль и перец».

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

Переменные, используемые в формулах:

x+i,y+j - координаты в пределах изображения.

i,j - координаты в пределах окна размерностью M.

N - количество точек, участвующих в выражении.

M - квадратная маска, определяющая какие элементы будут включены в усредняющий набор.

P - коэффициент, определяющий какие точки будут иметь большее влияние на результирующий цвет точки.

Гармонический фильтр

Гармонический фильтр принадлежит группе нелинейных усредняющих фильтров, которые лучше справляются с Гауссовым шумов и сохраняют края объектов, в отличии от математических усредняющих фильтров[9]. Математическое описание:

(1)

Контр-гармонический фильтр

Контр-гармонический фильтр принадлежит группе нелинейных усредняющих фильтров, которые лучше справляются с Гауссовым шумов и сохраняют края объектов, в отличии от математических усредняющих фильтров[9]. Математическое описание:

(2)

Геометрический усредняющий фильтр

Геометрический усредняющий фильтр принадлежит группе нелинейных усредняющих фильтров, которые лучше справляются с Гауссовым шумов и сохраняют края объектов, в отличии от математических усредняющих фильтров. Фильтр работает с произведением N значений пикселей в определенном радиусе( задается матричной маской), возведенным в степень 1/N[9]. Математическое описание:

(3)

Фильтр для удаления точек

Фильтр, написанный для решения конкретной задачи. Хорошо справляется с импульсным видом шума и сохранением границ, но бесполезен в применении для подавления Гауссова шума. Фильтр работает по принципу арифметического среднего. В некотором радиусе N подсчитывается количество пикселей, цвет которых( в grayscale-представлении находится в пределах 0-255) отличается от цвета текущего пикселя на некоторую величину(Threshhold). Если количество пикселей, отличных от текущего, больше или равно N/2, то текущий пиксель считается импульсным шумом, и заменяются средним значением соседних пикселей[10].

1.6.2 Удаление координатной решетки

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

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

После этого можно применять преобразование, которое строится на нескольких правилах:

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

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

3. На изображениях где график представлен в оттенках серого, а решетка - цветная, необходимо лишь заменить пикселы, цвет которых не близок к серому. Это можно определить как в RGB нотации, так и в HSB. В RGB цвет можно считать серым, если разница между его составляющими не превышает какого либо порога. В HSB серым цветом можно считать цвет, параметр Brightness которого близок к показателю 0.05.

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

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

Рисунок 9а - До применения алгоритма

Рисунок 9б - После применения алгоритма

2. Программное обеспечение «GraphTrace». Структура ПО и методы обработки данных

2.1 Постановка задачи

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

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

Принимая во внимание все выше изложенное сформулируем задачу.

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

· Открытие изображения.

· Вставка изображения из буфера.

· Сканирование изображения (возможно).

· Оцифровка графика(-ов).

· Возможность копирования результирующей таблицы (пар X/Y) в Excel.

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

· Построение графиков по парам X/Y.

· Возможность установки цвета линии для оцифровки.

Программное обеспечение будет реализовано на платформе .NET с использованием языка C# 3.5.

2.2 Обоснование выбора платформы для реализации

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

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

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

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

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

В качестве платформы рассматривались 2 крупные платформы разработки оконных приложений: .Net и Java.

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

Для C# на платформе Windows основной библиотекой, реализующей графический интерфейс пользователя в настольных приложениях, является Windows.Forms, принадлежащая Microsoft и реализованная только для Windows, а для прочих платформ -- gtk#, выполненная в рамках проекта Mono.

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

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

Принимая во внимание, что задачей является написание программного обеспечения для операционной системы Windows, что программа должна обладать богатым графическим функционалом и сложной графической архитектурой было решено использовать платформу Windows.Forms для реализации графического интерфейса пользователя и платформу .NET 3.5 и язык C# для реализации логики программы.

Язык С# -- это очередная ступень бесконечной эволюции языков программирования. Его создание вызвано процессом усовершенствования и адаптации, который определял разработку компьютерных языков в течение последних лет. Подобно всем другим наиболее известным языкам, С# опирается на прошлые достижения постоянно развивающегося искусства программирования[11].

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

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

Оболочка .NET Framework определяет среду для разработки и выполнения сильно распределенных приложений, основанных на использовании компонентных объектов.

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

Связь среды .NET Framework с С# обусловлена наличием двух очень важных средств. Одно из них, Common Language Runtime (CLR), представляет собой систему, которая управляет выполнением пользовательских программ. CLR - это составная часть .NET Framework, которая делает программы переносимыми, поддерживает многоязыковое программирование и обеспечивает безопасность[13].

Второе средство, библиотека классов .NET-оболочки, предоставляет программам доступ к среде выполнения. Например, если вам нужно выполнить операцию ввода-вывода, скажем, отобразить что-либо на экране, то для этого необходимо использовать .NET-библиотеку классов. Если программа ограничивается использованием средств, определенных .NET-библиотекой классов, она может выполняться везде (т.е. в любой среде), где поддерживается .NET-система. Поскольку С# автоматически использует .NET-библиотеку классов, С#-программы автоматически переносимы во все .NET-среды [11].

2.3 Реализация программного обеспечения

2.3.1 Структура приложения

Программное обеспечение было реализован в среде разработки Microsoft Visual Studio 2008. Решение состоит из 2 частей: Проект Diagrams и проект GraphTrace.

GraphTrace - главный проект. Здесь содержится главная MDI-форма, и все вспомогательные формы для взаимодействия с пользователем.

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

Структура проекта GraphTrace

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

Список классов, реализованных в проекте:

· class mainMDIForm

· class Noise

· class Lines

· class Graph

· class GenerateGraph

· class GridRemove

· class Digitize

Структура проекта Diagrams

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

Список классов, реализованных в проекте:

· сlass Diagram

· class Selection

· class Axis

· class DiagramBox

2.3.2 Структура классов проекта GraphTrace, их описание и назначение

Сlass mainMDIForm - основная форма приложения. Представляет собой главную окно программы на котором расположены элементы и управления и с которой связаны все дочерние формы. Приложение выполнено с использованием MDI струкруты. MDI представляет собой графический интерфейс где окна расположены под одним общим окном, в отличии от окон, расположенных отдельно друг от друга(SDI). Преимущества, которые предоставляет MDI структура:

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

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

· Дочерние окна можно размещать «черепицей» или «каскадом» в главном окне.

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

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

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

Шаблон проектирования посредник - обеспечивает взаимодейcтвие множества объектов, формируя при этом слабую связанность и избавляя объекты от необходимости явно ссылаться друг на друга[12]. Общая схема взаимодействия элементов программного обеспечения представлена на рисунке 10. Класс mainMDIForm является классом который регулирует взаимоотношение между панелью настроек, рабочей областью и модулями предварительной обработки изображений.

Рисунок 10 - Схема взаимодействия объектов проекта GraphTrace

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

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

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

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

class Noise - данный класс предназначен для предварительной обработки изображений и удаления шумовых «загрязнений» с изображения. Было реализовано 4 алгоритма для обработки графической информации:

· Гармонический усредняющий фильтр

· Контр-гармонический усредняющий фильтр

· Геометрический фильтр

· Фильтр для удаления шума типа «соль и перец»

Примеры работы алгоритмов рассмотрены и представлены в разделе 2.6.

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

Для выполнения этой задачи было реализовано 2 алгоритма:

· Алгоритм интегральных проекций

· Алгоритм сегментации цветных участков

Алгоритм интегральных проекций использует информацию о плотности фоновых точек на срезах по X и Y координатам. Алгоритм сегментации цветных участков использует в своей основе информацию о цветах графика и координатной решетки.

Подробное описание алгоритма работы этих модулей описывается в главе 2.7.

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

class GenerateGraph - класс, представляющий собой форму для введения исходных данных и дополнительной информации для генерации графика. Внешний вид формы представлен на рисунке 11. Для генерации графика доступны 2 возможности:

· Генерация из имеющихся данных

· Генерация из данных, копированных из Excel

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

Для генерации графика из набора данных, скопированных из Excel пользователю необходимо проделать следующие операции:

1. Выбрать соответствующий элемент в списке

2. Ввести максимальные значения для оси абсцисс и оси ординат

3. Создать новую линию с определенным названием и цветом

4. Скопировать значения из Excel и вставить их в таблицу значений для генерации.

5. Повторить п. 2-4 для вставки необходимого числа линий.

6. Нажать на кнопку «Сгенерировать».

После чего управление будет передано форме Graph.

Рисунок 11 - Форма ввода входных данных

class Lines - класс, инкапсулирующий в себе объект, для передачи данных из формы GenerateGraph в форму Graph. Этот класс нужен для унификации обработки линии вне зависимости от того, каким образом они были переданы в форму Graph. Класс Lines наследуется от класс List<PointF>, что позволяет передавать массив линий одним объектом.

class Digitize - класс, реализующий логику оцифровки графиков. Представляет методы для работы с графиками. Результатом работы методов является список искомых числовых данных в формате List<Point> в координатах изображения.

Общая структура классов и их взаимодействия показана на рисунке 12.

Рисунок 12 - Структура классов GraphTrace

2.3.3 Структура классов проекта Diagram, их описание и назначение

class Axis - класс, представляющий собой реализацию координатных осей. Этот класс реализует следующий функционал:

· Хранение позиции координатных осей.

· Хранение максимальных значений для осей X и Y.

· Методы для инициализации значений.

· Метод для реализации отрисовки осей на рабочей области.

· Метод для изменения масштаба координатных осей.

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

· Хранение информации о области, выделенной пользователем.

· Метод для отрисовки области выделения.

· Метод для считывания области выделения.

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

· Плоские фигуры.

· Соединительные линии.

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

Класс Diagram является контейнером всех фигур нашей линии. Он имеет всего одно поле - figures - список фигур линии. Также он предоставляет методы для работы с текущими линиями:

· Метод GetDigitSheet() - возвращает массив данных, который содержит координаты точек линии.

· Метод GetPointNumber() - метод возвращает количество точек в текущей линии.

· Метод SetColor() - метод позволяет установить цвет текущей линии.

· Метод ChangeColor() - позволяет изменить цвет текущей линии.

Базовым классом для всех объектов нашей линии является абстрактный класс Figure. Этот класс содержит следующие поля и методы:

· Поле pen - содержит цвет фигуры.

· Поле Path - объект типа GraphicsPath, содержащий информацию о точках фигуры и соединяющих их линий.

· Метод Draw() - метод, отрисовывающий фигуру на предоставленном объекте типа Graphics.

· Метод IsInsidePoint() - метод, проверяющий содержится ли данная точка внутри данной фигуры.

Диаграмма классов и их зависимостей представлена на рисунке 13. От класса Figure наследуется два класса - SolidFigure и LineFigure. SolidFigure представляет плоскую, двумерную фигуру. LineFigure - отображает соединительную линию между объектами SolidFigure. Класс SolidFigure, кроме унаследованных от класса Figure методов предоставляет следующие:

· Метод Offset() - сдвигает фигуру на нужное число писелей.

· Метод Scale() - масштабирует отображение линии относительно увеличенного/уменьшенного изображения.


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.