0

我想将中值滤波器应用于双层图像并输出双层图像。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”)被删除时几乎立即返回。

是否有更好的方法将中值过滤保持在源颜色域中?如果没有,我如何下转换回二进制?

4

1 回答 1

0

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

于 2010-03-24T18:51:42.710 回答