繁体   English   中英

了解OpenCV图像平滑

[英]Understanding OpenCV image smoothing

这个问题是关于本教程的: http://docs.opencv.org/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html#smoothing

在该代码中,所有平滑方法都在循环内运行MAX_KERNEL_LENGTH次。 这是什么内核?

为了计算平滑,例如,计算最接近像素的平均值。 该内核指定的像素数和像素数。 内核还包含有关像素权重的信息。

内核通常表示为矩阵(在这种情况下也是这样),该矩阵以每个像素为中心,计算平均值。 在伪c ++代码中,计算看起来像这样。

 for(int i=0;i<src.rows;i++){
     for (int j=0;j<src.cols;j++){
         dst[i][j]=0;
         for(int kernel_i=0;i<kernel.rows;i++){
             for (int kernel_j=0;j<kernel.cols;j++){
                  dst[i][j]+=
                      src[i-kernel.rows+kernel_i][j-kernel.cols+kernel_j]*
                      kernel[kernel_i][kernel_j];
             }
         }
     }
 }

提到为MAX_KERNEL_LENGTH的变量只是创建一个这样的内核的矩阵的最大大小。

MAX_KERNEL_LENGTH在代码中定义为常数(31)。 它用于将内核大小从1x1更改为31x31,以显示本教程中使用的不同模糊算法中不同内核大小的影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM