bwdist

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

Описание

пример

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

[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.

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

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)

Figure contains 4 axes. Axes 1 with title Euclidean contains 2 objects of type image, contour. Axes 2 with title City block contains 2 objects of type image, contour. Axes 3 with title Chessboard contains 2 objects of type image, contour. Axes 4 with title Quasi-Euclidean contains 2 objects of type image, contour.

В этом примере показано, как сравнить изоповерхности для преобразований расстояния 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')

Figure contains 4 axes. Axes 1 with title Euclidean contains an object of type patch. Axes 2 with title City block contains an object of type patch. Axes 3 with title Chessboard contains an object of type patch. Axes 4 with title Quasi-Euclidean contains an object of type patch.

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

свернуть все

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

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

Метрика расстояния, заданная в качестве одного из следующих значений.

Метод

Описание

'chessboard'

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

max (│<reservedrangesplaceholder3>1 - x 2 м, а y 1 - y 2 м).

'cityblock'

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

<reservedrangesplaceholder3> 1 – <reservedrangesplaceholder2> 2  +  <reservedrangesplaceholder1> 1 – <reservedrangesplaceholder0> 2 

'euclidean'

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

(x1x2)2+(y1y2)2.

'quasi-euclidean'

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

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

(21)|x1x2|+|y1y2|, иначе.

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

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

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

свернуть все

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

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

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

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

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

Совет

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

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

Алгоритмы

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

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

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

Ссылки

[1] Maurer, Calvin, Rensheng Qi, and Vijay Raghavan, «A Linear Time Algorithm for Вычисление точных евклидовых преобразований расстояния двоичных изображений в произвольных размерностях», Транзакции IEEE по анализу шаблонов и машинной разведке,

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

[3] Paglieroni, David, «Преобразования расстояния: Свойства and Machine Vision Applications», Компьютерное зрение, Graphics, and Изображения Processing: Graphical Моделей and Изображения Processing, Vol. 54, No1, January 1992, pp. 57-58.

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

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