有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    不幸的是,这里的BandCombine操作似乎没有达到预期的效果。返回到双层的适当策略是使用ColorConvertOp的风格,这样做可以使用MedianFilter操作,这将(不幸的是)始终导致RGB图像