Гранулометрия
Обработка изображений применяется во многих сферах деятельности человека. Развитие информационных технологий способствует повышению качественного уровня анализа данных. Также прогресс компьютерной техники влияет на быстродействие и достоверность такой обработки. Приведем несколько наглядных примеров из тех областей, где применяется обработка изображений и, в частности, гранулометрия.
В первую очередь, это медицина. Гранулометрия в медицине применяется для подсчета количества определенных объектов на изображениях срезов биологических тканей. Например, позволяет автоматически выделять различные объекты изображения и оценивать их процентный состав в зависимости от площади; также применяется при анализе крови (построении и анализе эритроцитарной гистограммы, подсчете тромбоцитов и т.д.). Это может быть также анализ снимков микроскопа (подсчет бактерий, анализ хромосом и т.д.). Похожая область - это анализ фармацевтических препаратов при их изготовлении.
Вторая задача, где применяется гранулометрия - это анализ состава материалов в промышленности. Это может быть количественный анализ зерен в зернистых структурах (сталях, сплавах и т.п.) и получение их распределения по размерам и форме; оценка параметров включений и дефектов (размеры, форма, распределение). Причем все эти измерения, в большинстве случаев производятся автоматически, т.е. частицы сначала выделяются, измеряются и классифицируются. Ниже приведены примеры двух изображений, которые могут использоваться при гранулометрических исследованиях.
Под термином гранулометрия подразумевается измерение и классификация объектов изображения по одному из имеющихся параметров, например, размеру. Рассмотрим более детально решение этой задачи на конкретном примере. Результатом обработки является гистограмма, показывающая процентное содержание объектов каждого класса.
Содержание
- Считывание изображения.
- Улучшение контрастности изображения.
- Определение яркости поверхности на улучшенном изображении.
- Вычисление первой производной распределения.
- Формирование объектов (снежинок) с учетом вычисленного радиуса.
Считывание изображения.
Считываем файл 'snowflakes.png', который представляет собой изображение хлопьев снега.
I=imread('snowflakes.png');
figure, imshow(I)
Улучшение контрастности изображения.
Эффективность решения любой задачи по обработке изображений, в большой мере, зависит от качества исходных данных. В данном случае, когда необходимо идентифицировать объекты и анализировать их размер, то высокое качество исходного изображения является одним из необходимых условий. Для решения задачи повышения контрастности изображения в системе Matlab можно использовать функцию ADAPTHISTEQ. Эта функция реализует контрастно-ограниченную адаптивную эквализацию (выравнивание) гистограммы. Для коррекции яркостей изображения используется функция IMADJUST, которая позволяет управлять диапазоном яркостей изображения.
claheI=adapthisteq(I, 'Divisions', [10 10]);
claheI=imadjust(claheI);
imshow(claheI);
Определение яркости поверхности на улучшенном изображении.
При решении задач гранулометрии результат измерения интенсивностей элементов исследуемого изображения представляется в виде функции. Эта функция привязана к размерам исходного изображения. Каждому объекту изображения присваиваются определенные параметры, основной из которых - размер. На основании этих параметров производится построение гистограммы распределения объектов по определенных признаках. Вторым параметром, на основании которого осуществляется распределение, является интенсивность (яркость) объектов изображения.
for counter=0:22
remain=imopen(claheI, strel('disk', counter));
intensity_area(counter+1)=sum(remain(:));
end
figure,plot(intensity_area, 'm - *'), grid on;
title('Функция зависимости суммы пикселей раскрытого изображения от их радиуса');
xlabel('радиус раскрытия (в пикселях)');
ylabel('значение суммы пикселей раскрытых объектов (интенсивность)');
Вычисление первой производной распределения.
Распределение объектов изображения, полученное в результате гранулометрической обработки, характеризуется также рядом параметров. Одним из них является первая производная, которая вычисляется при помощи функции DIFF.
intensity_area_prime=diff(intensity_area);
plot(intensity_area_prime, 'm-*'), grid on;
title('Granulometry (Size Distribution) of Snowflakes');
set(gca, 'xtick', [0 2 4 6 8 10 12 14 16 18 20 22]);
xlabel('радиус снежинок (в пикселях)');
ylabel('зависимость суммы пикселей снежинок от радиуса');