在该代码中,所有平滑方法都在循环内运行MAX_KERNEL_LENGTH
次。这个核心是什么?我真的不明白。请帮忙。
答案 0 :(得分:3)
为了计算平滑,例如,计算最接近像素的平均值。此内核给出的像素数和数量。核心还包含关于像素加权的信息。
内核通常表示为矩阵(在这种情况下也是如此),该矩阵以每个像素为中心,其平均值被计算。伪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
的变量只是创建一个这样的内核的矩阵的最大尺寸。
答案 1 :(得分:0)
MAX_KERNEL_LENGTH
在代码中定义为常量(31)。它用于将内核大小从1x1更改为31x31,以显示本教程中使用的不同模糊算法中不同内核大小的影响。