Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Тема 2) Обзор задач по обработке изображений. Классификация изображений, применяемых в сжатии данных.
Эта часть будет посвящена следующим пунктам:
· Интерфейс среды MATLAB 6.5
· Обзор задач, решаемых в области обработки графических изображений.
· Классы изображений.
После установки MATLAB и запуска его из меню «пуск» либо в командной строке набрав «matlab» появится следующее стартовое окно (английская версия):

Рис.1. Окно среды MATLAB 6.5 по умолчанию
Среда MATLAB состоит из нескольких областей и окон:
· Строка заголовка
· Строка меню
· Панель инструментов
· Окно WorkSpace – рабочее пространство
· Command Window – окно команд
· Command History – окно истории команд
· Кнопка Start –аналог меню «Пуск».
Необходимо сказать несколько слов об интерфейсе среды MATLAB[Гонсалес, Вудс].
Окно команд (Command Window) – область, в которой пользователь набирает команды и выражения. Работа со средой MATLAB называется сеансом, в каждом сеансе формируется свое рабочее пространство (там хранятся переменные и константы). Например, введем следующее выражение:
>>a = sin(0.4)+sqrt(cos(4)); Попробуйте ввести ту же строку, но без точки с запятой. В окне команд появится значение этой переменной.
Видим, что в рабочем пространстве появилась новая переменная, а в окне команд курсор сместился на следующую строку.
Двойным щелчком на переменной вызовем редактор массивов(Array Editor):

Рис.2. Редактор массивов
MATLAB представляет любую переменную как двумерный массив. Нумерация массивов начинается с единицы. Когда переменная одна, то массив состоит из одного элемента. Из этого окна можно узнать формат представления данных, размерность переменной. Также можно редактировать ее значение.
Нам нужно уметь вызывать редактор файлов программ (называемых M-файлами), чтобы потом писать свои функции. Нажав Ctrl+N либо выбрав нужный пункт в меню «File», вызовем окно редактора:

Рис.3. Редактор M-файлов
Файлы имеют расширение. m (например, name. m). В файлы записываются функции, которые затем вызываются из окна команд. Это самый минимальный уровень представления об интерфейсе системы MATLAB. Более детально ознакомитесь дома.
Далее сделаем обзор задач, решаемых в процессе обработки изображений.
В источниках приводится следующее определение понятия «обработка изображений» [Wikipedia]: любая форма обработки информации, для которой входные данные представлены изображением, например, фотографиями или видеокадрами. Обработка изображений может осуществляться как для получения изображения на выходе (например, подготовка к полиграфическому тиражированию, к телетрансляции и т. д.), так и для получения другой информации (например, распознание текста, подсчёт числа и типа клеток в поле микроскопа и т. д.). Кроме статичных двухмерных изображений, обрабатывать требуется также изображения, изменяющиеся со временем, например видео.
Приведем схему классификации задач по обработке изображений [Гонсалес, Вудс]:

Рис.4. Классификация типов задач обработки изображений
Нас будет интересовать задача сжатия изображений. Приведем для примера задачу первой группы[Гонсалес, Вудс].
· Преобразование яркости и пространственная фильтрация. При осуществлении обработки изображений на этом уровне взаимодействие идет непосредственно с пикселями изображения. Такие процессы описываются преобразованием:

(1)
Здесь g(x, y) – входное изображение, f(x, y) – изображение, полученное в результате обработки, а T – преобразование (оператор), которое выполняет определенные действия над изображением. Посмотрим пример изменения яркости. Для этого выполним следующие действия:
- Запустить среду MATLAB.
- Загрузить изображение в среду MATLAB. Для этого сначала скопируем путь утилитой CopyPath исходного изображения. В среде введем команду открытия изображения:
>>S = imread(‘путь’); В результате в окне рабочего пространства образуется переменная S, занимающая соответствующие параметры. Выполним просмотр исходного изображения:
>>imshow(S);
В результате появится окно с исходным изображением:

Рис.5. Окно просмотрщика среды с исходным изображением
Перед выполнением команд обработки рекомендуется преобразовать его:
>> S = double(S)./255;
Параметр «Double» для изображений означает, что будет использоваться только два цвета. Использование операции деления после точки означает поэлементное выполнение этого действия.
С помощью специальных команд можно изменять яркость изображения. Например, введя последовательность:
>>g1 = imadjust(S, [0 1], [1 0]);
>>figure(2), imshow(g1);
Получим окно, в котором увидим результат преобразования яркости, то есть, применения команды:

Рис.6. Преобразование яркости изображения
Мы можем моделировать результаты, если будем изменять параметры функции, например, у этой функции есть параметр gamma. Если он больше 1, то изображение становится более ярким, если меньше нуля, то менее ярким. Пример для случая, если параметр gamma равен 2.
>> g2 = imadjust(S, [0 1], [1 0], 2);

Рис.7. Преобразование яркости изображения при использовании
gamma = 2
Если выбрать параметр gamma = 0.2, то яркостное изображение будет выглядеть так:
Рис.8. Параметр gamma = 0.2
Приведем пример фильтрации изображений. Под фильтрацией можно понимать применение некоторой матрицы к изображению для получения изображения в том же или новом диапазоне. Приведем лишь пример.
В окне команд наберем help imfilter. Выведется справка по фильтрации изображений. Наберем следующую последовательность команд, используя шаблон:
>> h = fspecial('motion',50,45);
>> rgb2 = imfilter(S, h);
>> imshow(S), title('Original');
>> figure, imshow(rgb2), title('Filtered')
В результате получим следующий эффект обработки изображения:

Рис.9. Результат применения фильтра
С остальными примерами обработки изображений можете разобраться самостоятельно. Нас далее будет интересовать более подробно задача сжатия изображений.
Чрезвычайно важной является задача Усиления полезной и подавления нежелательной (в контексте конкретной задачи) информации. Подавление нежелательной информации осуществляется с помощью использования алгоритмов сжатия изображений. На наших занятиях мы рассмотрим алгоритмы сжатия JPEG, вейвлетные и фрактальные преобразования, являющиеся на сегодняшний день одними из наиболее востребованных методов сжатия изображений.
Далее приведем классификацию изображений, которые будут использоваться при изучении [Salomon, 2006]:

Рис.10. Классификация изображений
Тип изображения определяет способ его интерпретации на компьютере.
В среде MATLAB возможно выполнить визуализацию каждого из типов изображений. Тип изображения [http://matlab. exponenta. ru – консультационный центр MATLAB] определяет способ интерпретации изображений системой MATLAB. Используется четыре типа изображения:

· Бинарное (двухуровневое) изображение – логический массив, содержащий только единицы и нули, которые интерпретируются как черный и белый цвет соответственно. Также существуют так называемые двухуровневые изображения, пиксели которого содержат только два уровня интенсивностей, не обязательно 1 и 0.
Рис.11. Бинарное изображение
· Индексное (Indexed) – массив в формате logical, uint8, uint16, single или double, значения пикселей которого являются индексами из палитры. Палитра представляет собой массив с размерностью m×3, который представлен в формате double. Сейчас мы поясним на примерах суть вопроса.
![]()
Индексное изображение состоит из массива и палитры [www. matlab. exponenta. ru]. Значения пикселей массива являются значениями палитры. Такое изображение можно получить из обычного полноцветного изображения с помощью специальной команды. Сначала картинку, а потом пояснение и команды.
Палитра представляется так:
Рис.12. Индексное изображение
Рис.13.
Палитра
Для получения палитры и индексного изображения в окне команд наберите следующий код:
>>S = imread('I:\Аспирантура-aspire\test. jpg');
>> [X map] = rgb2ind(S, 0.65, 'nodither');
>> figure(1), title('palett'); imshow(X, map);
>> figure(2), imshow(map);
В результате в разных окнах выведем изображение и его палитру. В окне рабочего пространства появятся три переменные:

Рис.14. Переменные, соответствующие изображению и палитре
Здесь S – исходное изображение, имеющее размер 442x600x3 = 795600 байт, X – индексное изображение, преобразованное из исходной картинки. А палитра представляет собой матрицу размером 17 на 3. Формат double array означает, что ее элементы являются нули и единицы. А формат uint 8array означает, что [, Таганрог, 2008] элементы этих массивов являются 8-разрядными числами со знаком или без знака. Иначе – на представление пикселей изображения отводится по 8 битов. Всего на пиксель отводится 24 бита, так как составляющих три – красная, синяя и зеленая (R, G, B).
Для вывода палитровых изображений (чтобы не выводить сначала изображение, а потом палитру, а все изображение вместе) применяем следующую последовательность команд:
>> figure(3), subimage(X, map);
В результате получится следующее:
Рис.15. Применение команды subimage
Если выполним сильное увеличение фрагмента изображения, то получим следующий результат:
То есть, видим сочетание палитры и изображения для каждого фрагмента
Рис.16. Фрагмент палитрового изображения
Также упоминаются псевдоцветные изображения. Их можно также получить из обычного. У каждого изображения есть так называемая матрица меток, определяющая свойства изображения. Каждый элемент этой матрицы связан с палитрой изображения определенным образом. Приведем сначала примеры псевдоцветных изображений

Рис.17. Пример псведоцветных изображений
Коды для получения:
>> BW = im2bw(S, graythresh(S));
>> imshow(BW);
>> L = bwlabel(BW);
>> RGB = label2rgb(L);
>> RGB2 = label2rgb(L, 'spring', 'c', 'shuffle');
>> imshow(RGB), figure, imshow(RGB2);
Теперь проведем пояснения. Первая команда im2bw производит преобразование обычного изображения в бинарное (процесс называется бинаризацией). Команда graythresh позволяет провести бинаризацию с помощью одного из часто применяемых методов бинаризации. Также можно просто преобразовать изображение в бинарное командой im2bw(S).
Результат выполнения этого преобразования показан на рис.11.
Команда bwlabel преобразует матрицу для дальнейшей обработки.
Команда RGB2 определяет, каким образом контролируются цвета для матрицы меток.
Рис.18. Бинаризация с помощью
Graythresh
· Еще один тип используемых изображений – полутоновое. Полутоновое (gray scale). Массив изображения в формате uint8, uint16, int16, single или double. Значения пикселей описывают значения интенсивностей изображения. Они известны также как яркостные изображения.
Примечание. Для изображений в формате single или double, значения пикселей находятся в диапазоне [0, 1]. Если изображения представлены в формате uint8, то значения пикселей находятся в диапазоне [0,255]. Если же изображения представлены в формате uint16, то значения пикселей находятся в диапазоне [0, 65535]. Для формата int16 значения могут находиться в диапазоне [-32768, 32767].

Рис.19.Полутоновое изображение, полученное
из обычного полноцветного

Видим сразу отличие переменной I от остальных переменных:
S = double(S)./255;
D = rgb2gray(S);
Рис.20. Переменная для полутонового изображения
Убирается множитель 3, указывающий на то, что S – полноцветное изображение с палитрой. Также для представления компонентов используется 8 бит, но уже изображение занимает в три раза меньше объем памяти, чем исходное. Именно с целью экономии места и ускорения работы алгоритма изображение сначала преобразуют в другой тип, а затем уже выполняют все остальные этапы сжатия.
· Полноцветное. Изображения представляются массивом с размерностью
m×n×3 в формате uint8, uint16, single или double. Значение пикселя равно значению интенсивности. Эти изображения известны еще как RGB изображения.
При сохранении такие изображения обычно запоминаются как 24-х битные. В сумме в таком изображении может запоминаться до 16 миллионов цветов. Благодаря этому и получается реалистичные изображения. Для определения количества информации в полноцветном изображении необходимо умножить разрешение
изображения (mxn) на 3. Рис.21. Полноцветное изображение
Элементами пикселя являются красная, синяя и зеленая составляющая (RGB-пространство). Если в точке значение пикселя (0,0,0), то это – черный цвет. Значение (1,1,1) дает белый. Более подробно мы поговорим о цветовых пространствах на одной из следующих лабораторных работ. Чтобы увидеть числовую матрицу изображения, в окне команд нужно ввести
>>S(имя переменной, обозначающей изображение).
Также скажем, что полноцветные изображения не используют палитры, палитра является особенностью индексного изображения с палитрой.
В таблице приведем задачи пакетов, интегрированных в среду MATLAB[www. matlab. exponenta. ru].
Инструмент | Возможности |
Обработка сигналов и изображений – Signal Processing Toolbox | Обработка аудио - и видео - информации, телекоммуникации, геофизика, задачи управления в реальном режиме времени, экономика, финансы и медицина |
Обработка изображений – Image Processing Toolbox | Цифровая обработка и анализ изображений |
Коммуникационные системы – Communication Toolbox | Разработки, анализ и тестирование моделей цифровых и аналоговых систем и устройств связи и передачи информации |
Идентификация систем – System Identification Toolbox | Создание математических моделей динамических систем на основе наблюдаемых входных/выходных данных |
Вейвлет-анализ – Wavelet Toolbox | Вейвлет-анализ изображений. Используется для анализа и сжатия изображений |
Работа с цифровыми фильтрами – Filter Design Toolbox | Система проектирования, имитации и анализа цифровых фильтров, также может использоваться для более эффективной обработки сигналов, их дискретизации, проектирования систем реального времени |
Таблица 1. Возможности пакетов среды MATLAB 6.5
Таким образом, система MATLAB предоставляет широкие возможности для изучения способов обработки сигналов и изображений. Кроме того, с его помощью можно получить характеристики входного сигнала. Для изображения это будет гистограмма. Гистограмма позволяет определить основные характеристики изображения, понять, как распределены значения пикселей. К примеру, построим гистограмму для полутонового и бинарного изображений. Гисторамма для полутонового изображения называется цветовой картой и показывает распределение яркости пикселей.
На рисунках показано само изображение и его цветовая карта (гистограмма).
Рис.22. Полутоновое изображение Рис.23. Цветовая карта изображения
Поскольку обрабатываются цветные изображения, то можно проследить распределение красной (r),зеленой (g) и синей (b) составляющей. Пакет MATLAB позволяет это сделать. Эти компоненты называются цветовыми каналами, представляющими собой полутоновые изображения, определяющие распределения базового цвета [http://www. lessonsphotoshop. ru/photoshop/Phs202.html].
Например, красная составляющая для рассматриваемого изображения и ее цветовая карта будут выглядеть следующим образом:


Рис.24. Красная составляющая Рис.25. Цветовая карта канала
На диаграмме справа видно, что цвет в изображении распределен неравномерно, но больше всего цвета наблюдается в диапазоне [0.3 ,0.4). Для каналов синего и зеленого можно проверить, что для нашего снимка пиковые значения лежат в области [0.3, 0.5).
На гистограмме видно, что наблюдаются всплески в некоторых участках, поэтому в кадре есть контрастные по отношению друг к другу областей. Если посмотрим на снимок, то увидим много синих (небо) и зеленых (листва) оттенков, а также поверхности темных тонов.
Рис.26.Гистограмма изображения.
Величина яркости меняется от 0 до 255, в системе MATLAB от 0 до 1[http://www. photogeek. ru/groups/popular/104.html]. Гистограмма яркости отображает график с оттенками, присутствующими в изображении. Диапазон оттенков данного изображения представлен в виде последовательных вертикальных линий, растянутых слева направо, от самого тёмного поля до самого светлого. Высота каждой линии даёт понять, сколько пикселов определённого оттенка имеется в изображении. То есть, по горизонтали располагается шкала яркостей тонов от белого до черного, на вертикальной – число пикселей заданной яркости.
Слева график отображает темные участки снимка, справа – светлые. Если подъемы располагаются равномерно, к центру гистограммы, то изображение имеет хороший цветовой баланс. В случае если подъёмы смещены относительно центра влево или вправо, то картинка, скорее всего, слишком тёмная или слишком засвеченная. В нашем случае
В следующей лекции мы рассмотрим цветовые пространства, использующиеся в алгоритмах сжатия данных (RGB и YCrCb), дадим их интерпретацию, опишем операцию первичной обработки данных, в результате которой происходит преобразование цветового пространства.
При подготовке лекции использовались следующие материалы:
1. Цифровая обработка изображений в среде MATLAB. Москва: Техносфера, 2006. – 616 с. ISBN 5-94836-092-X.
2. Хусаинов к набору лабораторных работ «Кодирование изображений с использованием пакета MATLAB» по дисциплине «Теория кодирования информации». – Таганрог: ТТИ ЮФУ, 2008, 60 с.
3. www. matlab. exponenta. ru – электронный ресурс по системе MATLAB
4. [http://www. photogeek. ru/groups/popular/104.html
5. http://www. lessonsphotoshop. ru/photoshop/Phs202.html




