关于图像滤波推荐一篇不错的博客。
matlab中的fspecial函数能得到很多内置算子:
average : 均值滤波器;
disk : 圆盘均值滤波器;
gaussian: Gaussian低通滤波器;
laplacian :二维Laplacican算子的逼近滤波器;
log :Laplacian的Gaussian滤波器;
motion :运动滤波器
prewitt :Prewitt横向边缘凸显滤波器;
sobel :Sobel横向边缘凸显滤波器;
unsharp :unsharp反向增强滤波器。
实际上算子的维数是
3×3
或
5×5
,理论上算子的维数必须是奇数乘奇数,否则没有中心点。
为了让图像亮度不变,算子所有元素的和应该为1。
有了算子,如果有计算卷积的函数就好了,可以自己写,matlab自带三种函数conv2,filter2和imfilter,暂时不清楚他们的区别,似乎用imfilter会更好一些。
下面开始玩耍。
原始图像
average(模糊化)
laplacian(边缘检测)
sobel(边缘检测)
unsharp (图片增强)
图片增强的效果还真是好。
经验告诉我,所有边缘检测的算子都是浮雕效果的算子,加上128的偏移就可以了。
laplacian算子加上偏移
sobel算子加上偏移