我想实现图像的y导数。
以下是使用Sobel运算符的openCV函数:
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函数相似)?
还是有人知道我的实现中的问题?

谢谢!

最佳答案

我认为您可能需要在这里查看Sobel运算符的功能:

http://en.wikipedia.org/wiki/Sobel_operator

关于c++ - 计算图像的y导数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27096085/

10-10 15:37