matlab核函数与滑窗

在处理图像时,为了提取特征,经常用各种核函数和图像进行卷积,其实就是通过一个矩阵以滑窗的形式与原图像进行点乘求和,可以看作对一个像素和附近像素进行了加权平均。

比如经常用3x3的近似高斯卷积核

0 1 0

1 2 1

0 1 0

其实就是这幅图的俯视图中z值(高度)的近似,中间最高,边缘低。可见原来的一个像素现在经过卷积由周围的像素加权构成,所以以高斯为例,高斯有平滑效果。

但是刚才的举例是近似的于真正的高斯分布还有差距,我们怎么用matlab产生真正的高斯核呢?

fspecial函数:

可以在matlab的命令行输入help fspecial来查看用法

使用 h = fspecial('gaussian', hsize,sigma); 就可以产生一个高斯核,其中hsize是卷积核的大小,默认3x3,sigma是高斯核的方差

在用 filteredI = imfilter(I, h); 对原图像用刚才生成的和进行卷积就可以得到卷积后的图像。

fspecial还可以生成其他核,都很常用,各有用途。

'average'  'disk' 'laplacian' 'log' 'motion' 'prewitt'  'sobel'  'unsharp' 。

但有的时候需要自定义一个函数来通过滑窗处理图像,matlab也有相关的函数 -------- blockproc

B = blockproc(A,[M N],fun)

A是要处理的矩阵,[M N]是滑窗大小,fun是处理时执行的函数

原文地址:https://www.cnblogs.com/maskmtj/p/6841159.html