May 19, 2002: サンプルプログラム修正
January 2, 2002: 作成
フィルタ処理によって2値化された画像から全ての閉じた領域を切り出すことで、 元の画像から部分画像群を出力する JavaBeans コンポーネントです。 [FilterBean] と組み合わせて使用することを推奨します。
ExtractorBean を用いる為の準備は以下の通りです。
set CLASSPATH=.:%CLASSPATH%:/(置いた場所)/extractorbean.jar
または java -cp /(置いた場所)/extractorbean.jar (クラス名)
new net.washizaki.extract.ExtractorBean(); として
オブジェクトを生成します。
または、import net.washizaki.extract.ExtractorBean; としておく方が
記述量が減って楽です :-)
まず、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 で併用) を上記のコードで部分画像抽出処理を行った際の 例です。
(検討中)
プロパティ:
| プロパティ名 | 型 | 初期値 | 概要 |
| filteredImage | java.awt.Image | null | 処理対象の2値化された画像オブジェクト |
| coloredImage | java.awt.Image | null | 処理対象の元の画像オブジェクト |
| extractedImages | java.awt.Image[] | null | 抽出された部分画像オブジェクト群 |
メソッド:
| メソッド名 | 構造 | 概要 |
| processExtract | void processExtract() | 部分画像抽出処理の実行 |
イベント: (無し)