c++ - OpenCV:了解内核

标签 c++ image opencv image-processing

我的书说的是 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 个像素?

请看下图

enter image description here

在这里,内核大小是多少? 大小(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/

相关文章:

html - 在 webkit 上显示阿拉伯字体的问题

c++ - 为什么会出现访问冲突运行时错误?

css - add_image_size wordpress 裁剪数组(顶部、底部)不起作用

android - 单击按钮更改两个图像 (Android)

javascript - JavaScript 缩放后计算一个点的坐标

c++ - OpenCV 转换为()

c++ - 标记枚举的非侵入式 Boost 序列化 C++

c++ - 如何编译修改后的 videoInput.h

Python OpenCV : Image Denoising for Text Recognition

c++ - 创建包含另一个字符串的多个拷贝的字符串的最佳方法