ExtractorBean

鷲崎 弘宜 washi@fuka.info.waseda.ac.jp
http://www.washizaki.net

May 19, 2002: サンプルプログラム修正
January 2, 2002: 作成

戻る(FukaBeans)

配布

ExtractorBean とは?

フィルタ処理によって2値化された画像から全ての閉じた領域を切り出すことで、 元の画像から部分画像群を出力する JavaBeans コンポーネントです。 [FilterBean] と組み合わせて使用することを推奨します。

ExtractorBean を用いる為の準備は以下の通りです。

  1. クラスパスを通す

    set CLASSPATH=.:%CLASSPATH%:/(置いた場所)/extractorbean.jar
    または java -cp /(置いた場所)/extractorbean.jar (クラス名)

  2. プログラム中で宣言する。

    new net.washizaki.extract.ExtractorBean(); として オブジェクトを生成します。
    または、import net.washizaki.extract.ExtractorBean; としておく方が 記述量が減って楽です :-)

利用例

Java プログラム中で用いる

まず、coloredImage プロパティに部分画像を得たい元の Image オブジェクトを設定して、 次に、フィルタ処理によって 2 値化された画像の Image オブジェクトを filteredImage プロパティに設定します。 そして、 processExtract メソッドを呼ぶことで 部分画像抽出処理を実行します。 処理の実行後は、 extractedImages プロパティから部分画像の Image オブジェクト群 (Image[])を得ることができます。

以下は、 [FilterBean] と組み合わせて用いる使用例です。

import net.washizaki.extract.ExtractorBean;
import net.washizaki.filter.FilterBean;
import java.awt.Image;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
import javax.swing.ImageIcon;

public class Test {
  public static void main(String[] args) {
    String filename = args[0];
    double threshold = Double.parseDouble(args[1]);
    FilterBean filter = new FilterBean();
    ExtractorBean extractor = new ExtractorBean();

    filter.setFilename(filename);
    filter.setThreshold(threshold);
    filter.processLaplacianRgbFilter();
    //filter.processSobelRgbFilter();

    extractor.setFilteredImage(filter.getCreatedImage());
    extractor.setColoredImage(filter.getOriginalImage());
    extractor.processExtract();

    Image[] extractedImages = null;
    extractedImages = extractor.getExtractedImages();
    JFrame jframe = new JFrame("Test extraction.");
    jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jframe.getContentPane().setLayout(new BorderLayout());
    JTabbedPane jtabbedPane = new JTabbedPane();
    for(int i=0;i<extractedImages.length;i++) {
      jtabbedPane.addTab("" + i,
        new JLabel(new ImageIcon(extractedImages[i])));
    }
    jframe.getContentPane().add(jtabbedPane,BorderLayout.CENTER);
    jframe.setSize(1000,1000);
    jframe.setVisible(true);
    
  }
}

以下は、 junit.gif (Laplacian-8 Filter を閾値 50 で併用)と face.jpg (Laplacian-8 Filter を閾値 3 で併用) を上記のコードで部分画像抽出処理を行った際の 例です。

BeanBox 等の JavaBeans 対応開発ツール上で用いる

(検討中)

コンポーネント仕様

プロパティ:

プロパティ名初期値概要
filteredImagejava.awt.Imagenull 処理対象の2値化された画像オブジェクト
coloredImagejava.awt.Imagenull 処理対象の元の画像オブジェクト
extractedImagesjava.awt.Image[]null 抽出された部分画像オブジェクト群

メソッド:

メソッド名構造 概要
processExtractvoid processExtract() 部分画像抽出処理の実行

イベント: (無し)


戻る(FukaBeans)