Добавил:
t.me Фулл всегда есть! А если нет, то Вы плохо его ищите! ИиКГ, СКДИКТ, ОКИТПЭС и тд https://t.me/whitedevil752 Так же веду разработку КД (конструкторской документации) согласно ГОСТ. Имеется опыт работы при производстве на одном из ведущих в области радиэлектроники предприятии. Пишите) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

otsu

.docx
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
178 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций

Российской Федерации

Федеральное государственное бюджетное образовательное

учреждение высшего образования

«Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М. А. Бонч-Бруевича»

_____________________________________________________________________________

Кафедра РАДИОТЕХНИКИ

Дисциплина «Технологии распознавания изображений и компьютерное зрение»

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

«Реализация метода Отсу»

Выполнили: студенты группы РТ-22,

бригада № 6

Спица М.А.

Стулин П.А.

Сараева Л.В.

Швецов Ф.П.

Проверил: к.т.н. доцент каф. РТ,

Коровин К.О.

________________________

Санкт-Петербург

2026

Задание 1: Произвести обработку изображения методом Отсу

Алгоритм работы

  1. Вычислить нормализованную гистограмму входного изображения. Обозначить компоненты гистограммы как  .

  2. Вычислить кумулятивные суммы   для  , используя уравнение (10-49).

  3. Вычислить кумулятивные средние  , используя уравнение (10-53).

  4. Вычислить глобальное среднее  , используя уравнение (10-54).

  5. Вычислить значение межклассовой дисперсии   для  , используя уравнение (10-62).

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

Рис.1 Результат работы скрипта

Листинг кода в МАТЛАБ

clc

clear all

close all

a=imread('microb.jpg');

a=rgb2gray(a);

l=256;

%% Вычислить нормализованную гистограмму входного изображения

[count, edges] = histcounts(a, 0:l);

[pix1, pix2] = size(a);

allpix = pix1 * pix2;

p = count / allpix;

figure(101)

bar(0:l-1, p);

xlabel('Уровень интенсивности i');

ylabel('Нормализованная частота p_i');

title('Нормализованная гистограмма изображения');

grid on

%% Вычислить кумулятивные суммы

P1 = cumsum(p);

%% Вычислить кумулятивные средние

csum = 0;

m = zeros(1,l);

for k = 1:l

csum = csum + (k-1) * p(k);

m(k) = csum;

end

%% Вычислить глобальное среднее

mG = sum((0:l-1) .* p);

%% Вычислить значение межклассовой дисперсии

sigmaB2 = zeros(1, l);

for k = 1:l

if (P1(k) > 0) && (P1(k) < 1)

sigmaB2(k) = (mG * P1(k) - m(k))^2 / (P1(k) * (1 - P1(k)));

else

sigmaB2(k) = 0;

end

end

figure(501)

plot(sigmaB2)

grid

%% Получить порог Оцу

% maxsigmaB2 = max(sigmaB2);

scoreind = 0;

for ind = 3:l

if (sigmaB2(ind)-sigmaB2(ind-1)<0) && (sigmaB2(ind-1)-sigmaB2(ind-2)>0)

scoreind=scoreind+1;

index(scoreind) = ind-1;

end

end

kopt = mean(index);

segm = a;

segm(segm>kopt) = 255;

segm(segm<=kopt) = 0;

figure(10000)

hold on

subplot(1,2,1)

imshow(a)

subplot(1,2,2)

imshow(segm)

Соседние файлы в предмете Технологии распознавания изображений и компьютерное зрение