Обработка изображений в среде Matlab
Министерство образования и науки РФ
ФГБОУ ВПО «Омский государственный технический университет»
Факультет гуманитарного образования
Кафедра «Дизайн и технологии медиаиндустрии»
КУРСОВАЯ РАБОТА
по дисциплине «Цифровая обработка информации»
на тему
«Обработка изображений в среде Matlab»
Выполнил: ст-т группы ИТМ-310
Глотов М.В.
Руководитель: ассистент кафедры ДТМ
Сазонов В.С.
Работа сдана на проверку «________»
Работа защищена с оценкой «________»
Омск – 2012
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
С появлением доступных сканеров, цифровых фотоаппаратов, Web-камер люди получили в свои руки большое количество цифровых изображений. Это породило потребность в их обработке, восстановлении, создании на их основе новых изображений, фотомонтажей, коллажей и т.д. Изучение графических растровых редакторов позволяет подготовить учащихся для возможной профессиональной деятельности в сферах рекламного дизайна, полиграфического дизайна, веб-дизайна, дизайна интерьеров, ландшафтов, одежды, в профессиональных фото-студиях, в салонах красоты, в редакциях журналов и газет, и во многих других сферах. Графические редакторы ведущих производителей, к примеру программы фирмы Adobe, доступны не каждому в силу своей сложности, цены и доступности в плане освоения их обычными пользователями.
Целью данной курсовой работы является создание редактора в программе MatLab. В данной курсовой работе будут описаны принципы коррекции изображений. Рассмотрены виды графических растровых форматов, а так же пример и полное описание программы, созданной в программе MatLab. Эта программа будет предназначена для выполнения простейших операций направленных на коррекцию изображений стандартного формата, а так же данная программа даст возможность хранить изображения, прошедшие коррекцию, на жестком диске ПК пользователя в формате .JPEG.
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ОБРАБОТКИ ЦИФРОВЫХ ИЗОБРАЖЕНИЙ
1.1 Цветовые схемы
Аддитивные системы
Система цветов называется аддитивной (additive), что в переводе означает «складывающая/дополняющая». Иными словами берется черный цвет (отсутствие цвета) и добавляем к нему первичный, основные цвета, складывая их друг с другом до получения белого цвета.
Пример этой аддитивной системы цветов – система RGB, Red/Green/Blue – Красный/Зеленый/Синий. Экран компьютера или телевизора, как и всякое другое неизлучающее свет тело – изначально темное. Его исходным цветом является черный. Все остальные цвета получаются путем использования комбинации таких цветов, которые в своей смеси должны образовать белый цвет. Опытным путем была выведена комбинация «красный, зеленый, синий» - RGB. Черный цвет в схеме отсутствует, так как этот цвет– это цвет «черного» экрана. Значит, описание отсутствия цвета в схеме RGB соответствует черному цвету.
Субтрактивные схемы
Система цветов называется субтрактивной «subtractive», что в переводе означает «вычитающая/исключающая. Иными словами берется белый цвет, присутствие всех цветов, и, нанося и смешивая краски, удалив из белого определенные цвета вплоть до полного удаления всех цветов – получается черный.
Для цветов, которые получаются путем смешивания красок, пигментов или чернил на ткани, бумаге, полотне или другом материале, в качестве цветовой модели используется система CMY (cyan / magenta / yellow – циан / фуксин / желтый).
Цветовая схема RGB
Эта аддитивная схема принята в большинстве световых аппаратных решений, включая мониторы. Базовыми являются 3 цвета: красный (Red), зелёный (Green) и синий (Blue).
Рис. 1. Схема RGB
Результат смешения основных компонентов наблюдается на рисунке (рис. 1). Нередко говорят о пространстве цветов RGB, понимая под координатами количество той или иной составляющей (рис. 2).
Рис. 2. Пространство цветов RGB
Каждый конкретный цвет в таком случае обозначается точкой в пространстве.
Почему же именно красный, зелёный и синий? Основой человеческого зрения является сетка из сенсоров света, расположенная внутри нашего глаза. Эти сенсоры реагируют на волны различной длины, посылая мозгу комбинации электрических сигналов. Вопрос в том, как эти сенсоры посылают информацию.
Человеческому зрению приходится
работать быстро, чтобы справиться
с потоком ежесекундно
Цветовая схема CMYK
Для начала стоит сказать, что такая схема, как CMYK, обязана своим существованием чисто технологическим причинам. Есть субтрактивная схема CMY, в которой базовые цвета – это бирюзовый (Cyan), пурпурный (Magenta) и жёлтый (Yellow) (рис. 3).
У данной схемы есть серьезный недостаток: при смешении краски не дают черного цвета. Поэтому была придумана схема CMYK с добавленным четвёртым цветом – чёрным (blacK, буква B не используется во избежание путаницы с Blue из RGB). Схема абсолютно избыточна в том смысле, что разным числовым комбинациям количества базовых цветов нередко соответствует один и тот же видимый цвет.
Теперь CMY задают оттенок и часть темноты, а другая часть задается только K, который на оттенок, естественно, не влияет. При этом соотношение CMY + K подбирается так, что получившаяся комбинация великолепно отображается существующими красками.
Данная схема используется исключительно в полиграфии и смежных с ней отраслях.
Рис. 3. Схема CMYK
Что получается при смешении основных компонентов, вы можете наблюдать на рисунке. Нередко говорят о пространстве цветов CMY, понимая под координатами количество той или иной составляющей (рис. 4).
Рис. 4. Цветовое пространство CMYK
Каждый конкретный цвет в таком случае обозначается точкой в пространстве. Почему же были выбраны именно бирюзовый, пурпурный и жёлтый цвета? Дело в том, что в отличие от мониторов, которые сами излучают свет, принтеры, а вернее их распечатки, вынуждены пользоваться отражённым светом. В зависимости от того, какую часть света краска поглощает, а какую отражает, мы видим разные цвета. Если две краски смешать, то смесь будет поглощать все те цвета, которые поглощала первая краска, и все те, которые поглощала вторая, а отражаться будет то, что осталось. Ниже приведены различные варианты отражения от чистых красок и их смесей (рис. 5).
Рис. 5. Варианты отражения света
от чистых красок и их смесей
Цветовая схема Lab
Конечной целью комитета CIE была разработка повторяемой системы стандартов цветопередачи для производителей красок, чернил, пигментов и других красителей. Самая важная функция этих стандартов — предоставить универсальную схему, в рамках которой можно было бы устанавливать соответствие цветов. В основу этой схемы легли Стандартный Наблюдатель и цветовое пространство XYZ, однако несбалансированная природа пространства XYZ, вызванная тем, что человек различает разницу между оттенками зелёного и жёлтого гораздо лучше, чем между оттенками красного и пурпурного, сделала эти стандарты трудными для четкой реализации. В результате CIE разработал более однородные цветовые шкалы – CIE Lab и CIE Luv. Из этих двух моделей более широко применяется модель CIE Lab. Хорошо сбалансированная структура цветового пространства Lab основана на той теории, что цвет не может быть одновременно зеленым и красным или желтым и синим. Следовательно, для описания красно-зеленого и желто-синего атрибутов можно воспользоваться одними и теми же значениями. Когда цвет представляется в пространстве CIE Lab, величина L обозначает яркость (luminosity), a - величину красно-зеленой составляющей, а b - величину желто-синей составляющей (рис. 6).
Рис. 6. Цветовая схема CIE Lab
Рис. 7. Видимое стандартным
Рис. 8. Видимое 4-ч красочным типографским
станком пространство CIE Lab
1.2 Графические форматы
Графический формат – это метод хранения графической информации, а именно изображений, рисунков, фотографий.
Форматы векторных изображений:
- CDR (Corel Draw)
- SVG (Scalable Vector Graphics )
- EPS (Encapsulated PostScript)
Комплексные форматы изображений:
- CGM (Computer Graphics Metafile)
- PDF (Portable Document Format).
- DjVu (от франц. Déjà vu – «уже виденное»)
Форматы растровых изображений
ICO (Windows icon) позволяет хранить значки файлов в Microsoft Office. Такой формат имеет прямую аналогию CUR (Windows cursors), которая хранит курсоры. Стандартный размер - это квадратный значок со стороной 16, 32, 48 пикселов. Могут использоваться значки и с другими размерами, например: 24, 40, 60, 72, 92, 108, 128 пикселов. Такие значки хранятся в несжатом виде. Цвет значков может быть естественным (True Color), High Color или с определенной палитрой (может состоять из 256, 16 или 2 цветов).
Формат ICO очень близок к BMP. Главное их отличие – маска, которая «кладется» на задний план изображения. Формат ICO очень близок к BMP. Главное их отличие – маска, которая «кладется» на задний план изображения.
BMP (bitmap) – графический формат для хранения растровых изображений. Первоначально BMP хранил только аппаратно-зависимые растры, теперь современные технологии позволяют хранить и аппаратно-независимые (DIB – Device Independent Bitmap). Такой формат и поддерживают системы Windows и OS2. Расширение формата BMP: *.bmp, *.dob и *.rle. Глубина цвета составляет от 1 до 48 бит на пиксель.
4 части файла формата BMP:
- Заголовок файла
- Заголовок изображения
- Палитра (наличие не обязательно)
- изображение
Truevision
TGA (TGA) – вид растрового графического
формата. Создание формата принадлежит
фирме Truevision Inc. в 1984 году.
Расширение: .tga в системах DOS, или .tpic на
компьютерах Macintosh.
Формат состоит из 5 частей:
- заголовок файла
- изображение цветов
- зона разработчика
- зона расширения
- подвал
PNG (Portable Network Graphics) - формат PNG, являющийся плодом трудов сообщества независимых программистов, появился на свет как ответная реакция на переход популярнейшего формата GIF в разряд коммерческих продуктов. Этот формат, в отличие от GIF сжимает растровые изображения не только по горизонтали, но и по вертикали, что обеспечивает более высокую степень сжатия. Как недостаток формата часто упоминается то, что он не дает возможности создавать анимационные ролики. Зато формат PNG позволяет создавать изображения с 256 уровнями прозрачности что, безусловно, выделяет его на фоне всех существующих в данный момент форматов. Так как формат создавался для Интернета, в его заголовке не предназначено место для дополнительных параметров типа разрешения, поэтому для хранения изображений, подлежащих печати, PNG плохо подходит, для этих целей лучше подойдет PSD или TIFF.
GIF (Graphics Interchange Format) - является одним из самых популярных форматов изображений, размещаемых на веб-страницах. Отличительной его особенностью является использование режима индексированных цветов (не более 256), что ограничивает область применения формата изображениями, имеющими резкие цветовые переходы. Небольшие размеры файлов изображений обусловлены применением алгоритма сжатия без потерь качества, благодаря чему изображения в этом формате наиболее удобны для пересылки по каналам связи глобальной сети. В GIF реализован эффект прозрачности и возможности хранить в одном файле несколько картинок с указанием времени показа каждой, что используется для создания анимированных изображений.
JPEG (Joint Photographic Experts Group) - самый популярный формат для хранения фотографических изображений, является общепризнанным стандартом. JPEG может хранить только 24-битовые полноцветные изображения. Хотя JPEG отлично сжимает фотографии, но это сжатие происходит с потерями и портит качество, тем не менее, он может быть легко настроен на минимальные, практически незаметные для человеческого глаза, потери. Однако не стоит использовать формат JPEG для хранения изображений, подлежащих последующей обработке, так как при каждом сохранении документа в этом формате процесс ухудшения качества изображения носит лавинообразный характер. Наиболее целесообразно будет корректировать изображение в каком-нибудь другом подходящем формате, например TIFF, и лишь по завершению всех работ окончательная версия может быть сохранена в JPEG. Формат JPEG не поддерживает анимацию или прозрачный цвет, и пригоден в подавляющем большинстве случаев только для публикации полноцветных изображений, типа фотографических, в Интернете.
PSD (Adobe Photoshop) - является стандартным форматом пакета Adobe Photoshop и отличается от большинства обычных растровых форматов возможностью хранения слоев (layers). Он содержит много дополнительных переменных (не уступает TIFF по их количеству) и сжимает изображения иногда даже сильнее, чем PNG (в тех случаях, когда размеры файла измеряются не в килобайтах, а в десятках или даже сотнях мегабайт). Файлы PSD свободно читаются большинством популярных просмотрщиков.
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
Панель –
Группирует все компоненты, что позволяет
сделать интерфейс более
После первого сохранения, GUIDE сохраняет интерфейс в двух файлах - .fig файл, в котором находится описание положения всех компонентов интерфейса, и .m файл, в котором находится код программы, который выполняется при нажатии на какой либо компонент. Все свойства объектов сохранены в файле .fig и они могут быть настроены посредством GUIDE инструмента. Все действия, обычно называемые ‘callbacks’, могут быть изменены в .m файле. Каждый отдельный компонент имеет свойство ‘Tag’, что позволяет в дальнейшем обращаться к этому компоненту. Для получения доступа к каждому атрибуту, Matlab предлагает набор команд.
Важно знать, каждый
отдельный элемент имеет
- Открывающая функция – выполняет задачи еще до того, как пользователь увидит интерфейс программы;
- Конечные функции – если необходимо, возвращает значения в командную строку.
2.3. Реализация функций обработки
В первую очередь необходимо создать GUI, отвечающий поставленным задачам. И, с помощью инструмента GUIDE, был создан GUI, в котором содержатся следующий компоненты: Push-button, Toggle Button, Axes (координатные оси), Edit и Static Text Box, а так же создано меню, в котором реализованы функции открытия, сохранения документа, создание нового документа, а так же восстановление исходного изображения.
В выполненной мною программе были реализованы следующие функции: открытие, сохранение, создание нового документа, закрытие программы, восстановление исходного изображения, перевод изображение из RGB в Grayscale, отображения поочередно исходного изображения и изменяемого, изменение яркости, контрастности, добавление эффекта Blur, отображение пути к открытому файлу, отражение по горизонтали, вертикали, поворот на 180 градусов и инвертирование цветов изображения.
Открытая программа, с конечным GUI и открытым изображением представлена на рис. 14.
Рис. 14. Программа «Instagramm» с GUI и открытой для обработки фотографией
Ниже будут
разобраны функции, операторы, переменной
и методы, которые были использованы
для создания данного приложения.
(повторяющиеся команды
- Создание нового документа
function New_Callback(hObject, eventdata, handles) // объявление функции, которая отвечает на нажатие кнопки New.
global contChecker blurChecker brightChecker // объявление глобальных переменных contChecker, blurChecker и brightChecker.
set(handles.PathtoFile,'
clearvars –global // стирает все значения всех глобальных переменных.
contChecker = 0 // присваивает переменной значение 0.
brightChecker = 0
blurChecker = 0
IMG=1; // присваивает массиву значение 1, что означает, что весь массив будет заполнен единичными значениями, который равен белому цвету.
imshow(IMG, 'Parent', handles.axes1); // отображает полученный в предыдущей строке массив в осях координат axes1.
- Открытие документа
clearvars –global
global originalImage IMG contChecker brightChecker blurChecker
contChecker = 0
brightChecker = 0
blurChecker = 0
set(handles.whichImage, 'String', 'Changeable'); // данная команда присваивает текстовому полю, с тегом whichImage, значение 'Changeable'.
[FileName,PathName,
set(handles.PathtoFile,'
image=strcat(PathName,
axes (handles.axes1); // объявление переменной axis.
originalImage=imread(image); // считывает информацию из массива image и присваивает эту информацию переменной originalImage
IMG=imread(image);
imshow(IMG, 'Parent', handles.axes1);
- Сохранение документа
function Save_Callback(hObject, eventdata, handles)
global IMG contChecker imgCont brightChecker imgBright blurChecker imgBlur
if (contChecker == 1), // оператор if проверяет, выполняется ли условие. Если значение contChecker равно единице, то выполняется следующее выражение

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