【图像处理】Schmid滤波器

Schmid也是一种类Gabor图像滤波器,在这篇文章[1]中有详细推导和介绍。

一种更简洁的表达公式是:

当中,r为核半径,Z为归一化參数,τ和σ是比較重要的參数,在ReID提取TextFeature中,常常使用例如以下一系列參数:

(2,1), (4,1), (4,2), (6,1), (6,2), (6,3), (8,1), (8,2), (8,3), (10,1),
(10,2), (10,3), (10,4)

此外,还结合前面的Gabor滤波器,γ,θ,λ,σ的參数分别使用:(0.3,0,4,2), (0.3,0,8,2),
(0.4,0,4,1), (0.4,0,4,1), (0.3,π/2,4,2), (0.3,π/2,8,2), (0.4,π/2 ,4,1),
(0.4,π/2,4,1)

下面是11个滤波核的示意图:

生成Schmid核函数代码:

Mat getSchmidFilter(float tao, float sigma){
float r = sigma/(4.0f*tao);
float sigma2 = sigma*sigma;
//int half_filter_size = int(r+0.5);
int half_filter_size = 10;
int filter_size = 2*half_filter_size+1;
Mat schmid = Mat::zeros(filter_size,filter_size,CV_32F);
float filter_sum = 0.0f;
for(int i=0;i<filter_size;i++){
float* s = schmid.ptr<float>(i);
for(int j=0;j<filter_size;j++){
float x = i-half_filter_size;
float y = j-half_filter_size;
r = sqrt(x*x+y*y);
float tmp = 2*PI*tao*r/sigma;
float tmp2 = r*r/(2.0f*sigma2);
s[j] = cos(tmp)*exp(-tmp2);
filter_sum += s[j];
}
}
//cout<<filter_size<<" "<<filter_sum<<endl;
//cout<<schmid<<endl;
if(abs(filter_sum-0.0f)<1e-6){
return schmid;
}
for(int i=0;i<filter_size;i++){
float* s = schmid.ptr<float>(i);
for(int j=0;j<filter_size;j++){
s[j]/=filter_sum;
}
}
return schmid;
}

对图像进行卷积滤波效果如图:

參考文献:

[1] Schmid,
Cordelia. "Constructing models for content-based image retrieval."Computer
Vision and Pattern Recognition, 2001. CVPR 2001. Proceedings of the 2001 IEEE
Computer Society Conference on.
Vol. 2. IEEE, 2001.

[2] Gray, Douglas, and Hai Tao. "Viewpoint invariant pedestrian
recognition with an ensemble of localized features." Computer Vision–ECCV 2008.
Springer Berlin Heidelberg, 2008. 262-275.

(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经同意请勿用于商业用途)

【图像处理】Schmid滤波器

时间: 2024-10-11 00:42:41

【图像处理】Schmid滤波器的相关文章

图形学复习4——光栅化(画线画圆扫描线反走样算法)

图形学复习 CH7 光栅化 前几章介绍了几何处理和裁剪变换,接下来的步骤就是光栅化 光栅化是将形式表示的几何图元转换为阵列表示的数据片元的过程,片元中每一个像素对应帧缓冲区中的每一个像素 7.1 线段生成算法 (1)DDA画线算法 设直线表达式为y=mx+b,输入直线两端点坐标(x0,y0)和(xend,yend),可以计算出m=yend?y0xend?x0和b=y0?m?x0 DAA是基于微分运算的线段生成算法,其主要计算式便是δy=mδx: 若|m|≤1则x方向的变化大于y方向的变化,以x方

关于高斯滤波理论编程资料汇总

一.高斯图像滤波原理及其编程离散化实现方法 二.图像处理 -- 高斯滤波器原理

图像处理之基础---滤波器 高斯滤波

引用 keendawn 的 高斯(核)函数简介 1函数的基本概念 所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数. 通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数 , 可记作 k(||x-xc||), 其作用往往是局部的 , 即当x远离xc时函数取值很小.最常用的径向基函数是高斯核函数 ,形式为 k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 其中xc为核函数中心,σ为函数的宽度参数 ,

[数字图像处理]图像去噪初步(1)--均值滤波器

1.图像去噪的前言 上一篇博文中,我对噪声的类型进行了介绍,也使用的Matlab对各种噪声进行了实现.旧话重提,一幅图像,甚至是一个信号的老化,能够使用下面模型来表示. 能够使用下面算式来表示 这里,因为退化函数的作用,使得原图像产生退化(比方,运动模糊),然后在加上一个加性噪声项. 本博文,主要对去除加性噪声的线性滤波器的性能进行了比較.对于退化函数的去除(称为去卷积或者逆滤波),将放在稍后的博文. 1.1 实验用图像 1.2 实验结果的评价 实验的步骤为,将实验用图像加上加性噪声,然后使用滤

【图像处理】Gabor滤波器

Gabor的核函数参考的wiki 使用实数Real的公式计算核函数代码: Mat getGaborFilter(float lambda, float theta, float sigma2,float gamma, float psi = 0.0f){ if(abs(lambda-0.0f)<1e-6){ lambda = 1.0f; } float sigma_x = sigma2; float sigma_y = sigma2/(gamma*gamma); int nstds = 3; f

Matlab图像处理系列3———空间域锐化滤波器

注:本系列来自于图像处理课程实验,用Matlab实现最基本的图像处理算法 1.锐化滤波器 锐化滤波,是将图像的低频部分减弱或去除,保留图像的高频部分,即图像的边缘信息. 图像的边缘.轮廓一般位于灰度突变的地方,也就是图像的高频部分,通常用灰度差分提取边缘轮廓. 图像中边缘轮廓通常是任意方向的,因此我们的差分运算需要具有方向性.各向同性的边缘检测算子对任意方向的边缘轮廓都有相同的检测能力,那么什么是算子? 算子是一个函数空间到函数空间上的映射O:X→X.广义上的算子可以推广到任何空间,如内积空间等

[数字图像处理]图像去噪初步(2)--非线性滤波器

1.非线性处理与线性处理的区别 上一篇博文的内容,是关于均值滤波器的.比如说像算术均值滤波器,几何均值滤波器.这以类型的滤波器的常常被用于剔除某些不需要的频率成分,或者选择需要的频率成分,从而达到去噪的目的.这样的滤波器,被称为线性滤波器. 然而,还有一些特殊滤波器,他们被称为非线性滤波器.其代表为中央值滤波器.所谓中央值滤波器,就是将一定范围内的数据(对于图像而言,是像素的灰度值)进行排序,选择中央值作为滤波器的输出. 中央值滤波器的目的并不是频率成分的选择,而是求root信号.关于root信

数字图像处理-空间域处理-空间滤波-锐化空间滤波器

参考自:数字图像处理第三版-冈萨勒斯 锐化处理的主要目的是突出灰度的过渡部分.增强边缘和其他突变(噪声),削弱灰度变化缓慢的区域. 注意:垂直方向是x,水平方向是y 基础 图像模糊可用均值平滑实现.因均值处理与积分类似,在逻辑上,我们可以得出锐化处理可由空间微分来实现.微分算子的响应强度与图像的突变程度成正比,这样,图像微分增强边缘和其他突变,而削弱灰度变化缓慢的区域. 微分算子必须保证以下几点:(1)在恒定灰度区域的微分值为0:(2)在灰度台阶或斜坡处微分值非0:(3)沿着斜坡的微分值非0 一

数字图像处理- 3.6 锐化空间滤波器

Reference Link : http://blog.csdn.net/xz_rabbit/article/details/17999315 Reference Link : http://www.cnblogs.com/salan668/p/3560197.html 3.6 锐化空间滤波器 锐化处理的主要目的是突出图像中的细节或者增强被模糊了的细节,这种模糊不是由于错误操作,就是特殊图像获取方法的固有印象.总的来说,微分算子的响应强度与图像在该店(应用了算子)的突变程度有关.这样一来,图像