JAI二层图像的java中值滤波
我想对双层图像应用中值滤波器并输出双层图像。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();
此代码挂起在灰色结果行上,似乎不会返回。我假设我最终需要调用JAI中的“二进制化”操作
编辑:实际上,调用getAsBufferedImage()后,代码似乎会暂停,但在删除第二个操作(“BandCombine”)时,代码几乎会立即返回
有没有更好的方法在源颜色域中保持中值滤波?如果不是,如何将其下变频回二进制
# 1 楼答案
不幸的是,这里的BandCombine操作似乎没有达到预期的效果。返回到双层的适当策略是使用ColorConvertOp的风格,这样做可以使用MedianFilter操作,这将(不幸的是)始终导致RGB图像