Gabor的核函数参考的wiki
使用实数Real的公式计算核函数代码:
Mat gaborFilter(Mat& img, Mat& filter){
int half_filter_size = (max(filter.rows,filter.cols)-1)/2;
Mat filtered_img(img.rows,img.cols,CV_32F);
for(int i=0;i<img.rows;i++){
uchar* img_p = img.ptr<uchar>(i);
float* img_f = filtered_img.ptr<float>(i);
for(int j=0;j<img.cols;j++){
float filter_value = 0.0f;
for(int fi=0;fi<filter.rows;fi++){
float* f = filter.ptr<float>(fi);
int img_i = i+fi-half_filter_size;
img_i = img_i < 0 ? 0 : img_i;
img_i = img_i >= img.rows ? (img.rows-1) : img_i;
uchar* p = img.ptr<uchar>(img_i);
for(int fj=0;fj<filter.cols;fj++){
int img_j = j+fj-half_filter_size;
img_j = img_j < 0 ? 0 : img_j;
img_j = (img_j >= img.cols) ? (img.cols-1) : img_j;
float tmp = (float)p[img_j]*f[fj];
filter_value += tmp;
}
}
img_f[j] = filter_value;
}
}
return filtered_img;
}
对一幅图使用如下核卷积:
Mat gaber = getGaborFilter(0.3,0,4,2);
效果如下:
Gabor算子卷积之后得到很多负值(不知道有没有问题),后面的图是归一化之后显示出来的。
Mat normalizeFilterShow(Mat gaber){
Mat gaber_show = Mat::zeros(gaber.rows,gaber.cols,CV_8UC1);
float gaber_max = FLT_MIN;
float gaber_min = FLT_MAX;
for(int i=0;i<gaber.rows;i++){
float* f = gaber.ptr<float>(i);
for(int j=0;j<gaber.cols;j++){
if(f[j]>gaber_max){
gaber_max = f[j];
}
if(f[j]<gaber_min){
gaber_min = f[j];
}
}
}
float gaber_max_min = gaber_max-gaber_min;
for(int i=0;i<gaber_show.rows;i++){
uchar* p = gaber_show.ptr<uchar>(i);
float* f = gaber.ptr<float>(i);
for(int j=0;j<gaber_show.cols;j++){
if(gaber_max_min!=0.0f){
float tmp = (f[j]-gaber_min)*255.0f/gaber_max_min;
p[j] = (uchar)tmp;
}
else{
p[j] = 255;
}
}
}
return gaber_show;
}
分享到:
相关推荐
基于Gabor滤波器的指纹图像增强处理算法,使用matlab2021a或者以上版本测试
matlab图像处理中gabor滤波器代码
指纹图像处理;指纹提取;指纹图像增强;Gabor滤波器
Gabor滤波器在指纹图像处理中的应用.pdf
Gabor 滤波器工具箱,包括各种Gabor滤波器的函数,可用于图像滤波处理,特征提取
Gabor类,包含Gabor滤波器在图像处理中的相关函数。
像增强处理中,利用了Gabor滤波器的方向选择和频率选择特性,把指纹图像的局部方向和局部频率作为Gabor滤波函数的 参数,然后把Gabor函数与纹理图像进行卷积,从而去除图像噪声,达到了增强图像的目的。在算法设计上采用...
gabor、 log-gabor滤波器matlab源码
现把Gabor 滤波器应用在指纹图像增强处理中, 利用了Gabor 滤波器的方向选择和频率选择特性, 把指纹图像的局部方向和局部频率作为Gabo r 滤波函数的参数, 然后把Gabor 函数与纹理图像进行卷积, 从而去除图像噪声, ...
一种Gabor滤波器的实现算法,鞠豆,李庆,指纹识别包括三个过程:指纹预处理、指纹特征提取和特征。指纹图像增强是指纹预处理中比较重要的一步,它处理结果的好坏直接影响
基于MATLAB GUI的Gabor滤波器数字图像处理实验平台设计
基于MATLAB GUI的Gabor滤波器数字图像处理实验平台设计.pdf
但是Gabor滤波器对纹线方向和频率十分敏感,通过处理灰度图像得到的二值图像存在着严重的特征点丢失和变化问题。采用相位差分二值化方法,使二值化过程不依赖Gabor滤波。提出了在二值图像上利用Gabor滤波器增强的方法,...
gabor滤波器,用于matlab平台的图像处理,适用于纹理表达和分离
【图像处理】基于遗传算法优化Gabor滤波器提取织物表面特征值进行织物瑕疵识别和处理matlab源码.zip
在图像处理中,Gabor函数是一个用于边缘提取的线性滤波器。Gabor滤波器的频率和方向表达同人类视觉系统类似。研究发现,Gabor滤波器十分适合纹理表达和分离。在空间域中,一个二维Gabor滤波器是一个由正弦平面波调制...
#5237 实现用于图像处理的 Gabor 滤波器。 从评论和我自己的使用来看,实现似乎具有有限的自由度,而且方差是在原始 x,y 而不是旋转的 x', y' 方向上定义的。 该代码是基于...
基于Gabor滤波器的指纹图像增强处理算法,使用matlab2021a或者以上版本测试_源码
通过傅里叶变换提取频谱楔特征(角向分布)和环特征(径向分布)作为特征角度和频率参数,设计2 个最优Gabor滤波器,分别与织物纹理图像进行卷积,获得目标子图像,然后对子图像进行融合处理,达到提取纹理特征的目的。...
在图像处理领域,Gabor滤波器是一个用于边缘检测的线性滤波器。Gabor滤波器的频率和方向表示接近人类视觉系统对于频率和方向的表示,并且它们常备用于纹理表示和描述。在空域,一个2维的Gabor滤波器是一个正弦平面波...