我想将中值滤波器应用于双层图像并输出双层图像。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”)被删除时几乎立即返回。
是否有更好的方法将中值过滤保持在源颜色域中?如果没有,我如何下转换回二进制?