我们如何计算 rgb 的梯度并将其应用于 sobel

Posted

技术标签:

【中文标题】我们如何计算 rgb 的梯度并将其应用于 sobel【英文标题】:how can we calculate gradients for rgb and apply it for sobel 【发布时间】:2021-11-28 06:37:47 【问题描述】:

我正在尝试编写一个 sobel 过滤器。我为此做了一个灰色过滤器并开始编写 sobel 过滤器但我不明白一些东西。我发现计算 gx 和 gy 但没有人告诉我如何应用它。我该怎么办将它们用于 r,g,b?我很困惑。当我使用 gradinet(gradient = Math.Abs​​(gx) + Math.Abs​​(gy);) 时,我应该将它应用于每个 r,g 的像素, b?我的意思是如果我应该这样做,我可以使用哪种方式?我找不到任何代码。顺便说一下,当我们应用这个方法时,矩阵越来越小。我对在代码上应用这个感到很困惑。

【问题讨论】:

【参考方案1】:

您不能将 sobel 滤镜应用于 rgb 图像。通常你将它应用到每个颜色通道,或者你先将 rgb 图像转换为灰度。

卷积的结果图像总是更小。要么忍受它,要么在卷积之前或之后放大你的图像。有无数种方法可以实现这一点。

【讨论】:

感谢您的回答。但我看到一些代码他们正在使用 r,g,b(实际上他们使用 0.59f ,0.3f 等等,我不明白为什么要使用它们。)在他们写了一个灰色过滤器之后。我不明白有什么? 如果你只告诉我 2 个数字,我怎么知道你在说什么?也许他们在卷积期间计算 r,g,b 的加权和,这与计算灰度图像的卷积相同。但如果你说谜语,我只能猜。对不起 我很抱歉你是对的。你一直很有帮助。至少我知道当我们尝试写我们只使用一个渠道时,sobel 不能申请 r,g,b (通过灰色过滤器)。感谢您的帮助。

以上是关于我们如何计算 rgb 的梯度并将其应用于 sobel的主要内容,如果未能解决你的问题,请参考以下文章

如何将平面阴影应用于 RGB 颜色?

如何使用 OpenCV 将梯度/幅度应用于图像?

如何计算RGB数字图像处理 亮度的亮度值

线性回归的梯度下降

Theano中的导数

【神经网络原理】如何利用梯度下降法更新权重与偏置