double Image::grad_x(int x,int y){
if(x==width-1 || x==0) return bright[x][y];
return bright[x+1][y]-bright[x-1][y];
}
double Image::grad_y(int x,int y){
if(y==height-1 || y==0) return bright[x][y];
return bright[x][y+1]-bright[x][y-1];
}
编辑:边界检查已修复
我正在使用简单导数进行工作,而不使用Sobel算子,因为对于我的需求来说简单的导数已经足够了。
问题是,我是否正确地计算了这个梯度,并且我应该如何处理边缘像素(现在函数返回像素本身的值,我不确定它是否精确)?另外,是否有任何计算图像梯度的实用程序? 我想确保我的程序表现良好。