otchet_laba_5
.docxМинистерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых»
(ВлГУ)
Кафедра БЭСТ
Лабораторная работа № 5
«Определение числа объектов на изображении»
по дисциплине:
«Цифровая обработка изображений»
Выполнил:
Студент группы БТС-114
Дачкина Н. А.
Проверил:
Аль-Хайдри Валид Ахмед
Владимир 2017 г.
Цель работы: изучить базовые методы обработки изображений, позволяющие производить подсчет объектов
Ход работы:
1. Загружаем исходное изображение
img = imread('bloodcells.jpg');
Рисунок 1 – Исходное изображение
2. Создаем функцию IM_Number_Objects, определение числа объектов на изображении
function [Xfit, Yfit]=IM_Number_Objects(img)
grayimg = rgb2gray(img); % преобразует исходное изображение в полутоновое
figure,imshow(grayimg)
Рисунок 2 – Полутоновое изображение
grayimg = imadjust(grayimg); % создает полутоновое изображение путем контрастирования исходного полутонового изображения.
figure,imshow(grayimg)
Рисунок 3 – Полутоновое изображение путем контрастирования исходного полутонового изображения.
bw = edge(grayimg,'canny', 0.15, 2);% выделениe границ на исходном полутоновом изображении
figure,imshow(bw)
Рисунок 4 – Выделение границ на полутоновом изображении
bw = imfill(bw,'holes');% заполняет отверстия на исходном бинарном изображении.
figure,imshow(bw)
Рисунок 5 – Заполнение отверстий на бинарном изображении
se = strel('disk',1); %создает плоские, дискообразные структурные элементы с R=1
bw = imopen(bw,se);% выполняет морфологическую операцию открытия полутонового или бинарного изображения bw с структурным элементом SE.
figure,imshow(bw)
Рисунок 6 – Плоские, дискообразные структурные элементы
[B,L] = bwboundaries(bw);% отслеживает наружные границы объекта на бинарном изображении BW.
stats = regionprops(L,'Centroid','EquivDiameter');%измеряет набор характеристик для каждой области, отмеченной в матрице меток L.
%'Centroid' - векторс размерностью 1ndims(L);центр масс области.
%'EquivDiameter'- скаляр; диаметр окружности, площадь которой эквивалентна площади рассматриваемой области.
figure, imshow(img)
Рисунок 7 – Выделение границ
hold on
for k = 1:length(B)% если длина от 1 до В, то
boundary = B{k};% граница равна В(к)
radius = stats(k).EquivDiameter/2; % нахождение радиуса
xc = stats(k).Centroid(1); % нахождение координаты центра по х
yc = stats(k).Centroid(2);% нахождение координаты центра по у
theta = 0:0.01:2*pi;% создаем массив
Xfit = radius*cos(theta) + xc;
Yfit = radius*sin(theta) + yc;
plot(Xfit, Yfit, 'blue');
text(boundary(1,2)-15,boundary(1,1)+15, num2str(radius,3),'Color','k', 'FontSize',8);
end
end
Вывод: в ходе данной лабораторной работы были изучены базовые методы обработки изображений, позволяющие производить подсчет объектов. Создана функция, которая выполняет поиск и размер объектов.