Как работают точки ветвления bwmorph?

Я работаю над фрагментом кода в MATLAB, используя Image Processing Toolbox, где я использовал Skel=bwmorph(BM, 'skel'), чтобы получить скелет реки.Я хочу использовать BP=bwmorph(Skel,'branchpoints'), чтобы получить точки, где существуют слияния и притоки. Я получаю много ложных срабатываний в BP всякий раз, когда скелет выглядит как

oQo
Q
o

. Он также помечает пиксели Q как точки ветвления, наряду с фактическими ожидаемыми точками ветвления. Таких ложных срабатываний очень много.

Я заметил, что истинная точка ветвления возникает как изолированный пиксель в BP, в то время как ложные точки ветвления всегда формируются парами.

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

У меня такое ощущение, что он смотрит на 8-связность вокруг пикселя, но я думаю, что это еще не все.

Для ясности я выделил обрезанное изображение вывода. Положительные стороны, которые он дает, показаны красным. Как видно, только один из этих пикселей на самом деле является точкой ветвления. Я хочу знать, как работает алгоритм, чтобы я мог логически объяснить, почему ложные срабатывания появляются парами (если они действительно есть).

Изображение

5
задан shashwat 22 May 2012 в 12:31
поделиться