私は「コンピューターで図を読む」という手順で構成されるプロジェクトに取り組んでいます。画像入力で形状とその位置を特定するために、画像のセグメンテーションを行う必要があります。私の教授は、私はそれを行うために任意の公開画像セグメンテーションライブラリを使用できると言いました。この目的に役立つ優れた画像セグメンテーションライブラリはありますか?
どうもありがとう
私は「コンピューターで図を読む」という手順で構成されるプロジェクトに取り組んでいます。画像入力で形状とその位置を特定するために、画像のセグメンテーションを行う必要があります。私の教授は、私はそれを行うために任意の公開画像セグメンテーションライブラリを使用できると言いました。この目的に役立つ優れた画像セグメンテーションライブラリはありますか?
どうもありがとう
たとえばJAVAでは、これらのツールは画像セグメンテーションのための多くのアルゴリズムを提供します。
ImageJ
フィジー
http://fiji.sc/wiki/index.php/Fiji
Rapidminer IMMI
http://www.burgsys.com/image-mining
マーヴィンフレームワーク
http://marvinproject.sourceforge.net/
補体
一般的でも、ある意味でこの質問に答えることは可能だと思います。この質問は締め切られたので、Javaでの画像セグメンテーションの簡単な例を探してここに来る人々のために@radim-burgetの答えを補足します。
画像セグメンテーションは画像処理タスクであり、ほとんどの画像処理フレームワークによって処理されます。以下の例では、MarvinFrameworkを使用しています。
ダイアグラム要素をセグメント化するアルゴリズム:
入力:
侵食後:
結果:
ソースコード:
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ですでに説明されています。