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

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

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

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

Коррекция неравномерной засветки изображения

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

Последовательность действий:

Шаг 1: Считывание изображения.
Шаг 2: Использование морфологической операции раскрытия для оценки фона.
Шаг 3: Извлечение фона из исходного изображения.
Шаг 4: Увеличение контрастности изображения.
Шаг 5: Пороговая обработка изображения.
Шаг 6: Присвоение меток объектам изображения.
Шаг 7: Исследование матрицы меток.
Шаг 8: Измерение характеристик объектов на изображении.
Шаг 9: Вычисление статистических свойств объектов изображения.
Шаг 10: Построение гистограммы по полю зерен.

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

I=imread('rice.png');
imshow(I)

Шаг 2: Использование морфологической операции раскрытия для оценки фона

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

background=imopen(I, strel('disk', 15));
% Отобразим поверхность фона
figure, surf(double(background(1:8:end, 1:8:end))), zlim([0 255]);
set(gca, 'ydir', 'reverse');

Шаг 3: Извлечение фона из исходного изображения

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

I2=imsubtract(I, background);
imshow(I2)

Шаг 4: Увеличение контрастности изображения

I3=imadjust(I2);
imshow(I3);

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

Создадим бинарное изображение на основе данного.

level=graythresh(I3);
bw=im2bw(I3, level);
imshow(bw)

Шаг 6: Присвоение меток объектам изображения

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

[labeled, numObjects]=bwlabel(bw, 4); % 4-связные
numObjects % Число всех отдельных объектов на изображении.
numObjects=
  101

Шаг 7: Исследование матрицы меток

Каждый отдельный объект является отмеченным некоторым числом. Например, большая часть зерен отмечена числом 50.

rect=[105 125 10 10];
grain=imcrop(labeled, rect)
grain=
     0     0    50    50    50    50    50    50    50    50     0
     0     0    50    50    50    50    50    50    50    50     0
     0     0    50    50    50    50    50    50    50    50     0
     0     0    50    50    50    50    50    50    50    50     0
     0     0    50    50    50    50    50    50    50    50     0
     0     0    50    50    50    50    50    50    50    50     0
     0     0    50    50    50    50    50    50    50    50     0
     0     0     0     50    50    50    50    50    50    50     0
     0     0     0     50    50    50    50    50    50     0      0
     0     0     0     50    50    50    50    50    50     0      0
     0     0     0     0     50    50     50     0     0      0      0

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

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

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

Функция REGIONPROPS проводит анализ объектов или характеристик окрестности на изображении и возвращает результаты в виде структур массива. При обработке изображения с отмеченными компонентами, для каждого объекта создается свой структурный элемент. Используем функцию regionprops для создания массива структур, содержащего некоторые основные свойства отмеченных объектов изображения.

graindata=regionprops(labeled, 'basic')
graindata=
   graindata(50).Area
ans =
   203

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


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

Система Orphus

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