2009-11-09 63 views
0

我想將中值過濾器應用於雙層圖像並輸出雙層圖像。 JAI中值濾波器似乎輸出RGB圖像,我無法將其下變換回雙層。中值使用JAI過濾雙層圖像

目前,我甚至不能像回到灰色空間,我的代碼看起來是這樣的:

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

不幸的是,似乎BandCombine操作在這裏不像預期的那樣工作。回到Bilevel的適當策略是使用ColorConvertOp的風格 - 這樣做可以使用MedianFilter操作,這將會(不幸的是)總是會導致RGB圖像。