我的书说的是 OpenCV 中的图像内核概念
When a computation is done over a pixel neighborhood, it is common to represent this with a kernel matrix. This kernel describes how the pixels involved in the computation are combined in order to obtain the desired result.
在图像模糊技术中,我们使用内核大小。
cv::GaussianBlur(inputImage,outputImage,Size(1,1),0,0)
那么,如果我说内核大小是 Size(1,1)
是否意味着内核只有 1 个像素?
请看下图
在这里,内核大小是多少? 大小(3,3)
?如果我在此图像中说大小 Size(1,1)
,是否意味着内核只有 1 个像素并且像素值为 0(图像中的第一个值)?
最佳答案
您提供的示例图像中的内核大小是 3×3 (Size(3,3)
),是的。 1×1 的内核大小是有效的,尽管它不会很有趣。
GaussianBlur
执行的操作的通用名称是卷积。
GaussianBlur
函数正在创建一个高斯核,它基本上是一个矩阵,表示您应该如何组合一个 n×n 像素的窗口以获得单个像素值(使用高斯-在这种情况下形成模糊图案)。
大小为 1×1 的内核除了图像的标量乘法外不能做任何事情;也就是说,1×1 矩阵 [c]
的卷积只是 c * inputImage
。
通常,您需要选择满足以下条件的 n×n 高斯内核:
- 高斯分布(即标准偏差或方差),这样它会模糊您想要的数量
- 数字越大意味着越模糊;数字越小意味着模糊越少
- 选择足够大的 n,以免高斯截断太接近模式
链接:
关于c++ - OpenCV:了解内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16655962/