5

我的书是关于 OpenCV 中的图像内核概念的

当对像素邻域进行计算时,通常用核矩阵来表示。该内核描述了如何组合计算中涉及的像素以获得所需的结果。

在图像模糊技术中,我们使用内核大小。

cv::GaussianBlur(inputImage,outputImage,Size(1,1),0,0)

那么,如果我说内核大小是Size(1,1)不是意味着内核只有 1 个像素?

请看下面的图片

在此处输入图像描述

在这里,内核大小是多少?Size(3,3)? 如果我说Size(1,1)这个图像中的大小,这是否意味着内核只有 1 个像素并且像素值为 0(图像中的第一个值)?

4

3 回答 3

9

您提供的示例图像中的内核大小是 3×3 ( Size(3,3)),是的。1×1 的内核大小有效的,尽管它不是很有趣。

正在执行的操作的通用名称GaussianBlur卷积

GaussianBlur函数正在创建一个高斯内核,它基本上是一个矩阵,表示您应该如何组合一个 n×n 像素的窗口以获得单个像素值(在这种情况下使用高斯形模糊模式)。

除了图像的标量乘法之外,大小为 1×1 的内核不能做任何事情;也就是说,1×1 矩阵的卷积[c]只是c * inputImage.

通常,您需要选择满足以下条件的 n×n 高斯核:

  • 高斯分布(即标准偏差或方差)使其模糊您想要的量
    • 数字越大意味着越模糊;较小的数字意味着较少的模糊
  • 选择足够大的 n,以免将高斯截断太接近模式

链接:

于 2013-05-20T18:43:23.727 回答
5

您发布的图像是 3x3 内核,由cv::Size(3,3). 您说的cv::Size(1,1)对应于单个像素是正确的,但是cv::Size(1,1)参考图像说“”是没有意义的。一个 1x1 内核将简单地具有 value [1]

于 2013-05-20T18:44:51.200 回答
1

This image is a kernel and it's size is 3x3. Kernels are applied to image by multiplying corresponding pixel values and getting sum of 9 results. This is called convolution / filtering in literature. You can look at following resources for more information :

http://en.wikipedia.org/wiki/Kernel_(image_processing) http://homepages.inf.ed.ac.uk/rbf/HIPR2/filtops.htm http://www.cse.usf.edu/~r1k/MachineVisionBook/MachineVision.files/MachineVision_Chapter4.pdf

于 2013-05-20T18:48:08.850 回答