Библиотека сегментации изображений в Java [закрыто]
Я работаю над проектом, который состоит из процедуры " чтения диаграммы компьютером" Мне нужно будет выполнить сегментацию изображения, чтобы идентифицировать фигуры и их расположение во входном изображении. Мой профессор сказал, что я могу использовать для этого любую публичную библиотеку сегментации изображений. Существует ли хорошая библиотека сегментации изображений, которая может служить этой цели?
Большое Спасибо
1 ответ:
В JAVA, например, эти инструменты предоставляют множество алгоритмов для сегментации изображений:
ImageJ
Фиджи
Http://fiji.sc/wiki/index.php/Fiji
Rapidminer IMMI
Http://www.burgsys.com/image-mining
Марвин Фреймворк
Http://marvinproject.sourceforge.net/
Дополнение
Даже будучи вообще, я думаю, что на этот вопрос можно ответить в некотором смысле. Поскольку этот вопрос закрыт, я дополню ответ @radim-burget для тех людей, которые приходят сюда в поисках простого примера сегментации изображений на Java.
Сегментация изображений является задачей обработки изображений и обрабатывается большинством фреймворков обработки изображений. В приведенном ниже примере я используюMarvin Framework .Алгоритм сегментации элементов диаграммы:
- загрузить изображение и binarize
Применить морфологическую эрозию для удаления строк, текстов и т. д.- примените сегментацию заливки, чтобы получить сегменты
Нарисуйте сегменты на исходном изображении.Входные данные:
После Эрозии:
Результат:
Исходный Код:
import static marvin.MarvinPluginCollection.*; public class SegmentDiagram { public SegmentDiagram(){ MarvinImage originalImage = MarvinImageIO.loadImage("./res/diagram.png"); MarvinImage image = originalImage.clone(); MarvinImage binImage = MarvinColorModelConverter.rgbToBinary(image, 250); morphologicalErosion(binImage.clone(), binImage, MarvinMath.getTrueMatrix(5, 5)); image = MarvinColorModelConverter.binaryToRgb(binImage); MarvinSegment[] segments = floodfillSegmentation(image); for(int i=1; i<segments.length; i++){ MarvinSegment seg = segments[i]; originalImage.drawRect(seg.x1, seg.y1, seg.width, seg.height, Color.red); originalImage.drawRect(seg.x1+1, seg.y1+1, seg.width, seg.height, Color.red); } MarvinImageIO.saveImage(originalImage, "./res/diagram_segmented.png"); } public static void main(String[] args) { new SegmentDiagram(); } }
Распознавание формы-это еще одна тема, уже обсуждавшаяся в Stack Переполнение: