bwdist

Преобразование расстояния двухуровневого изображения

Описание

D = bwdist(BW) вычисляет Евклидово преобразование расстояния двухуровневого изображения BW. Для каждого пикселя в BW, преобразование расстояния присваивает номер, который является расстоянием между тем пикселем и самым близким ненулевым пикселем BW.

Опционально можно вычислить Евклидово преобразование расстояния 2D двухуровневого изображения с помощью графического процессора (требует Parallel Computing Toolbox™).

[D,idx] = bwdist(BW) также вычисляет самую близкую пиксельную карту в форме массива индекса, idx. Каждый элемент idx содержит линейный индекс самого близкого ненулевого пикселя BW. Самая близкая пиксельная карта также называется картой функции, функция преобразовывают, или преобразование ближайшего соседа.

[D,idx] = bwdist(BW,method) вычисляет преобразование расстояния с помощью альтернативной метрики расстояния, заданной method.

Примеры

свернуть все

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

Создайте двухуровневое изображение.

bw = zeros(5,5); 
bw(2,2) = 1; 
bw(4,4) = 1
bw = 5×5

     0     0     0     0     0
     0     1     0     0     0
     0     0     0     0     0
     0     0     0     1     0
     0     0     0     0     0

Вычислите преобразование расстояния.

[D,IDX] = bwdist(bw)
D = 5x5 single matrix

    1.4142    1.0000    1.4142    2.2361    3.1623
    1.0000         0    1.0000    2.0000    2.2361
    1.4142    1.0000    1.4142    1.0000    1.4142
    2.2361    2.0000    1.0000         0    1.0000
    3.1623    2.2361    1.4142    1.0000    1.4142

IDX = 5x5 uint32 matrix

    7    7    7    7    7
    7    7    7    7   19
    7    7    7   19   19
    7    7   19   19   19
    7   19   19   19   19

В матричном IDX ближайшего соседа значения 7 и 19 представляют положение ненулевых элементов с помощью линейного индексирования матриц. Если пиксель содержит 7, его самый близкий ненулевой сосед в линейном положении 7.

В этом примере показано, как сравнить 2D преобразования расстояния для поддерживаемых методов расстояния. В фигуре отметьте, как квазиевклидово преобразование расстояния лучше всего аппроксимирует круговую форму, достигнутую Евклидовым методом расстояния.

bw = zeros(200,200);
bw(50,50) = 1; bw(50,150) = 1; bw(150,100) = 1;
D1 = bwdist(bw,'euclidean');
D2 = bwdist(bw,'cityblock');
D3 = bwdist(bw,'chessboard');
D4 = bwdist(bw,'quasi-euclidean');
RGB1 = repmat(rescale(D1), [1 1 3]);
RGB2 = repmat(rescale(D2), [1 1 3]);
RGB3 = repmat(rescale(D3), [1 1 3]);
RGB4 = repmat(rescale(D4), [1 1 3]);

figure
subplot(2,2,1), imshow(RGB1), title('Euclidean')
hold on, imcontour(D1)
subplot(2,2,2), imshow(RGB2), title('City block')
hold on, imcontour(D2)
subplot(2,2,3), imshow(RGB3), title('Chessboard')
hold on, imcontour(D3)
subplot(2,2,4), imshow(RGB4), title('Quasi-Euclidean')
hold on, imcontour(D4)

В этом примере показано, как сравнить графики изоповерхности для преобразований расстояния 3-D изображения, содержащего один ненулевой пиксель в центре.

bw = zeros(50,50,50); bw(25,25,25) = 1;
D1 = bwdist(bw);
D2 = bwdist(bw,'cityblock');
D3 = bwdist(bw,'chessboard');
D4 = bwdist(bw,'quasi-euclidean');
figure
subplot(2,2,1), isosurface(D1,15), axis equal, view(3)
camlight, lighting gouraud, title('Euclidean')
subplot(2,2,2), isosurface(D2,15), axis equal, view(3)
camlight, lighting gouraud, title('City block')
subplot(2,2,3), isosurface(D3,15), axis equal, view(3)
camlight, lighting gouraud, title('Chessboard')
subplot(2,2,4), isosurface(D4,15), axis equal, view(3)
camlight, lighting gouraud, title('Quasi-Euclidean')

Входные параметры

свернуть все

Двухуровневое изображение в виде числового или логического массива любой размерности. Для числового входа любые ненулевые пиксели считаются 1 TRUE).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Метрика расстояния в виде одного из этих значений.

Метод

Описание

'chessboard'

В 2D расстояние шахматной доски между (x 1, y 1) и (x 2, y 2)

макс. (│x1 x 2 │, │ y 1y 2 │).

'cityblock'

В 2D cityblock расстояние между (x 1, y 1) и (x 2, y 2)

│x1 x 2 │ + │y1 y 2

'euclidean'

В 2D Евклидово расстояние между (x 1, y 1) и (x 2, y 2)

(x1x2)2+(y1y2)2.

'quasi-euclidean'

В 2D квазиевклидово расстояние между (x 1, y 1) и (x 2, y 2)

|x1x2|+(21)|y1y2|, |x1x2|>|y1y2|

(21)|x1x2|+|y1y2|, в противном случае.

Только 'euclidean' метод поддерживается на графическом процессоре.

Для получения дополнительной информации смотрите Преобразование расстояния Двухуровневого изображения.

Типы данных: char | string

Выходные аргументы

свернуть все

Расстояние, возвращенное как числовой массив одного размера с BW. Значение каждого элемента является расстоянием между тем пикселем и самым близким ненулевым пикселем в BW, как задано метрикой расстояния, method.

Типы данных: single

Индексируйте массив, возвращенный как числовой массив одного размера с BW. Каждый элемент idx содержит линейный индекс самого близкого ненулевого пикселя BW. Класс idx зависит от числа элементов во входном изображении и определяется можно следующим образом.

КлассОбласть значений
'uint32'numel(BW) <= 232 − 1
'uint64'numel(BW) >= 232

Типы данных: uint32 | uint64

Советы

  • bwdist алгоритмы FAST использования, чтобы вычислить истинное Евклидово преобразование расстояния, особенно в 2D случае. Другие методы предоставлены, в основном, по педагогическим причинам. Однако альтернативные преобразования расстояния иногда значительно быстрее для многомерных входных изображений, особенно те, которые имеют много ненулевых элементов.

  • Функциональный bwdist измененный в версии 6.4 (R2009b). Предыдущие версии Image Processing Toolbox использовали различные алгоритмы в вычислении Евклидова преобразования расстояния и связанной матрицы метки. Если вам нужны те же результаты, приведенные предыдущей реализацией, используйте функциональный bwdist_old.

Алгоритмы

  • Для Евклидовых преобразований расстояния, bwdist использует алгоритм FAST. [1]

  • Для cityblock, шахматной доски, и квазиевклидовых преобразований расстояния, bwdist использует 2D передачу, последовательный алгоритм сканирования. [2]

  • Различные меры по расстоянию достигаются при помощи различных наборов весов на сканированиях, как описано в [3].

Ссылки

[1] Маурер, Келвин, Жэньшэн Ци и Виджай Рэгэвэн, "Линейный Алгоритм Времени для Вычислительных Точных Евклидовых Преобразований расстояния Двухуровневых изображений в Произвольных Размерностях", Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту, Изданию 25, № 2, февраль 2003, стр 265-270.

[2] Розенфельд, Азрил и Джон Пфэлц, "Последовательные операции в обработке цифрового изображения", Журнал Ассоциации вычислительной техники, Издания 13, № 4, 1966, стр 471-494.

[3] Paglieroni, Дэвид, "Преобразования расстояния: Свойства и Приложения Машинного зрения", Компьютерное зрение, Графика и Обработка изображений: Графические Модели и Обработка изображений, Издание 54, № 1, январь 1992, стр 57-58.

Расширенные возможности

Представлено до R2006a