gpt4 book ai didi

c# - OpenCV:Sobel 滤波器不是旋转不变的

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:14 40 4
gpt4 key购买 nike

我正在使用 sobel 运算符通过 EmguCV 3.0(OpenCV 的 .NET 包装器)检测灰度图像中的边缘。

我使用的代码是

Image<Gray, byte> gray = new Image<Gray, byte>(@"C:\gray.bmp");
Image<Gray, float> sobel = gray.Sobel(0, 1, 3).Add(gray.Sobel(1, 0, 3)).AbsDiff(new Gray(0.0));

这是预处理后的图像(灰色)

这就是我得到的结果 (sobel)

如您所见,右上角和左下角的边缘非常薄弱。我首先想到,它可能与原始图像有关,所以我将其旋转 180 度并再次运行 sobel-filter。结果在右上角和左下角仍然有非常弱的边缘(不幸的是,我不允许在这里发布超过两个链接,所以我不能给你看)。

所以我的问题是:这是一个错误,还是我错误地使用了 sobel 过滤器?在二维中运行时,它不应该是旋转不变的吗?我怎样才能修复它,使这两个边缘与其他边缘一样坚固?

最佳答案

不好意思,我已经找到解决办法了:我现在使用的代码是:

Image<Gray, float> sobel = 
gray.Sobel(1, 0, 3).AbsDiff(new Gray(0.0))
.Add(gray.Sobel(0, 1, 3).AbsDiff(new Gray(0.0)));

这近似于 |Gxy| 的范数= |Gx| + |Gy|,结果是一个边缘清晰的好图像:http://i.stack.imgur.com/COJSG.png

关于c# - OpenCV:Sobel 滤波器不是旋转不变的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008894/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com