如何计算java中二进制图像的周长?

时间:2011-04-01 13:24:01

标签: java image-processing

我正在尝试对我正在处理的程序的图像执行特征提取,目前我可以计算其中的区域但是我的周边有问题。

我如何实现这个以便使用java返回周界的数值?

谢谢,

汤姆

        Raster raster = source.getRaster();
    int perimeter = 0;
    for(int y = 0; y<source.getHeight(); y++)
        for(int x = 0; x< source.getWidth(); x++)
        {
            if(raster.getSample(x, y, 0) == 1 && ((raster.getSample(x+1, y, 0)==0) || (raster.getSample(x-1, y, 0)==0) || (raster.getSample(x, y+1, 0)==0) || (raster.getSample(x, y-1, 0)==0)))
                perimeter ++;
        }
    return perimeter;

2 个答案:

答案 0 :(得分:1)

您可以使用类似于Matlab的方法(描述here

  

如果像素是周边的一部分   非零,它连接到   至少一个零值像素

您可以为像素定义各种邻域(例如,周围的三个网格,或仅上/下/左/右)。一旦你过滤了图像,计算出像素就可以得到一个值。

答案 1 :(得分:1)

我没有这方面的例子,并且可能需要一段时间,但你可以看一下marching squares算法。

编辑:here是Tom Gibara用Java编写的Marching Squares的实现。