我们如何计算 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的主要内容,如果未能解决你的问题,请参考以下文章