Обработка изображений в MATLAB — КиберПедия 

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Обработка изображений в MATLAB

2017-10-16 962
Обработка изображений в MATLAB 0.00 из 5.00 0 оценок
Заказать работу

 

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

Шаг 1: Считывание и отображение изображения.

Шаг 2: Оценка и аппроксимация значений пикселей фона.

Шаг 3: Аппроксимация и просмотр поверхности фона.

Шаг 4: Создание изображения с равномерным фоном.

Шаг 5: Повышение контраста изображения.

Шаг 6: Создание бинарного изображения.

Шаг 7: Определение числа объектов на изображении.

Шаг 8: Анализ изображения.

Шаг 9: Отображение матрицы меток как псевдоцветового индексного изображения

Шаг 10: Измерение свойств объектов на изображении.

Шаг 11: Вычисление статистических данных об объектах на изображении.

 

Шаг 1: Считывание и отображение изображения

 

Считаем и визуализируем полутоновое изображение «rice.png» (рисунок 1.1).

 

I=imread('rice.png');

imshow(I)

 

Рисунок 1.1 – Полутоновое изображение риса «rice.png»

 

Шаг 2: Оценка и аппроксимация значений пикселей фона

 

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

В примере используется функция «imopen», которая выполняет морфологическое раскрытие. При этом также используется функция «strel» для создания структурного элемента в виде диска с радиусом 15.

 

background = imopen(I,strel('disk',15));

 

Для просмотра и оценки фона используются следующие команды

 

figure, imshow(background)

 

Шаг 3: Аппроксимация и просмотр поверхности фона

 

Используем команду «surf» для отображения поверхности фона. С помощью команды «surf» создается цветная параметрическая поверхность, которая дает возможность просматривать прямоугольную область исследуемого изображения. Функция «surf» работает с данными, которые представлены в формате «double». Поэтому, прежде чем применять эту функцию, данные необходимо перевести в формат «double».

 

figure, surf(double(background(1:8:end,1:8:end))), zlim([0 255]);

set(gca,'ydir,,,reverse');

 

В данном примере отображается только каждый восьмой пиксель по каждому направлению. Существует также возможность установки масштаба и других параметров.

На основе этого можно проводить анализ фона исследуемого изображения (рисунок 1.2).

Рисунок 1.2 – Отображения поверхности фона

 

Шаг 4: Создание изображения с равномерным фоном

 

Для создания изображения с более равномерным фоном, вычтем изображение фона «background» из исходного изображения I.

 

I2=imsubtract(I,background);

 

Отобразим полученное изображение с более равномерным фоном.

 

figure, imshow(I2)

 

Шаг 5: Улучшение контраста на обрабатываемом изображении

 

После вычитания полученное изображение будет иметь более равномерный фон и будет более темным. Используем функцию «imadjust» для повышения контраста изображения.

 

I3=imadjust(I2);

 

Функция «imadjust» увеличивает контраст изображения путем растяжения значений интенсивностей динамического диапазона. Для более детальной информации см. описание функции «imadjusb» системе Matlab. Отобразим улучшенное изображение I3.

 

figure, imshow(I3);

 

Шаг 6: Создание бинарного изображения

 

Бинарное изображение можно создать, используя функцию «thresholding» (рисунок 1.3). Однако функция «graythresh» автоматически определяет подходящий порог, который используется для преобразования полутонового изображения в бинарное. Функция «im2bw» выполняет это преобразование.

 

level=graythresh(I3);

bw=im2bw(I3,level);

figure, imshow(bw)

 

Рисунок 1.3 – Бинарное изображение

 

Возвращаемое функцией «im2bw» бинарное изображение «bw» представлено в формате «logical». В этом можно убедится, воспользовавшись функцией «whos». Приложение «ImageProcessingToolbox» использует логические массивы для представления бинарных изображений.

 

whos

 

Реакцией системы MATLAB на эту функцию представлена в таблице 1.1


 

 

Таблица 1.1 – Реакция системы MATLAB на функцию «whos»

Name Size Bytes Class
I 256x256   uint8 array2
I2 256x256   uint8 array
I3 256x256   uint8 array
background 256x256   uint8 array
bw 256x256   logical array
level 1x1   doublearray

 

В общей сложности используется 327681 элемента, которые занимают 327688 байт.

 

Шаг 7: Определение числа объектов на изображении

 

После преобразования изображения в бинарное, можно использовать функцию «bwlabel» для определения числа объектов (зерен риса) на изображении. Функция «bwlabel» отмечает все компоненты на бинарном изображении «bw» и возвращает их число в виде значения «numObjects».

 

[labeled,numObjects]=bwlabel(bw,4);

numObjects

ans=101

 

Точность результата зависит от некоторых факторов, включая

1. размер объектов;

2. соприкасаются ли между собой объекты (в этом случае они могут определятся как один объект);

3. точность аппроксимации фона.

4. выбор связности.

 

Шаг 8: Анализ матрицы меток

 

Для проведения анализа формирования матрицы меток, возвращаемой функцией «bwlabel», рассмотрим значения пикселей изображения. Есть несколько путей получения значений пикселей изображения. Например, используя функцию «imcrop», можно просматривать небольшие порции изображения. Другой путь состоит в использовании приложения «PixelRegiontool» для просмотра значений пикселей. Отобразим матрицу меток с использованием функции «imshow»,

 

figure, imshow(labeled);

 

Запускприложения «PixelRegiontool»/

 

impixelregion

 

По умолчанию оно автоматически связывает себя с изображением в текущем окне просмотра. Приложение «PixelRegiontool» рисует прямоугольник с центром в видимой части изображения. Расположение этого прямоугольника определяет какие пиксели будут отображаться в «PixelRegiontool». При перемещении прямоугольника значения отображаемых в окне «PixelRegiontool» пикселей обновятся.

На следующем изображении представлен «ImageViewer» с прямоугольником «PixelRegion», размещенным на границе двух рисовых гранул (рисунок 1.4). Отметим, что значения пикселей фона и отдельных гранул являются одинаковыми. Так, в частности, значение фона равно 0.

Рисунок 1.4 – Просмотр матрицы средствами «PixelRegiontool»

 

Шаг 9: Отображение матрицы меток в виде псевдоцветного индексного изображения

 

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

Для просмотра матрицы меток используется функция «label2rgb». Эта функция применяется при создании палитры, цвета фона и цвета каж­дого объекта изображения.

 

pseudo_color=label2rgb(labeled, @spring, 'c', 'shuffle');

imshow(pseudo_color);

 

Рисунок 1.5 – Представление матрицы меток в виде псевдоцветного изображения

 

Шаг 10: Измерение свойств объектов на изображении

 

Функция «regionprops» применяется для измерения свойств объектов в некоторой окрестности изображения и представляет результат в виде массива. Если применить это к изображению с отмеченными компонента­ми, то создается структура для каждой компоненты.

В этом примере используется функция «regionprops» для создания структурированного массива, содержащего некоторые основные свойства. Если установить свойствам параметр «basic», то функция «regionprops» возвращает три измеренных параметра: площадь, центроид (или центр масс) и ограничивающий прямоугольник (локальная окрестность). В данном случае ограничивающий прямоугольник представляет собой локальную окрестность, отображающую гранулы риса.

 

graindata = regionprops(labeled,'basic')

 

Система MATLAB выдает такой результат

 

graindata = 101x1 struct array with fields:

Area

Centroid

BoundingBox

 

Для поиска области с 51-м отмеченным компонентом, необходимо найти поле «Areafield» и его 51 элемент в структуре массива «graindata».

 

graindata(51).Area

 

В этом случае результат будет таким

 

ans=140

 

Для поиска наименее возможного прямоугольника и центроида (центра масс) некоторых компонентов используется следующий код:

 

graindata(51).BoundingBox, graindata(51).Centroid

ans =

107.5000 4.5000 13.0000 20.0000

ans =

114.5000 15.4500

 

Шаг 11: Вычисление статистических свойств объектов изобра­жения

 

Функции системы MATLAB могут использоваться для вычисления статистических свойств объектов. Сначала используется функция «max» для поиска наибольшего зерна. (В нашем примере наибольшими являются два зерна риса, которые соприкасаются.)

 

max([graindata.Area])

 

Результат представляется в виде

 

ans =404

 

Далее с помощью функции «find» найдем те компоненты, которыми отмечены зерна риса с этой площадью.

 

biggrain = find([graindata.Area]==404)

 

Результат представляется в виде

 

biggrain=59

 

Найдем средний размер всех зерен риса.

 

mean([graindata.Area])

 

Результат будет представлен в виде

 

ans =175.0396

 

Рисунок 1.6 – Гистограмма распределения зерен по их размеру

 

Постоим на рисунке 1.6 гистограмму распределения зерен риса по их размеру (при этом будем использовать 20 позиций при градации по оси площади). Из гистограммы видно, что основная часть зерен риса имеет площадь от 150 до 250 пикселей.

 

hist([graindata.Area],20)

 

Задания к работе

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

 

Контрольные вопросы

 

1. С использованием какой функции определяется число объектов на изображении? Каковы особенности данной функции?

2. Для чего анализируется матрица меток?

3. Каким образом измеряются объекты на изображении?

4. С помощью какой функции изображение загружается в Matlab? В каком формате изображенное изображение интерпретируется Matlab’ом?

 

 


Практическая работа №2


Поделиться с друзьями:

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.037 с.