2

こんにちは、私はJavaの画像処理技術の幼児です。画像処理で1つのプロジェクトを開発することに決めたので、従うアルゴリズムと、開発が簡単なプロジェクトが必要です。私...そして、JavaまたはMatlabの画像処理に最適なテクノロジーはどれですか? 教えて...

4

5 に答える 5

2

JAVA での画像セグメンテーションには、オープンソースの IMMI ツール (http://spl.utko.feec.vutbr.cz/en/) の使用も検討できます。Matlab と比較すると、(私の意見では) より使いやすく、画像マイニングも簡単に実行できます。

于 2011-08-03T11:17:07.870 に答える
1

最適な画像処理ツールは、取り組んでいるプロジェクトの種類によって異なると思います。

生産性、迅速な検証、およびレポートの作成が必要な研究プロジェクトに取り組んでいる場合は、Matlabおよび同様のツールが最適なオプションです。一方、ソフトウェア製品を開発している場合は、Java、C++、C、Objective-C などがより適しています。Matlab ソリューションは、本番環境で提供および保守するのは容易ではありません。

Java で画像セグメンテーションを行う方法を尋ねられたので、Java とMarvin Image Processing Frameworkを使用した例を提供します。@Asif Sharif が示唆するように、FloodFill セグメンテーションは優れた戦略であり、私はそれを使用しました!

入力画像: ここに画像の説明を入力

出力画像: ここに画像の説明を入力

使い方:

  1. 入力画像を読み込みます。
  2. 緑のピクセルを白のピクセルに変更します。
  3. 背景から前景を分離するために強度のしきい値を適用します。
  4. モルフォロジー クロージングを適用して、同じオブジェクトの分離された部分をグループ化する
  5. FloodFill セグメンテーションを使用してセグメントを取得します。
  6. 元の画像にセグメント座標を描画します。

ソース:

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();  }
}
于 2016-07-05T13:59:22.293 に答える
1

Java Advanced Imaging (JAI)ライブラリを使用して、Java で画像処理を行うことができます。Java と MATLAB のどちらが適しているかは、自分で判断する必要があります。

于 2010-11-02T13:15:24.613 に答える
0

MATLAB は画像処理に優れています。最善の方法は、特別な画像処理ツール (またはライブラリ) を見つけることです。

于 2010-11-01T07:38:00.513 に答える