我正在研究一种 Java 方法来进行一些简单的边缘检测。我想获取两种颜色强度的差异,一种在一个像素上,另一种在其正下方的像素上。无论我为该方法设置什么阈值,我正在使用的图片都是黑色的。我不确定我当前的方法是否只是没有计算我需要的东西,但我不知道我应该追踪什么来找到问题。
到目前为止,这是我的方法:
public void edgeDetection(double threshold)
{
Color white = new Color(1,1,1);
Color black = new Color(0,0,0);
Pixel topPixel = null;
Pixel lowerPixel = null;
double topIntensity;
double lowerIntensity;
for(int y = 0; y < this.getHeight()-1; y++){
for(int x = 0; x < this.getWidth(); x++){
topPixel = this.getPixel(x,y);
lowerPixel = this.getPixel(x,y+1);
topIntensity = (topPixel.getRed() + topPixel.getGreen() + topPixel.getBlue()) / 3;
lowerIntensity = (lowerPixel.getRed() + lowerPixel.getGreen() + lowerPixel.getBlue()) / 3;
if(Math.abs(topIntensity - lowerIntensity) < threshold)
topPixel.setColor(white);
else
topPixel.setColor(black);
}
}
}