Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenCV中使用高斯模糊函数的减高斯模糊函数做什么?_Opencv_Image Processing - Fatal编程技术网

在OpenCV中使用高斯模糊函数的减高斯模糊函数做什么?

在OpenCV中使用高斯模糊函数的减高斯模糊函数做什么?,opencv,image-processing,Opencv,Image Processing,我发现Kaggle内核具有以下功能 def subtract_gaussian_blur(img): gb_img = cv2.GaussianBlur(img, (0, 0), 5) return cv2.addWeighted(img, 4, gb_img, -4, 128) 转换此RGB图像的 进入下图 我可以看到它的效果是,它在一定程度上使图像锐化,并将其转换为更灰度的图像(实际上不是灰度,因为图像仍然是RGB),但我不确定,即使在阅读GaussianBlur和ad

我发现Kaggle内核具有以下功能

def subtract_gaussian_blur(img):
    gb_img = cv2.GaussianBlur(img, (0, 0), 5)
    return cv2.addWeighted(img, 4, gb_img, -4, 128)
转换此RGB图像的

进入下图

我可以看到它的效果是,它在一定程度上使图像锐化,并将其转换为更灰度的图像(实际上不是灰度,因为图像仍然是RGB),但我不确定,即使在阅读GaussianBlur和addWeighted上的OpenCV文档后,我是否完全理解函数中发生的情况


另外,这个特定的图像转换是否有一个我可以进一步阅读的特定名称?

我可以看到的主要步骤是
cv2.addWeighted(img,4,gb\u img,-4128)
。addWeighted的基本方程是
dst(I)=饱和(src1(I)∗α+src2(I)∗β+γ)
。在这里的示例中,alpha为4,beta-4,gamma为128

我对其工作原理的理解是,它首先执行高斯模糊来生成图像的去噪版本。然而,除了去除噪声外,高斯模糊还可以“涂抹”边缘,这在后面很重要。然后,它从原始图像中减去去噪后的版本,并向每个像素颜色通道添加128

在原始像素与过滤像素相同的区域中,这将导致均匀的灰色区域。在原始像素和过滤像素相差很大的区域中,根据原始像素或过滤像素的强度是否较高,最终将得到较亮或较暗的区域。这些差异在原始图像的边缘处最为明显,因为这些边缘将被高斯模糊强烈“涂抹”


由于将
addWeighted()
分别应用于像素的每个颜色通道,因此结果不是完全灰度化的。模糊前和模糊后图像的RGB值不平衡的区域(即两个红色通道之间的差异远大于蓝色或绿色通道之间的差异)将有一定程度的颜色,而不仅仅是灰色。

这是一个非常好且易于理解的答案:)谢谢。很好的解释!关于名称:此函数减去平均值,但局部计算。它也是高斯拉帕斯算子(对数算子)或高斯差分算子(狗算子)的粗略近似。