メディアンフィルターを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")が削除されるとほぼ瞬時に戻ります。
メディアンフィルタリングをソースカラードメインに維持するためのより良い方法はありますか?そうでない場合、どうすればバイナリにダウンコンバートできますか?