Пример двумерного водораздела на mathworks.com

Пример двумерного водораздела на Mathworks.com можно резюмировать ниже. :

bw = imread('someImage.tif');

D = -bwdist(~bw);

D(~bw) = -Inf;

L = watershed(D);

Я не совсем понимаю, зачем здесь нужен D(~bw) = -Inf;, который заставляет пиксели, не принадлежащие объектам, быть в -Inf (изначально нулевом).

Я попытался запустить программу без этого оператора, и результат оказался запутанным. Почему необходимо принудительно задавать эти пиксели в -Inf, чтобы водораздел получил правильный результат?

Как указал Фредерик, я использовал surf для построения поверхности здесь перед запуском D(~bw) = -Inf;, результат такой:

Имгур

После запуска результат такой: Imgur


person shapeare    schedule 16.12.2013    source источник


Ответы (1)


-Inf увеличить контраст между подключенным компонентом и фоном. В противном случае водораздел, скорее всего, объединит весь фон с одним связанным компонентом в одну область. На самом деле настройка -Inf полностью уберет фон из интересующей области. Проверьте влияние -Inf на сегментацию с помощью образца изображения. Если вы установите D(~bw) = 0;, вы получите:

введите здесь описание изображения

person lennon310    schedule 17.12.2013