我想将中值滤镜应用于双层图像并输出双层图像。 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”)被删除时几乎立即返回。
有没有更好的方法将中位数过滤保留在源颜色域中?如果没有,我如何下转换回二进制文件?
答案 0 :(得分:0)
不幸的是,似乎BandCombine操作在这里的行为并不像预期的那样。回到双层次的适当策略是使用ColorConvertOp的风格 - 这样做可以使用MedianFilter操作,这将(再次,不幸)总是导致RGB图像。