模糊功能有去噪点,减轻失真,降低图像分辨率的作用
OpenCV中,模糊功能的函数叫cvSmooth
其原型
void cvSmooth(
const CvArr *src,
CvArr *dst,
int smoothtype = CV_GAUSSIAN,
int param1 = 3,
int param2 = 0,
int param3 = 0,
int param4 = 0,
};
其中4个param参数的意义由选择的smoothtype决定,参数为所选模糊类型做调整
Smooth type | Name | 是否能替换原图 | Brief description |
---|---|---|---|
CV_BLUR | 简单模糊 | 是 | 对每个点param1*param2的邻域求和得均值,再做缩放1/(param1*param2) |
CV_BLUR_SCALE | 简单无缩放变换的模糊 | 否 | 对每个点param1*param2的邻域求和得均值 |
CV_MEDIAN | 中值模糊 | 否 | 对每个点param1*param2的邻域进行中值滤波 |
CV_GAUSSIAN | 高斯模糊 | 是 | 对每个点param1*param2的邻域进行高斯卷积 |
CV_BILATE_RAL | 双边模糊 | 否 | 使用双线性滤波 |
- 简单模糊:在以中心像素点的邻域内求平均值替代中心像素点的像素值,再对图像进行缩放处理
- 中值模糊:在以中心像素点的邻域内求中值替代中心像素点的像素值
- 双边模糊:与高斯模糊相似,但是其加权平均由两部分组成,第一部分与高斯模糊相似,第二部分基于其他像素与中心像素像素差的加权平均
- 高斯模糊:以中心像素点的邻域构造正态分布的模型(距离中心像素点越远的点权重越低),使用高斯函数(二元形式)由邻域在曲线上的位置求每一个点的权重
得到邻域的权重矩阵后,再将其变换成所有权重和为1的形式,为最终的权重矩阵,最后将各点像素值乘上其对应的权重,得到中心点的像素值
[1]百度百科:高斯模糊
[2]Gary Bradski & Adrian Kaehler.Learning OpenCV