matlab 高斯滤波模板是怎么选取的?怎么取均值、方差的值对应出来的模板系数是整数呢?
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 04:08:54
![matlab 高斯滤波模板是怎么选取的?怎么取均值、方差的值对应出来的模板系数是整数呢?](/uploads/image/z/3509647-7-7.jpg?t=matlab+%E9%AB%98%E6%96%AF%E6%BB%A4%E6%B3%A2%E6%A8%A1%E6%9D%BF%E6%98%AF%E6%80%8E%E4%B9%88%E9%80%89%E5%8F%96%E7%9A%84%3F%E6%80%8E%E4%B9%88%E5%8F%96%E5%9D%87%E5%80%BC%E3%80%81%E6%96%B9%E5%B7%AE%E7%9A%84%E5%80%BC%E5%AF%B9%E5%BA%94%E5%87%BA%E6%9D%A5%E7%9A%84%E6%A8%A1%E6%9D%BF%E7%B3%BB%E6%95%B0%E6%98%AF%E6%95%B4%E6%95%B0%E5%91%A2%3F)
matlab 高斯滤波模板是怎么选取的?怎么取均值、方差的值对应出来的模板系数是整数呢?
matlab 高斯滤波模板是怎么选取的?怎么取均值、方差的值对应出来的模板系数是整数呢?
matlab 高斯滤波模板是怎么选取的?怎么取均值、方差的值对应出来的模板系数是整数呢?
你是问为什么不是小数吗?
由于模板大小限制,这些处理都是离散的,模板越大这些就越接近正确结果.
其实你想想,如果一个小小的3*3模板你用小数做根本没意义的,计算精度没提高徒增计算时间.
高斯滤波模板3*3 5*5 7*7 这些数不用你记住,下次用直接复制过来就可以.
其实都是对高斯函数的离散模拟.
欢迎追问.
首先用fspecial给出来的不会是整数(除非是1x1的矩阵)
因为fspecial出来的矩阵都是归一化的,所有元素的和是1
因为模版滤波相当于对模版对应大小的图像快进行加权平均,权重的总应该是1
就简单的均值滤波,例如2x2的滤波模版应该是
| 0.25 0.25 |
| 0.25 0.25 |
而对于高斯滤波,以你给的3x3模版为例,归一化后...
全部展开
首先用fspecial给出来的不会是整数(除非是1x1的矩阵)
因为fspecial出来的矩阵都是归一化的,所有元素的和是1
因为模版滤波相当于对模版对应大小的图像快进行加权平均,权重的总应该是1
就简单的均值滤波,例如2x2的滤波模版应该是
| 0.25 0.25 |
| 0.25 0.25 |
而对于高斯滤波,以你给的3x3模版为例,归一化后为
0.0625 0.1250 0.0625
0.1250 0.2500 0.1250
0.0625 0.1250 0.0625
相当于原来的矩阵 除以它自身所有元素的和
如过先不考虑归于化,想用整数的序列近似高斯滤波模版
简单起见,我们先考率1维的情况,那么可以简单的使用杨辉三角来近似
长度为3时[1 2 1]
长度为4时[1 3 3 1]
长度为5时[1 4 6 4 1]
...........
因为使用杨辉三角可以很好地保留高斯模版的一个性质
两个高斯模版的卷积还是高斯模版
例如两个长度3的杨辉三角序列,卷积出长度5的序列
conv([1 2 1],[1 2 1])
ans =
1 4 6 4 1
而二维的模版,可以用一维的模版用矩阵乘法获得
[1 2 1]'*[1 2 1]
ans =
1 2 1
2 4 2
1 2 1
获得整数矩阵后,可以除以其所有元素的总和来归一化
收起