在滤波过程中,除了滤波算子的选择之外,再就是就在源图像上选取尺寸合适的邻域并对其进行一定步长的遍历操作了。邻域尺寸的不同可能会给结果带来不同的效果,一般尺寸大小选择奇数如3、5、7等。
那么图像滤波之前的内容就是获取邻域并对邻域进行运算了。图像滤波一般是在源图像上将滤波算子与其对应邻域像素进行矩阵运算,这部分是直接创建等尺寸的算子窗口,在源图像上遍历计算。而还有的则是直接在源图像上取得邻域像素内容,然后对邻域内容处理,例如子块重叠的直方图均衡算法。其实这也可以算为滤波算子内元素全为1,然后遍历得到的所有邻域子块。
下面以子块重叠的直方图均衡算法为例,来实现体现一下其中的滤波情况。下面对其代码进行分析解释:
1、确定一个邻域尺寸FilterSize,那么就有
int len = FilterSize*FilterSize;
int localwidth = FilterSize/2;//窗口索引最大值
2、构造对应的邻域窗口
ImgTyp* Filter = new ImgTyp[len];
memset(Filter,0,sizeof(ImgTyp)*len);