我正在尝试对我正在处理的程序的图像执行特征提取,目前我可以计算其中的区域但是我的周边有问题。
我如何实现这个以便使用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;
答案 0 :(得分:1)
您可以使用类似于Matlab的方法(描述here)
如果像素是周边的一部分 非零,它连接到 至少一个零值像素
您可以为像素定义各种邻域(例如,周围的三个网格,或仅上/下/左/右)。一旦你过滤了图像,计算出像素就可以得到一个值。
答案 1 :(得分:1)
我没有这方面的例子,并且可能需要一段时间,但你可以看一下marching squares算法。
编辑:here是Tom Gibara用Java编写的Marching Squares的实现。