K-означает кластеризацию сегментации изображений на основе
использует аргументы name-value для управления аспектами алгоритма кластеризации k-средних значений.L = imsegkmeans(I,k,Name,Value)
Чтение изображения в рабочую область.
I = imread('cameraman.tif'); imshow(I) title('Original Image')

Сегментируйте изображение в три области, используя k-средних значений кластеризацию.
[L,Centers] = imsegkmeans(I,3);
B = labeloverlay(I,L);
imshow(B)
title('Labeled Image')
Чтение изображения в рабочую область. Уменьшите размер изображения, чтобы ускорить запуск примера.
RGB = imread('kobi.png');
RGB = imresize(RGB,0.5);
imshow(RGB)
Сегментируйте изображение в две области с помощью кластеризации k-средних значений.
L = imsegkmeans(RGB,2);
B = labeloverlay(RGB,L);
imshow(B)
title('Labeled Image')
Несколько пикселей имеют неправильную маркировку. Остальная часть примера показывает, как улучшить сегментацию k-средних значений путем дополнения информации о каждом пикселе.
Дополните изображение информацией о текстуре в окрестностях каждого пикселя. Чтобы получить информацию о текстуре, фильтруйте полутоновую версию изображения набором фильтров Габора.
Создайте набор из 24 фильтров Габора, охватывающих 6 длин волн и 4 ориентации.
wavelength = 2.^(0:5) * 3; orientation = 0:45:135; g = gabor(wavelength,orientation);
Преобразуйте изображение в полутоновое.
I = rgb2gray(im2single(RGB));
Фильтрация полутонового изображения с помощью фильтров Gabor. Отобразите 24 отфильтрованных изображения в монтаже.
gabormag = imgaborfilt(I,g);
montage(gabormag,'Size',[4 6])
Сглаживайте каждое отфильтрованное изображение, чтобы удалить локальные изменения. Отобразите сглаженные изображения в монтаже.
for i = 1:length(g) sigma = 0.5*g(i).Wavelength; gabormag(:,:,i) = imgaussfilt(gabormag(:,:,i),3*sigma); end montage(gabormag,'Size',[4 6])

Дополните информацию о каждом пикселе пространственной информацией о местоположении. Эта дополнительная информация позволяет алгоритму кластеризации k-средних значений предпочитать группировки, которые близки друг к другу пространственно.
Получите координаты x и y всех пикселей на вход изображении.
nrows = size(RGB,1); ncols = size(RGB,2); [X,Y] = meshgrid(1:ncols,1:nrows);
Конкатенируйте информацию о интенсивности, информацию о текстуре окрестностей и пространственную информацию о каждом пикселе.
В этом примере набор функций включает изображение интенсивности I вместо исходного цветного изображения RGB. Информация о цвете опускается из набора функций, потому что желтый цвет меха собаки похож на желтый оттенок плитки. Цветовые каналы не дают достаточно четкой информации о собаке и фоне, чтобы сделать чистую сегментацию.
featureSet = cat(3,I,gabormag,X,Y);
Сегментируйте изображение в две области k-средних значений используя кластеризацию с дополненным набором функции.
L2 = imsegkmeans(featureSet,2,'NormalizeInput',true); C = labeloverlay(RGB,L2); imshow(C) title('Labeled Image with Additional Pixel Information')

Чтение изображения в рабочую область.
I = imread('peppers.png'); imshow(I) title('Original Image')

Сегментируйте изображение в 50 областей с помощью кластеризации k-средних значений. Верните матрицу меток L и местоположения центроидов кластеров C. Расположения центроида кластера являются значениями RGB каждого из 50 цветов.
[L,C] = imsegkmeans(I,50);
Преобразуйте матрицу меток в изображение RGB. Укажите местоположения центроидов кластеров, C, как палитра для нового изображения.
J = label2rgb(L,im2double(C));
Отобразите квантованное изображение.
imshow(J)
title('Color Quantized Image')
Запишите оригинальные и сжатые изображения в файл. Квантованный файл изображения приблизительно на четверть превышает размер оригинального изображения файла.
imwrite(I,'peppersOriginal.png'); imwrite(J,'peppersQuantized.png');
I - Изображение в сегментИзображение в сегмент, заданное как 2-D полутоновое изображение, 2-D цветное изображение или 2-D мультиспектральное изображение.
Типы данных: single | int8 | int16 | uint8 | uint16
k - Количество кластеровКоличество создаваемых кластеров, заданное как положительное целое число.
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
'NumAttempts',5'NormalizeInput' - Нормализация входных данныхtrue или 1 (по умолчанию) | false или 0Нормализуйте входные данные до нуля среднего и единичного отклонения, заданной как разделенная разделенными запятой парами, состоящая из 'NormalizeInput' и числовое или логическое 1 (true) или 0 (false).. Если вы задаете true, затем imsegkmeans нормализует каждый канал входа индивидуально.
'NumAttempts' - Количество раз повторить процесс кластеризации3 (по умолчанию) | положительное целое числоКоличество раз, чтобы повторить процесс кластеризации с использованием новых начальных положений центроида кластера, заданных как разделенная разделенными запятой парами, состоящая из 'NumAttempts' и положительное целое число.
'MaxIterations' - Максимальное количество итераций100 (по умолчанию) | положительное целое числоМаксимальное количество итераций, заданное как разделенная разделенными запятой парами, состоящая из 'MaxIterations' и положительное целое число.
'Threshold' - Порог точности1e-4 (по умолчанию) | положительное числоПорог точности, заданный как разделенная разделенными запятой парами, состоящая из 'Threshold' и положительное число. Алгоритм останавливается, когда каждый из центров кластеров перемещается меньше, чем пороговое значение в последовательных итерациях.
L - Матрица метокМатрица меток, заданная как матрица положительных целых чисел. Пиксели с меткой 1 относятся к первому кластеру, метка 2 - ко второму кластеру и так далее для каждого из k кластеры. L имеет те же первые две размерности, что и изображение I. Класс L зависит от количества кластеров.
Класс L | Количество кластеров |
|---|---|
'uint8' | k <= 255 |
'uint16' | 256 <= k <= 65535 |
'uint32' | 65536 <= k <= 2^32-1 |
'double' | 2^32 <= k |
centers - Местоположения центроидов кластеровРасположения центроида кластера, возвращенные как числовая матрица размера k -by - c, где k - количество кластеров, а c - количество каналов. centers - тот же класс, что и изображение I.
Функция приводит к воспроизводимым результатам. Выходные выходы не изменяются при нескольких запусках, учитывая одни и те же входные параметры.
[1] Артур, Д. и С. Васильвицкий. «k-средних значений + +: Преимущества тщательного посева». SODA '07: Материалы восемнадцатого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам. New Orleans, LA, January 2007, pp. 1027-1035.
gabor | imgaborfilt | imsegkmeans3 | label2rgb | labelmatrix | labeloverlay | lazysnapping | superpixels | watershedУ вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.