Imagick: возвращает положение и размер круглых объектов на изображении - PullRequest
1 голос
/ 04 ноября 2019

У меня есть это изображение: Arch

С помощью этой команды imagick cli:

magick model.png -canny 0x0+1%+10% -negate -blur 3x.7 -solarize 50% -level 50%,0 model_canny.png

оно преобразовано в следующее: converted

возможно ли получить положение / размер зубов в арке? это не должно быть идеально. Даже если он обнаружит несколько зубов в арке, было бы здорово понять, как это работает. До сих пор я пытался использовать параметр connected-components, и он дает мне тысячи результатов, что явно неверно. Вот что я сделал до сих пор:

magick model_canny.png -fuzz 5% -define connected-components:verbose=true -connected-components 4 objects.png

Также возможно ли удалить случайные черные линии внутри зубов? Любая помощь будет оценена ..

1 Ответ

0 голосов
/ 04 ноября 2019

Обычный способ отделить объекты - использовать морфологическую эрозию, используя команду примерно так:

magick fangs.png -alpha extract -trim -morphology erode disk:5 result.png

Вот анимация эффекта дисков разных размеров:

enter image description here

Пройдя немного дальше, вы можете разрушить цикл, а затем выполнить «Анализ связанных компонентов» , подсчитать большие двоичные объекты и сохранитьувеличивая размер диска, пока вы не получите разумное количество зубов.

Или вам может потребоваться немного усерднее работать и попытаться подогнать параболу (показана синим цветом) к пикселям, которые составляют зубы, если этоэто лучшая фигура - я не стоматолог! Затем с помощью параболы вы можете найти нормали к этой параболе (показаны красным цветом) и взять нормаль, которая пересекает наименьшее количество зуба, в качестве границы между зубами. Грубая диаграмма:

enter image description here

Или, возможно, наложите изображение, обнаруженное Кэнни, на встроенную параболу и посмотрите, где ваши края пересекаются с ним.

...