如何使用im4java二值化图像?

时间:2014-09-04 11:54:50

标签: java image-processing colors imagemagick im4java

我想把我的彩色图像变成B& W. 基本上,我想调用这个ImageMagick命令:

convert input.png -threshold 80% output.png

但使用im4java库。我知道IMOperation.threshold()方法,但我不知道如何使用该方法编写上述命令的等效命令。该方法重载:

threshold() 

threshold(java.lang.Integer red) 

threshold(java.lang.Integer red, java.lang.Integer green) 

threshold(java.lang.Integer red, java.lang.Integer green, java.lang.Integer blue)

threshold(java.lang.Integer red, java.lang.Integer green, java.lang.Integer blue,
  java.lang.Integer opacity) 

threshold(java.lang.Integer red, java.lang.Integer green, java.lang.Integer blue,
  java.lang.Integer opacity, java.lang.Boolean percent) 

我尝试使用不同的值作为参数调用方法的不同重载,但是它们都没有产生好的结果(我通常得到全白图像或全黑图像)。

那么im4java相当于"阈值80%"?

2 个答案:

答案 0 :(得分:0)

就在你正在考虑其他Java框架的情况下。使用Marvin图像处理框架:

MarvinImage image = MarvinImageIO.loadImage('image.jpg');
blackAndWhite(image, 30);

有关不同BW级别的输出示例:

enter image description here

答案 1 :(得分:0)

显然,我需要使用blackThreshold

op.blackThreshold(80.0, true);

我不确定它是否等同于我指定的ImageMagick命令,输出看起来有点不同,但出于所有实际目的,它给了我所需要的东西。