Diplom_29-06 (1221240), страница 5
Текст из файла (страница 5)
И также можно вычислить отношение сигнал/шум, иначе называемый SNR (SNR – signal to noise ratio):
где: RMSE – корень от среднеквадратического отклонение значений пикселей сжатого изображения от оригинала, иначе говоря
-
Требования к графическому интерфейсу пользователя
Графический пользовательский интерфейс является разновидностью пользовательского интерфейса, в котором присутствуют элементы визуального интерфейса (меню, кнопки, значки, списки и различные формы), представленные пользователю на дисплее для лучшего взаимодействия с различными устройствами. Правильно организованный интерфейс способствуют привлечению большего числа пользователей. Цель дизайна – представление готового объекта.
К интерфейсу готового программного продукта предъявляются следующие требования [32].
-
должен быть интуитивно понятным, простым и логичным:
-
должен соответствовать задачам пользователя;
-
должен соответствовать выбранной технологии;
-
обеспечивать высокую скорость работы пользователя. Элементы управления должны быть заметными и понятными;
-
уменьшения количества ошибок пользователя. Не рекомендуется делать кнопки слишком маленького размера: на такую кнопку сложно попасть, только если это не элемент управления, для которых требуется одно нажатие). В этом случае необходимо сделать так, чтобы пользователю было трудно нажать на лишнюю кнопку, изменив ее состояния при наведении на неё курсором, либо с помощью визуальных пауз между кнопками. Не рекомендуется создавать элементы управления, функции которых меняются в зависимости от контекста;
-
название элемента должно отражать выполняемую им функцию;
-
названия элементов должны быть краткими, но понятными пользователю;
-
соблюдать пропорции;
-
командные кнопки, управляющие окном, например, «Ок», «Отмена», «Применить», «Закрыть») должны быть расположены либо внизу окна, либо в правой его части (т.е. в той части окна, которая сканируется взглядом в последнюю очередь).
-
Проектирование графического интерфейса пользователя
Внешний вид интерфейса приложения должен быть удобным, не загроможден ненужными кнопками, отвечать функционалу. Также главным качеством хорошего интерфейса должно быть то чтобы он располагал внимание пользователя.
В приложении должен быть реализован интуитивно понятный интерфейс, отличающийся простотой в использовании, пригодный для пользователей, которые до этого не сталкивались с алгоритмами сжатия.
После запуска программы отображается главное окно, в котором происходит работа с приложением. Все действия меню вызываются нажатием левой кнопки мыши.
Схематическое представление графического интерфейса представлено на рисунке 12.
Рисунок 12 – Схема графического интерфейса
Разработанный графический интерфейс предоставляет пользователю необходимый набор для оценки качества сжатия изображения. Элементы управления расположены в соответствии с порядком их выбора.
-
Требования к функционалу приложения
После запуска программы «.exe» файла отображается главное окно. Все действия меню вызываются нажатием левой кнопки мыши. Весь функционал данной программы состоит из:
-
кнопка загрузки графического файла;
-
окно загрузки исходного изображения;
-
выпадающий список с названиями алгоритмов и кнопка кодирования изображений;
-
преобразованное и получаемое изображения;
-
полученные выходные характеристики.
Приложение отличается минимальным набором необходимого функционала, для того что пользователь не выполнял лишних или ненужных действий. Диаграмма деятельности приложения представлена на рисунке 13.
Рисунок 13 – Диаграмма деятельности приложения
-
Реализация ПРИЛОЖЕНИЯ
-
Обоснование выбора технологий реализации
-
Обоснование выбора языка программирования
-
-
В качестве языка программирования приложения был выбран С++, который широко используется для разработки различного рода программных комплексов в настоящее время, поскольку он обладает следующими чертами [31]. Более развита поддержка объектно-ориентированного и обобщенного программирования. Поддерживает и процедурное, и объектно-ориентированное, и обобщённое программирование. Обеспечивает модульную реализацию программ, раздельную компиляцию, обработку исключений.
-
Обоснование выбора среды разработки
В качестве среды разработки выбрана свободная кроссплатформенная среда разработки Code::Blocks [13]. Code::Blocks написана на С++ и использует библиотеку wxWidgets для реализация графического пользовательского интерфейса. Имея открытую архитектуру, может масштабироваться за счёт подключаемых модулей. Поддерживает языки программирования С, С++, D (с ограничениями).
Code::Blocks разрабатывается для Windows, Linux и Mac OS X. Среду можно собрать из файлов исходного кода для использования на вычислительной машине, работающей под управлением практически любой Unix-подобной системы.
-
Библиотеки OpenCV и wxWidgets
С целью разработки приложения для исследования алгоритмов кодирования изображений будут использоваться библиотеки OpenCV и wxWidgets.
Библиотека OpenCV (Open Source Computer Vision Library) с открытым исходным кодом содержит набор типов данных, более 500 функций и классов для обработки изображений и видео-потоков алгоритмами компьютерного зрения в реальном времени [23].Она может свободно использоваться в академических и коммерческих целях, поскольку распространяется на условиях лицензии BSD - (Berkeley Software Distribution). Программное обеспечение созданное как дополнения к операционной системе UNIX(R) компании AT&T. На основе версии 4.4BSD-Lite были созданы несколько операционных систем с открытыми исходными кодами. В их состав включены разработки других проектов, среди которых особо следует выделить Проект GNU. Вот что такое собственно операционная система BSD:.
OpenCV написана на языке высокого уровня (C/C++) и содержит алгоритмы для интерпретации изображений, калибровки камеры по эталону, устранения оптических искажений, определения сходства, анализаперемещения объекта, определения формы объекта и слежения за объектом, 3D-реконструкции, сегментации объекта, распознавания жестов и т.д.
В соответствии с целью выполнения ВКР для разработки приложения будут использованы функции
-
открытия изображений из стандартных файлов (.jpg, .bmp);
-
изменения цветовой схемы изображения;
-
работы с элементами изображения.
Кроме того библиотека OpenCV позволяет конвертировать данные об изображении в другие форматы, что позволяет выводить изображение на экран так, как оно выглядит в массиве. В программе использованы многие форматы представления массивов (CV_8UC3, CV_8UC1, CV8SC3). Они позволяют создать массивы данных различного размера и типа данных, в том числе и беззнаковых.
Все эти функции позволяют сокращать программный код и делать его более читаемым.
Библиотека wxWidgets (wxWindows) является кроссплатформенной библиотекой инструментов с открытым исходным кодом для разработки кроссплатформенных на уровне исходного кода настольных или мобильныхприложенийс графическим пользовательским интерфейсом (GraphicUserInterface, GUI[34]. Она распространяется на условияхлицензии, базирующейся на LGPL (Lesser General Public License).
GNU Library General Public License (Стандартная общественная лицензия GNU для библиотек) – лицензия на свободное программное обеспечение, одобренная Фондом свободного программного обеспечения и разработанная как компромисс между GNU General Public License и простыми разрешительными лицензиями, такими как BSD License и MIT License
Преимущества работы с wxWidgets:
-
переносимость разработанных приложений под большинство современных ОС безо всяких изменений;
-
быстрое создание GUI;
-
отсутствие необходимости в предустановке виртуальной машины Java (JVM), интерпретатора и т.д.;
-
относительно небольшой размер скомпилированного приложения;
-
умеренное потребление памяти и вычислительных ресурсов процессора;
-
возможность использовать для разработки приложений на языкахPython, Ruby, Perl, Haskell, Erlang и пр.
-
Реализация GUI с использованием wxWidgets
Разработка интерфейса начинается с редактора форм Code::Blocks , где находятся элементы для создания графического интерфейса, и которые в последующем будут обьединены с кодом C++ для реализации различных функций. Сам интерфейс предствлен на рисунке 14:
Рисунок 14 – Интерфейс Code::Blocks
Левая часть экрана поделена на две части:
-
вкладки ресурсов, проектов, файлов;
-
свойства проекта.
Управление тремя вкладками - проектов, символов и ресурсов позволяет пользователю просматривать файлы проекта, с которыми ведется работа.
Окно свойств проекта позволяет установить свойства компоненты, с которой ведется работа или выбрать события, такие, как функция «OnClick» при реализации кнопки. Использование библиотеки WxWidgets позволяет автоматизировать процесс.
Сам интерфейс приложения состоит из трех StaticBitmap, куда будут помещены изображения:
-
исходное изображение;
-
преобразованное изображение;
-
получаемое изображение.
Сначала загружаем изображение, по мере выбора алгоритма в StaticBitmap2 загружается второе искаженное изображение. Третье изображение передает информацию о том насколько произошло искажение и проверяет правильность работы алгоритма.
Так как визуально не всегда можно определить искажение, то необходимо вывести характеристики искажения, а именно:
-
коэффициент сжатия;
-
максимальное отклонение сжатого изображения от оригинала;
-
среднеквадратическое отклонение значений пикселей сжатого изображения от оригинала;
-
соотношения сигнал/шум (PSNR);
-
соотношения шум/сигнал (SNR).
Реализация графического интерфейса графического приложения представлена рисунке 15.
Рисунок 15 – GUI приложения
-
Реализация алгоритмов
-
Работа с изображением
-
Кнопка «Загрузить изображение» – позволяет пользователю выбрать файл из любой директории на персональном компьютере. Эта функция была реализована для удобства работы с данным приложением, а также для того чтобы можно было расширить поле поиска нужного изображения.
После того как было выбрано нужное изображение оно загружается в память оперативную память компьютера и представляется в программе как исходное изображение.
После загрузки изображения, с помощью библиотеки OpenCV, оно декодируется и помещается в трехмерный массив в цветовой схеме BGR. После этого происходит конвертация в формат RGB и вывод изображения на экран с помощью функций wxWidgets. В этот момент изображения выводится на экран в первом окне. Дальнейшие действия с изображением выбирает пользователь из выпадающего списка.
После выбора алгоритма сжатия пользователь может выбрать несколько опций, которые позволяют наиболее полно рассмотреть сжатое изображение. Функция «Показывать отправляемые массивы», после всех произведенных операций выводит на экран несколько дополнительных окон с каналами изображения после сжатия. Функция «Показывать гистограммы» выводит на экран дополнительное окно с смешанной гистограммой исходного изображения и изображения после декодирования. Это позволяет нагляднее видеть разницу между двумя изображениями. На графике жирная линия – исходное изображения, а тонкая и более светлая – декодированное изображение. При включении этой функции пользователю предоставлен выбор – для какого канала вычислять гистограмму. Важным фактором является то что после всех преобразований изображения снова преобразуется в цветовую схему RGB.
В коде программы используется абстрактный базовый тип данных CvArr, представляющий из себя трехмерный динамический массив.















