MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

Обработка сигналов и изображений\ Image Processing Toolbox

И.М.Журавель "Краткий курс теории обработки изображений"

В оглавление книги \ К предыдущему разделу \ К следующему разделу

Возможности цифровой обработки изображений в Matlab

На сегодняшний день система Matlab, в частности пакет прикладных программ Image Processing Toolbox, является наиболее мощным инструментом для моделирования и исследования методов обработки изображений. Он включает большое количество встроенных функций, реализующих наиболее распространенные методы обработки изображений. Рассмотрим основные возможности пакета Image Processing Toolbox.

Геометрические преобразования изображений

К наиболее распространенным функциям геометрических преобразований относится кадрирование изображений (imcrop), изменение размеров (imresize) и поворот изображения (imrotate).

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

L=imread('cameraman.tif');
imshow(L);
imcrop;


Функция изменения размеров изображения imresize позволяет, используя специальные методы интерполяции, изменять размер любого типа изображения.


В пакете Image Processing Toolbox существует функция imrotate, которая осуществляет поворот изображения на заданный угол.

L1=imrotate(L,35,'bicubic');
figure,imshow(L1)


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

Анализ изображений

Для работы с отдельными элементами изображений используются такие функции как imhist, impixel, mean2, corr2 и другие.

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

L=imread('cameraman.tif');
figure, imshow(L);
figure, imhist(L);


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

>> impixel

ans =

   173   173   173
   169   169   169
   163   163   163
    39    39    39

Следует отметить, что функция impixel по своим возможностям в некоторой степени повторяет опцию Data Cursor, пример использования которой при веден на изображении внизу.


Еще одной широко применяемой функцией является функция mean2 – она вычисляет среднее значение элементов матрицы.

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

Улучшение изображений

Среди встроенных функций, которые реализуют наиболее известные методы улучшения изображений, выделим следующие – histeq, imadjust та imfilter(fspecial).

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

L=imread('cameraman.tif');
figure, imshow(L);
L1=histeq(L);
Figure, imsow(L1);


Исходное изображение


Изображение после эквализации гистограммы

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

L=imread('cameraman.tif');
figure, imshow(L);
L1=imadjust(L);
figure, imshow(L1);
figure, imhist(L);
figure, imhist(L1);



Также при решении задач улучшения изображений используется функция imfilter в паре с функцией fspecial. Функция fspecial позволяет задавать различные типы масок фильтра. Рассмотрим пример использования маски фильтра, повышающего резкость изображения.

L=imread('cameraman.tif');
figure, imshow(L);
H = fspecial('unsharp');
L1 = imfilter(L,H,'replicate');
figure, imshow(L1);


Фильтрация изображений

Пакет Image Processing Toolbox обладает очень мощным инструментарием по фильтрации изображений. Среди множества встроенных функций, которые решают задачи фильтрации изображений, особо следует выделить fspecial, ordfilt2, medfilt2.

Функция fspecial является функцией задания маски предопределенного фильтра. Эта функция позволяет формировать маски:

  1. высокочастотного фильтра Лапласа;
  2. фильтра, аналогичного последовательному применению фильтров Гаусса и Лапласа, так называемого лапласиана-гауссиана;
  3. усредняющего низкочастотного фильтра;
  4. фильтра, повышающего резкость изображения.

Рассмотрим примеры применения названных выше фильтров:

L=imread('cameraman.tif');
figure, imshow(L);
h=fspecial('laplasian',.5);
L1 = imfilter(L,h,'replicate');
figure, imshow(L1);


h=fspecial('log', 3, .5);
L1 = imfilter(L,h,'replicate');
figure, imshow(L1);


h=fspecial('average', 3);
L1 = imfilter(L,h,'replicate');
figure, imshow(L1);


h=fspecial('unsharp', .5);
L1 = imfilter(L,h,'replicate');
figure, imshow(L1);


Сегментация изображений

Среди встроенных функций пакета Image Processing Toolbox, которые применяются при решении задач сегментации изображений, следует выделить qtdecomp, edge и roicolor.

Функция qtdecomp выполняет сегментацию изображения методом разделения и анализа однородности не перекрывающихся блоков изображения.

I = imread('cameraman.tif');
S = qtdecomp(I,.27);
blocks = repmat(uint8(0),size(S));
 
for dim = [512 256 128 64 32 16 8 4 2 1];    
  numblocks = length(find(S==dim));    
  if (numblocks > 0)        
    values = repmat(uint8(1),[dim dim numblocks]);
    values(2:dim,2:dim,:) = 0;
       blocks = qtsetblk(blocks,S,dim,values);
  end
end
 
blocks(end,1:end) = 1;
blocks(1:end,end) = 1;
 
imshow(I), figure, imshow(blocks,[])


Одной из наиболее часто применяемых является функция выделения границ edge, которая реализует такие встроенные методы – Собела, Превит, Робертса, лапласиан-гауссиана, Канни и др.

Приведем примеры реализации функции edge с использованием различных фильтров.

clear;
I = imread('cameraman.tif');
BW1=edge(I,'sobel');
figure,imshow(BW1);title('sobel');
BW2=edge(I,'prewitt');
figure,imshow(BW2);title('prewitt');
BW3=edge(I,'roberts');
figure,imshow(BW3);title('roberts');
BW4=edge(I,'log');
figure,imshow(BW4);title('log');
BW5=edge(I,'zerocross');
figure,imshow(BW5);title('zerocross');
BW6=edge(I,'canny');
figure,imshow(BW6);title('canny');

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

I = imread('cameraman.tif');
figure, imshow(I);
BW = roicolor(I,128,255);
imshow(I);
figure, imshow(BW);


Морфологические операции над бинарными изображениями

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

В качестве примера приведем решение задачи разделения слипшихся объектов с помощью морфологических операций.

clear;
L=imread('circles.bmp');
L=L(:,:,1);
imshow(L);
BW1=L<150;
figure,imshow(BW1);
BW2=bwmorph(BW1,'erode',12);
figure,imshow(BW2);
BW2=bwmorph(BW2,'thicken',Inf);
figure,imshow(BW2);
BW1=BW1&BW2;
figure,imshow(BW1);

Исходное изображение
Исходное изображение


Бинарное изображение
Бинарное изображение
Эрозия бинарного изображения
Эрозия бинарного изображения
Утолщение объектов
Утолщение объектов
Результат разделения слипшихся объектов
Результат разделения слипшихся объектов

Кроме перечисленных возможностей, пакет прикладных программ Image Processing Toolbox владеет широкими возможностями при решении задач анализа изображений, в частности, при поиске объектов и вычислении их признаков.

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

В оглавление книги \ К предыдущему разделу \ К следующему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика