こんにちは、私はJavaの画像処理技術の幼児です。画像処理で1つのプロジェクトを開発することに決めたので、従うアルゴリズムと、開発が簡単なプロジェクトが必要です。私...そして、JavaまたはMatlabの画像処理に最適なテクノロジーはどれですか? 教えて...
5 に答える
JAVA での画像セグメンテーションには、オープンソースの IMMI ツール (http://spl.utko.feec.vutbr.cz/en/) の使用も検討できます。Matlab と比較すると、(私の意見では) より使いやすく、画像マイニングも簡単に実行できます。
最適な画像処理ツールは、取り組んでいるプロジェクトの種類によって異なると思います。
生産性、迅速な検証、およびレポートの作成が必要な研究プロジェクトに取り組んでいる場合は、Matlabおよび同様のツールが最適なオプションです。一方、ソフトウェア製品を開発している場合は、Java、C++、C、Objective-C などがより適しています。Matlab ソリューションは、本番環境で提供および保守するのは容易ではありません。
Java で画像セグメンテーションを行う方法を尋ねられたので、Java とMarvin Image Processing Frameworkを使用した例を提供します。@Asif Sharif が示唆するように、FloodFill セグメンテーションは優れた戦略であり、私はそれを使用しました!
使い方:
- 入力画像を読み込みます。
 - 緑のピクセルを白のピクセルに変更します。
 - 背景から前景を分離するために強度のしきい値を適用します。
 - モルフォロジー クロージングを適用して、同じオブジェクトの分離された部分をグループ化する
 - FloodFill セグメンテーションを使用してセグメントを取得します。
 - 元の画像にセグメント座標を描画します。
 
ソース:
import static marvin.MarvinPluginCollection.*;
public class SimpleSegmentation {
    public SimpleSegmentation(){
        // 1. Load image
        MarvinImage original = MarvinImageIO.loadImage("./res/robocup.jpg");
        MarvinImage image = original.clone();
        // 2. Change green pixels to white
        filterGreen(image);
        // 3. Use threshold to separate foreground and background.
        MarvinImage bin = MarvinColorModelConverter.rgbToBinary(image, 127);
        // 4. Morphological closing to group separated parts of the same object
        morphologicalClosing(bin.clone(), bin, MarvinMath.getTrueMatrix(30, 30));
        // 5. Use Floodfill segmention to get image segments
        image = MarvinColorModelConverter.binaryToRgb(bin);
        MarvinSegment[] segments = floodfillSegmentation(image);
        // 6. Show the segments in the original image
        for(int i=1; i<segments.length; i++){
            MarvinSegment seg = segments[i];
            original.drawRect(seg.x1, seg.y1, seg.width, seg.height, Color.yellow);
            original.drawRect(seg.x1+1, seg.y1+1, seg.width, seg.height, Color.yellow);
        }
        MarvinImageIO.saveImage(original, "./res/robocup_segmented.png");
    }
    private void filterGreen(MarvinImage image){
        int r,g,b;
        for(int y=0; y<image.getHeight(); y++){
            for(int x=0; x<image.getWidth(); x++){
                r = image.getIntComponent0(x, y);
                g = image.getIntComponent1(x, y);
                b = image.getIntComponent2(x, y);
                if(g > r*1.5 && g > b*1.5){
                    image.setIntColor(x, y, 255,255,255);
        }}}
    }
    public static void main(String[] args) { new SimpleSegmentation();  }
}
    Java Advanced Imaging (JAI)ライブラリを使用して、Java で画像処理を行うことができます。Java と MATLAB のどちらが適しているかは、自分で判断する必要があります。
MATLAB は画像処理に優れています。最善の方法は、特別な画像処理ツール (またはライブラリ) を見つけることです。

