Как создать выпуклую оболочку из всех бинарных пятен в ImageJ

У меня есть двоичное изображение разделенных пятен.

Исходный бинарный образ спорта

Есть ли плагин ImageJ, который может построить выпуклую оболочку из всех пятен?

Или вы могли бы порекомендовать другую программу, а не ImageJ, которая может сделать это?

3 ответа

При условии, что у вас есть 8-битное (двоичное) изображение в ImageJ, вы можете запустить следующий скрипт Groovy из редактора скриптов, чтобы получить выпуклую оболочку в качестве текущего выделения:

#@ ImagePlus imp

import ij.gui.PolygonRoi
import ij.gui.Roi
import ij.plugin.filter.ThresholdToSelection
import ij.process.ImageProcessor

imp.getProcessor().setThreshold(128,255,ImageProcessor.NO_LUT_UPDATE)
roi = ThresholdToSelection.run(imp)
proi = new PolygonRoi(roi.getContainedFloatPoints(), Roi.POLYGON)
chRoi = new PolygonRoi(proi.getConvexHull(), Roi.POLYGON)
imp.setRoi(chRoi)

Обратите внимание, что в целом этот тип вопроса может рассматриваться здесь как не по теме, и его лучше задать на форуме ImageJ, где вы получите совет от экспертов по обработке изображений.

С OpenCV вы можете использовать findContours(), а затем ConvexHull()

Вы можете увидеть полный пример здесь: https://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/hull/hull.html

OpenCV - это библиотека, а это значит, что вы должны кодировать программу самостоятельно. У него есть привязки для Java, Python и многих других языков. Вы можете легко найти тот же пример на других языках:

Выпуклая оболочка на Java Android Opencv 2.3

Edit-Selection-make selection, затем ConvexHull

Другие вопросы по тегам