在该代码中,所有平滑方法都在循环中运行了MAX_KERNEL_LENGTH
多次。这个内核是什么?
问问题
766 次
2 回答
3
例如,为了计算平滑,计算最接近像素的平均值。该内核给出了哪些像素以及多少像素。内核还包含有关像素权重的信息。
内核通常表示为一个矩阵(在这种情况下也是如此),该矩阵以每个像素为中心,计算平均值。计算在伪 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
只是创建一个这样的内核的矩阵的最大大小。
于 2013-05-20T15:58:55.443 回答
0
被MAX_KERNEL_LENGTH
定义为代码中的常量 (31)。它用于将内核大小从 1x1 更改为 31x31,以显示教程中使用的不同模糊算法中不同内核大小的效果。
于 2013-05-20T15:57:21.810 回答