Marvin图像处理框架 - 侵蚀插件问题

时间:2014-05-08 20:04:48

标签: java image-processing marvin-framework

我在Marvin图像处理框架中遇到了Erosion插件的问题。 我想做侵蚀,但不幸的是,在那之后我没有输出图像。 这是我的代码:

tempPlugin  = new Erosion();
boolean[][] m = new boolean[][] {
{true,true,true},
{true,true,true},
{true,true,true}
};
tempPlugin.setAttributes("matrix", m);
resultImage = MarvinColorModelConverter.rgbToBinary(resultImage, 127);
tempPlugin.process(resultImage, resultImage);
resultImage = MarvinColorModelConverter.binaryToRgb(resultImage);
resultImage.update();
imagePanelNew.setImage(resultImage);

我正在使用Java JDK 1.7和Marvin Framework 1.5.0 当然,我试过用.jar文件做同样的事情,没有改变。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

您的代码中存在一些问题。你没有正确使用马文。

<强> 1。加载插件

您必须使用 MarvinPluginLoader 创建一个Erosion插件:

tempPlugin  = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.morphological.erosion");

因此,Erosion插件和依赖项(因为插件可能使用其他插件)已正确加载。

<强> 2。在侵蚀的情况下,您不能使用相同的图像对象作为输入和输出图像

您必须使用两个引用,例如克隆:

tempPlugin.process(resultImage.clone(), resultImage);



示例:

下面是一个源代码,它实现了Erosion Plug-in Page

中提供的相同结果
public class SimpleExample {

private MarvinImagePlugin tempPlugin;

public SimpleExample(){

    // 1. Load and set up plug-in.
    tempPlugin  = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.morphological.erosion");

    boolean[][] m = new boolean[][] {
    {true,true,true},
    {true,true,true},
    {true,true,true}
    };

    tempPlugin.setAttributes("matrix", m);

    // 2. Load image
    MarvinImage image = MarvinImageIO.loadImage("./res/erosion_in.png");
    MarvinImage resultImage = MarvinColorModelConverter.rgbToBinary(image, 127);

    // 3. Process and save image
    tempPlugin.process(resultImage.clone(), resultImage);
    resultImage = MarvinColorModelConverter.binaryToRgb(resultImage);
    resultImage.update();
    MarvinImageIO.saveImage(resultImage, "./res/erosion_out.png");
}

public static void main(String[] args) {
    new SimpleExample();
}

}