Наложить минимумы
В этом примере показано, как изменить изображение так, чтобы одна область всегда была региональным минимумом.
Прочтите изображение и отобразите его. Это изображение называется изображением маски.
mask = imread('glass.png');
imshow(mask)
Создайте двоичное изображение того же размера, что и маска, и установите для небольшой области двоичного изображения значение 1. Эти пиксели определяют местоположение в изображении маски, где будет установлен региональный минимум. Полученное изображение называется изображением маркера.
marker = false(size(mask)); marker(65:70,65:70) = true;
Наложите маркер на маску, чтобы показать, где эти интересующие пиксели попадают на исходное изображение. Маленький белый квадрат отмечает пятно. Этот код не является существенным для операции наложения минимумов.
J = mask;
J(marker) = 255;
figure
imshow(J)
title('Marker Image Superimposed on Mask')
Наложение регионального минимума на входное изображение с помощью imimposemin функция. Обратите внимание, что все темные области исходного изображения, за исключением отмеченной области, светлее.
K = imimposemin(mask,marker); figure imshow(K)

Чтобы проиллюстрировать, как эта операция удаляет все минимумы в исходном изображении, кроме введенного минимума, сравните региональные минимумы в исходном изображении с региональным минимумом в обработанном изображении. Эти вызовы imregionalmin возвращает двоичные изображения, указывающие местоположения всех региональных минимумов в обоих изображениях.
BW = imregionalmin(mask); figure subplot(1,2,1) imshow(BW) title('Regional Minima in Original Image') BW2 = imregionalmin(K); subplot(1,2,2) imshow(BW2) title('Regional Minima After Processing')

I - изображение маски в градациях серогоМаска в градациях серого, заданная как числовой массив любого размера.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
BW - Изображение двоичного маркераДвоичное изображение маркера, указанное как числовой или логический массив того же размера, что и изображение маски в градациях серого I. Для числового ввода любые ненулевые пикселы считаются 1 (true).
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
conn - Пиксельная связь4 | 8 | 6 | 18 | 26 | 3-за-3-за-... -по-3 матрицы 0s и 1sПиксельная связность, указанная как одно из значений в этой таблице. Подключение по умолчанию: 8 для 2-D изображений, и 26 для 3-D изображений.
Стоимость | Значение | |
|---|---|---|
Двумерные связи | ||
4-подключенные | Пикселы соединяются, если их края соприкасаются. Окрестностью пикселя являются соседние пиксели в горизонтальном или вертикальном направлении. |
|
8-подключенных | Пикселы соединяются, если их края или углы соприкасаются. Окрестностью пикселя являются соседние пиксели в горизонтальном, вертикальном или диагональном направлении. |
|
Трехмерные связи | ||
6-подключенных | Пиксели соединяются, если их лица соприкасаются. Окрестностью пикселя являются соседние пиксели в:
|
|
18-подключенных | Пикселы соединяются, если их грани или края соприкасаются. Окрестностью пикселя являются соседние пиксели в:
|
|
26-подключенных | Пикселы соединяются, если их грани, края или углы соприкасаются. Окрестностью пикселя являются соседние пиксели в:
|
|
Для более высоких размеров imimposemin использует значение по умолчанию .conndef(ndims(I),'maximal')
Связность также можно определить более общим образом для любого измерения, указав 3 на 3 -... -по-3 матрицы 0s и 1с. 1-значимые элементы определяют расположения окрестностей относительно центрального элемента conn. Обратите внимание, что conn должен быть симметричным относительно его центрального элемента. Дополнительные сведения см. в разделе Определение пользовательских подключений.
Типы данных: double | logical
J - Реконструированное изображениеВосстановленное изображение, возвращаемое в виде числового или логического массива того же размера и типа данных, что и I.
imimposemin использует методику, основанную на морфологической реконструкции.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.