0

メディアンフィルターを2レベルの画像に適用し、2レベルの画像を出力したいと思います。JAIメディアンフィルターはRGB画像を出力しているようですが、バイレベルにダウンコンバートするのに問題があります。

現在、画像を灰色の色空間に戻すことさえできません。私のコードは次のようになります。

BufferedImage src; // contains a bi-level image

ParameterBlock pb = new ParameterBlock();
pb.addSource(src);
pb.add(MedianFilterDescriptor.MEDIAN_MASK_SQUARE);
pb.add(3);
RenderedOp result = JAI.create("MedianFilter", pb);

ParameterBlock pb2 = new ParameterBlock();
pb2.addSource(result);
pb2.add(new double[][]{{0.33, 0.34, 0.33, 0}});
RenderedOp grayResult = JAI.create("BandCombine", pb2);

BufferedImage foo = grayResult.getAsBufferedImage();

このコードはgrayResult行にハングし、返されないように見えます。最終的にはJAIで「Binarize」操作を呼び出す必要があると思います。

編集:実際には、getAsBufferedImage()を呼び出すとコードが停止しているように見えますが、2番目の操作( "BandCombine")が削除されるとほぼ瞬時に戻ります。

メディアンフィルタリングをソースカラードメインに維持するためのより良い方法はありますか?そうでない場合、どうすればバイナリにダウンコンバートできますか?

4

1 に答える 1

0

残念ながら、ここでは BandCombine 操作が期待どおりに動作しないようです。2 値に戻すための適切な戦術は、ColorConvertOp のフレーバーを使用することです。これにより、MedianFilter 操作を使用できるようになり、(これも残念ながら) 常に RGB 画像になります。

于 2010-03-24T18:51:42.710 に答える