中位数使用JAI过滤双层图像

时间:2009-11-09 22:29:54

标签: java jai

我想将中值滤镜应用于双层图像并输出双层图像。 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(),代码似乎停止了,但是当第二个操作(“BandCombine”)被删除时几乎立即返回。

有没有更好的方法将中位数过滤保留在源颜色域中?如果没有,我如何下转换回二进制文件?

1 个答案:

答案 0 :(得分:0)

不幸的是,似乎BandCombine操作在这里的行为并不像预期的那样。回到双层次的适当策略是使用ColorConvertOp的风格 - 这样做可以使用MedianFilter操作,这将(​​再次,不幸)总是导致RGB图像。