3

私は「コンピューターで図を読む」という手順で構成されるプロジェクトに取り組んでいます。画像入力で形状とその位置を特定するために、画像のセグメンテーションを行う必要があります。私の教授は、私はそれを行うために任意の公開画像セグメンテーションライブラリを使用できると言いました。この目的に役立つ優れた画像セグメンテーションライブラリはありますか?

どうもありがとう

4

1 に答える 1

6

たとえば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の答えを補足します。

画像セグメンテーションは画像処理タスクであり、ほとんどの画像処理フレームワークによって処理されます。以下の例では、MarvinFrameworkを使用しています

ダイアグラム要素をセグメント化するアルゴリズム:

  1. 画像を読み込んで2値化します
  2. 形態学的侵食を適用して、線やテキストなどを削除します
  3. フラッドフィルセグメンテーションを適用してセグメントを取得します
  4. 元の画像にセグメントを描画します。

入力:

ここに画像の説明を入力してください

侵食後:

ここに画像の説明を入力してください

結果:

ここに画像の説明を入力してください

ソースコード:

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();
    }
}

形状認識は別のトピックであり、StackOverflowですでに説明されています。

2D形状認識アルゴリズム-ガイダンスを探す

于 2012-01-25T07:06:17.400 に答える