(一)知识点:
①核心
②自定义均值滤波/非均值滤波
(二)API
①filter2D()
CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth,
InputArray kernel, Point anchor=Point(-1,-1),
double delta=0, int borderType=BORDER_DEFAULT );
参数详情(来源于(55条消息) opencv学习(七)之图像卷积运算函数filter2D()_烟雨博客-优快云博客_filter2d
(55条消息) 【OpenCV 4】自定义滤波器:filter2D()_风语留痕-优快云博客_filter2d opencv
(55条消息) filter2D图像卷积_Zender-优快云博客_filter2d参数
当 ddepth 输入值为 -1 时,目标图像和原图像深度保持一致。
kernel:卷积核(或者是相关核),一个单通道浮点型矩阵。如果想在图像不同的通道使用不同的 kernel,可以先使用 split() 函数将图像通道事先分开。
anchor:内核的基准点(anchor),其默认值为 (-1,-1) 说明位于 kernel 的中心位置。基准点即 kernel 中与进行处理的像素点重合的点。
delta:在储存目标图像前可选的添加到像素的值,默认值为 0。
borderType:像素向外逼近的方法,默认值是 BORDER_DEFAULT,即对全部边界进行计算。
注意:滤波完成之后需要使用convertScaleAbs函数将结果转换为字节类型。
②ConverScaleABS()
CV_EXPORTS_W void convertScaleAbs(InputArray src, OutputArray dst,
double alpha = 1, double beta = 0);
解释(来源于(55条消息) opencv中convertScaleAbs函数执行原理_选择大于努力,方向决定努力的价值-优快云博客_convertscaleabs
(55条消息) 【OpenCV3】cv::convertScaleAbs()使用详解_guduruyu的专栏-优快云博客_convertscaleabs
参数详情:
-
double alpha = 1.0, // 乘数因子
-
double beta = 0.0 // 偏移量
总结:
convertScaleAbs函数是一个位深转化函数,可将任意类型的数据转化为CV_8UC1。具体数据处理方式如下:
(1). 对于src*alpha+beta的结果如果是负值且大于-255,则直接取绝对值;
(2). 对于src*alpha+beta的结果如果大于255,则取255;
(3). 对于src*alpha+beta的结果是负值,且小于-255,则取255;
(4). 对于src*alpha+beta的结果如果在0-255之间,则保持不变;
(三)代码演示: