Обработка изображений в среде Matlab

Автор работы: Пользователь скрыл имя, 12 Сентября 2013 в 21:37, курсовая работа

Краткое описание

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

Вложенные файлы: 1 файл

2_14_04_2013.doc

— 7.15 Мб (Скачать файл)

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

1.3  Преобразование изображений

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

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

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

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

Другая группа трансформации  позволяет изменять размер или форму  изображения. Цвеличение длины и  ширины, поворот и вращение изображения  в соответствии с осями координат -  лишь малая часть того, что  представляют собой операции трансформации. Если говорить о вращении, то параметром считается угол поворота. Часто используемый угол – 90 граудсов по часовй или против часовой. Эти инструменты позволяют изменять изображения по горизонтали и вертикали. Другие операторы не описываются из-за своей простоты. 
ГЛАВА 2. РАЗРАБОТКА И СОЗДАНИЕ ПРИЛОЖЕНИЯ В СРЕДЕ MATLAB

2.1 Представление  данных в среде Matlab

Представление данных это та особенность, которая  отличает эту среду разработки от других. В среде MatLab все представлено в виде матриц. Размерность матрицы MathWorks – это прямоугольный массив чисел. Matlab распознает бинарные и текстовые файлы. К примеру *.m относится к     M-file. Существует две разновидности этого файла: скриптовый M-file и M-file функция. Скриптовый файл содержит последовательность математических выражений и команд. Тип файла «функция» начинается со слова «функция» и включает в себя функции, созданные пользователем. Другие примеры расширений, поддерживаемых средой MatLab - это *.mat. Файлы *.mat бинарные, и включает в себя такие команды, как сохранить/сохранить как (Mrozek & Mrozek, 2001, 64-65). 

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

  • элементы строки должны быть разделены пробелами или запятыми;
  • для обозначения конца строки используется символ ‘;’;
  • квадратные скобки должны быть в начале и в конце кода программы. 

После ввода  значений эта информация автоматически записывается в рабочее пространство  (MathWorks, 2002, chapter 3.3). Чтобы выделить какую-либо конкретную строку требуются круглые скобки. В матрице 3x3, выделение второй строки должно выглядеть, как (2,:), а третьей колонки (:,3). Чтобы вызвать какой-либо один конкретный элемент, необходимы скобки, для хранения двух значений. К примеру, (2,3) относится к 3 элементу во второй строке. Переменные объявляются как и в любом другом языке программирования. И, так же, логические операции представлены в том же виде, что и в дргуих языках программирования – конкретные значения соотносятся с конкретными переменными. Когда результирующая переменная не определена, Matlab создает еще одну переменную, названную Ans и располагает в рабочем пространстве. Ans сохраняет результат последней операции.

Стоит отметить, что некоторые команды – это  команды для создания графиков. Это  команды из стандартной Matlab библиотеки, а не из библиотеки Image Processing toolbox. Они не подходят для обработки изображений, поэтому они не будут описаны.  

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

Как было отмечено ранее, Matlab сохраняет изображения в виде массивов, которые как ничто другое подходят для отображения изображений. Большинство изображения хранятся как 2х-мерные матрицы. Каждый элемент – один пиксель изображения. К примеру, изображения 600 пикселей в высоту и 800 пикселей в ширину, будут сохранены в среде Matlab как матрица 600 строк на 800 колонок. Более сложные изображения сохраняются в виде 3х-мерных матриц. Полноцветные изображения требуют для себя 3х-мерные матрицы, для хранения информации об интенсивности RGB цветов. Они варьируются от 0 до 1.

Самый удобный  и подходящий путь для определения  изображения – это система координат пикселей. Для обращения к какому-либо конкретному пикселю, Matlab требует номер строки и номер колонки. Значения варьируются от 1, до значения длины строки. Изображения так же могут быть выражены, как пространственная система координат. В этому случае позиция каждого пикселя выражается в виде x и y координат. По умолчанию, пространственные координаты соотносятся с координатами пикселей. Для примера, пиксель (2,3) будет переведен, как  x=3 и y=2. Порядок координат – обратный.

2.2. Разработка пользовательского интерфейса

GUI (графический интерфейс пользователя) может быть определен, как набор техник и механизмов, используемых для взаимодействия между пользователем и программой. Цель GUI – предоставления пользователю удобной работы в программной среде. Цвета, выравнивание и простота внешнего вида должны быть подобранны очень тщательно. Каждая функция, кнопка или другие объекты должны иметь смысл, простой и понятный обычному пользователю программы. Похожие компоненты должны иметь похожий вид и метод их использования. Функции должны выполняться быстро и приводить к нужным результатам. Хороший интерфейс - прост, содержит ограниченное количество действий и делает то, что от него ожидают. Это непростая задача, разработать понятный и удобный графический интерфейс.  

К счастью, Mat lab предоставляет удобный инструмент, названный ‘GUIDE’. После того, как вы пропишете команду «guide» (рис. 11) в командной строке Matlab’s, появится окно «быстрого старта» (рис. 12). Здесь рекомендуется выбрать строку ‘Blank GUI’. В новом окне предоставляется возможность размещать и передвигать все объекты в рабочем окне программы (рис. 13). В левой части программы находится список доступных компонентов. Список включает в себя «Push-button», «slider», «axes», «static» и «edit» текстовые поля. «Toggle Button» – если нажать на нее, то она сохраняет свое положение, и выполняет команды, закрепленные за этой кнопкой, пока пользователь повторно не нажмет на эту кнопку. Check Box – выполняет какое-либо действие, когда Check Box активен. Radio Button – схож с компонентом «check box», но только одна опция может быть выполнена в один отрезок времени, функция начинает свое действие, когда «radio button» отмечена пользователем.  List box – отображает несколько компонентов и позволяет пользователю выбрать один из них. Pop-up Menu – открывает лист компонентов, когда пользователь нажмет на стрелку в правой части компонента.

Рис. 11. Командная  строка MatLab с прописанной командой “guide”

Рис. 12. «Быстрый старт» инструмента GUIDE

Рис. 13. Окно инструмента GUIDE

Панель –  Группирует все компоненты, что позволяет  сделать интерфейс более интуитивным  и понятным. Button Group – этот компонент схож, с компонентом «Панель» и позволяет объединить в группу несколько «Radio button» или «Check box» в одну логическую группу. ActiveX Component – позволяет отображать ActiveX контроллеры, которые являются интерактивным продолжением языка html. Они позволяют проигрывать звук, Java приложения и анимацию, которая может быть прикреплена к Web-странице.

После первого  сохранения, GUIDE сохраняет интерфейс в двух файлах - .fig файл, в котором находится описание положения всех компонентов интерфейса,  и .m файл, в котором находится код программы, который выполняется при нажатии на какой либо компонент. Все свойства объектов сохранены в файле .fig и они могут быть настроены посредством GUIDE инструмента. Все действия, обычно называемые ‘callbacks’, могут быть изменены в .m файле. Каждый отдельный компонент имеет свойство ‘Tag’, что позволяет в дальнейшем обращаться к этому компоненту. Для получения доступа к каждому атрибуту, Matlab предлагает набор команд.

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

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

2.3. Реализация функций обработки

В первую очередь  необходимо создать GUI, отвечающий поставленным задачам. И, с помощью инструмента GUIDE, был создан GUI, в котором содержатся следующий компоненты: Push-button, Toggle Button, Axes (координатные оси), Edit и Static Text Box, а так же создано меню, в котором реализованы функции открытия, сохранения документа, создание нового документа, а так же восстановление исходного изображения.

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

 

Открытая программа, с конечным GUI и открытым изображением представлена на рис. 14.

Рис. 14. Программа  «Instagramm» с GUI и открытой для обработки фотографией

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

  1. Создание нового документа

function New_Callback(hObject, eventdata, handles) // объявление функции, которая отвечает на нажатие кнопки New.

global contChecker blurChecker brightChecker // объявление глобальных переменных contChecker, blurChecker и brightChecker.

set(handles.PathtoFile,'String', '') // данная команда присваивает текстовому полю, с тегом PathtoFile, значение ''.

clearvars –global // стирает все значения всех глобальных переменных.

contChecker = 0 // присваивает переменной значение 0.

brightChecker = 0

blurChecker = 0

IMG=1; // присваивает массиву значение 1, что означает, что весь массив будет заполнен единичными значениями, который равен белому цвету.

imshow(IMG, 'Parent', handles.axes1); // отображает полученный в предыдущей строке массив в осях координат axes1.

 

  1. Открытие документа

clearvars –global

global originalImage IMG contChecker brightChecker blurChecker

contChecker = 0

brightChecker = 0

blurChecker = 0

set(handles.whichImage, 'String', 'Changeable'); // данная команда присваивает текстовому полю, с тегом whichImage, значение 'Changeable'.

[FileName,PathName,FilterIndex] = uigetfile({'*.jpg';'*.bmp';'*.gif'}, 'Chose image to open') // открывает диалоговое окно, в котором пользователю предлагает выбрать на своем жестком диске файл, с расширениями *.jpg, *.bmp, *.gif.

set(handles.PathtoFile,'String', fullfile(PathName, FileName)) // данная команда присваивает текстовому полю, с тегом PathtoFile, значение имени файла и пути к этому файлу.

image=strcat(PathName,FileName); // присваивает матрице image значения пути к файлу и имени этого файла.

axes (handles.axes1); // объявление переменной axis.

originalImage=imread(image); // считывает информацию из массива image и присваивает эту информацию переменной originalImage

IMG=imread(image);

imshow(IMG, 'Parent', handles.axes1);

 

  1. Сохранение документа

function Save_Callback(hObject, eventdata, handles)

global IMG contChecker imgCont brightChecker imgBright blurChecker imgBlur

if (contChecker == 1), // оператор if проверяет, выполняется ли условие. Если значение contChecker равно единице, то выполняется следующее выражение

Информация о работе Обработка изображений в среде Matlab