编程语言
首页 > 编程语言> > Java中的图像分割库

Java中的图像分割库

作者:互联网

我正在开发一个项目,其中包括“通过计算机阅读图表”的程序
我需要进行图像分割,以便识别图像输入中的形状及其位置.我的教授说我可以使用任何公共图像分割库来做到这一点.
有没有可以达到此目的的良好图像分割库?

非常感谢

解决方法:

例如,在JAVA中,这些工具提供了许多用于图像分割的算法:

ImageJ的

http://rsbweb.nih.gov/ij/

http://fiji.sc/wiki/index.php/Fiji

Rapidminer IMMI

http://www.burgsys.com/image-mining

马文框架

http://marvinproject.sourceforge.net/

补充

即使是通用的,我认为在某种意义上可以回答这个问题.由于这个问题已经结束,我将为那些在这里寻找Java中图像分割的简单例子的人补充@ radim-burget的答案.

图像分割是一种图像处理任务,由大多数图像处理框架处理.在下面的例子中,我使用的是Marvin Framework.

分割图元素的算法:

>加载图像和二值化
>应用形态侵蚀去除线条,文本等
>应用填充分段以获取分段
>在原始图像中绘制线段.

输入:

enter image description here

侵蚀后:

enter image description here

结果:

enter image description here

源代码:

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 Overflow上讨论:

2D Shape recognition algorithm – looking for guidance

标签:image-segmentation,java,image
来源: https://codeday.me/bug/20190826/1732728.html