这个问题是关于本教程http://docs.opencv.org/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html#smoothing了解OpenCV的图像平滑
在该代码中,所有的平滑方法是在一个循环中运行MAX_KERNEL_LENGTH
倍。这个核心是什么?我真的不明白。请帮忙。
这个问题是关于本教程http://docs.opencv.org/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html#smoothing了解OpenCV的图像平滑
在该代码中,所有的平滑方法是在一个循环中运行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 kernal_i=0;i<kernal.rows;i++){
for (int kernal_j=0;j<kernal.cols;j++){
dst[i-kernal.rows+kernal_i][j-kernal.cols+kernal_j]+=
src[i-kernal.rows+kernal_i][j-kernal.cols+kernal_j]*
kernal[kernal_i][kernal_j];
}
}
}
}
被称为MAX_KERNAL_LENGTH
的变量只是创建一个这样的内核的矩阵的最大尺寸。
啊!大!谢谢:) –
嗯,你能以更简单的方式再次解释内核吗? –
请参阅[链接](http://en.wikipedia.org/wiki/Kernel_(image_processing)) – Xale
MAX_KERNEL_LENGTH
定义为代码中的常量(31)。它用于将内核大小从1x1更改为31x31,以显示本教程中使用的不同模糊算法中不同内核大小的效果。
它是线性滤波器的核心。看看数字信号处理 – Andrew