在图像中,通过邻接点的相互平均可以去掉一些突然变化的点,从而过滤掉一定的噪声,达到平滑的目的,但图像有一定程度上的模糊。
本实验使用模板
1 1 1
1 1 1
1 1 1
即每一个像素的灰度都是自身和周围8个像素的平均值。
图像锐化处理的目的是使模糊的图像变得更加清晰起来,而图像模糊的实质就是图像受到平均或积分运算造成的,因此可以对图像进行逆运算(如微分)来使图像清晰化。梯度锐化是一种常用的微分锐化方法。
Sobel 初步尝试,其卷积计算核有两个,
Sx =
-1 0 1
-2 0 2
-1 0 1
Sy =
1 2 1
0 0 0
-1 -2 -1
一个对垂直边缘影响最大,一个对水平边缘影响最大。图像中每点均分别用这两个算子作卷积,取两个卷积绝对值的和。
图像中的边缘及急剧变化部分与图像高频分量有关,利用低通滤波减弱高频部分能实现图像平滑,利用高通滤波减弱低频部分能实现图像锐化。
图像FFT 后注意原点。
原图
FFT 后
FFT 后高通滤波
高通滤波
FFT 后低通滤波
低通滤波
平滑
Sobel
/*
ProcessFilterZ.h
Copyright (C) 2011, coreBugZJ, all rights reserved.
滤波。
*/
#ifndef __PROCESSFILTER_Z_H_INCLUDED__
#define __PROCESSFILTER_Z_H_INCLUDED__
#include "TypeZ.h"
#include "ClassImageZ.h"
/* 高通 低通 滤波器 */
/* 对宽为 (1<
/* 点的定位同 2d FFT */
/* 会修改矩阵 */
/* if 参数highPass then 高通 else 低通 */
/* == radius 也通过 */
/* 成功返回 ROK */
PublicFuncZ R32 highLowPassFilterZ( CF64 *mat, U32 lgw, U32 lgh, F64 radius, B32 highPass );
/* 在图像上使用 n * n 的模板 mat,然后 乘以 mulFactor 除以 divFactor */
/* 假设 n 为奇数 */
/* 会修改图像 */
/* 模板 mat 中第 y 行第 x 列的点(x,y)为 mat[ y * n + x ] */
/* 图像边缘无法使用模板处,保持不变 */
/* 成功返回 ROK */
PublicFuncZ R32 templateFilterZ( ImageZ img, I32 *mat, U32 n, I32 mulFactor, I32 div