我想实现图像的y导数。 鉴于以下openCV函数,谁使用Sobel运算符:
Sobel(gray_input_picture, y_derivative_picture, CV_32FC1 , 0, 1, 3, BORDER_DEFAULT);
有一个例子:
现在我需要自己实现它而不使用这个sobel函数。
我在这里找到了一些帮助:Gradient direction computation
我现在实施的是:
for(int x=0; x<gray_input_picture.rows; x++)
{
for(int y=0; y<gray_input_picture.cols; y++)
{
if(x == gray_input_picture.rows-1 || x == 0)
{
y_derivative.at<Vec3b>(x,y) = gray_input_picture.at<Vec3b>(x,y);
}
else
{
Vec3b color;
color[0] = gray_input_picture.at<Vec3b>(x+1,y)[0] - gray_input_picture.at<Vec3b>(x-1,y)[0];
color[1] = gray_input_picture.at<Vec3b>(x+1,y)[1] - gray_input_picture.at<Vec3b>(x-1,y)[1];
color[2] = gray_input_picture.at<Vec3b>(x+1,y)[2] - gray_input_picture.at<Vec3b>(x-1,y)[2];
y_derivative_picture.at<Vec3b>(x,y) = color;
}
}
}
bitwise_not ( y_derivative_picture, y_derivative_picture2 );
x和y开关来自openCV。这就是为什么它有点不同。我不明白的是,我得到了一张我需要转换的图片(黑色到白色,白色到黑色)。
结果也有点不同。它包含蓝色区域:
任何人都知道如何更好地实现y导数(它看起来类似于Sobel函数)? 或者有人知道我的实施中的问题吗?
谢谢!