选择性滤波
在很多应用中,其中感兴趣是处理指定的频段或频率矩形。第一类滤波器分别称为带阻滤波器或带通滤波器。第二类滤波器称为陷波滤波器。
1、带阻滤波和带通滤波
D(u,v)是距离频率矩形中心的距离,D0是带宽的径向中心,W是带宽。一个带同滤波器可以用从低通滤波器得到高通滤波器的相同的方法从带阻滤波器中得到
halcon生成理想带阻带通和高斯带阻带通的代码
read_image (Image, 'D:/halcon work/fft/1.png')
rgb1_to_gray (Image, GrayImage)
get_image_size (GrayImage, Width, Height)
fft_generic (GrayImage, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
gen_bandpass (ImageBandpass, 0.4, 0.5, 'none', 'dc_center', Width, Height)
gen_bandfilter (ImageFilter, 0.4, 0.5, 'none', 'dc_center', Width, Height)
gen_std_bandpass (ImageFilter2, 0.5, 0.1, 'gauss', 'none', 'dc_center', Width, Height)
gen_image_const (Image2, 'real', Width, Height)
paint_region (Image2, Image2, ImageResult1, 1, 'fill')
sub_image (ImageResult1, ImageFilter2, ImageSub1, 1, 0)
2、陷波滤波器
这是一种更加有用的选择性滤波器。它拒绝(或通过)事先定于的关于频率矩形中心的一个邻域的频率。零相移滤波器必须是关于原点对称的,因此,一个中心位于(u0,v0)的陷波在位置(-u0,-v0)必须有一个对应的陷波(或者说 由于傅里叶的周期性,傅里叶频谱上不可能单独存在一个点的噪声,必定是关于远点对称的一个噪声对)。陷波带阻滤波器可以用中心已被平议到陷波滤波器中心的高通滤波器的乘积来构造。一般形式
其中,Hk(u,v)和H-k(u,v)是高通滤波器,它们的中心分别位于,(uk,vk)和(-uk,-vk)处。这些点也是我们要去除的噪声点。这些中心是根据频率矩形中心(M/2,N/2)来确定的。对于每个滤波器,距离的计算由下式执行:
对于陷波带通滤波器照样可以通过从低通得到高通的相同方法得到。
用halcon来构建一个去除摩尔纹的例子
read_image (Image1, 'D:/halcon work/fft/a.jpg')
rgb1_to_gray(Image1, Image)
get_image_size (Image, Width, Height)
optimize_fft_speed (Width, Height, 'standard')
fft_generic (Image, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
power_real (ImageFFT, PowerSpectrum)
binomial_filter (PowerSpectrum, ImageSmooth, 9, 9)
threshold (ImageSmooth, Region, 128, 100000)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5, 200)
dilation_circle (SelectedRegions, RegionDilation, 3.5)
paint_region (RegionDilation, ImageFFT, ImageFFTFiltered, 0, 'fill')
fft_generic (ImageFFTFiltered, ImageFiltered, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')