CVPR读书笔记[6]:Gabor特征提取
朱金华jinhua1982@gmail.com 2014.08.16 周六
本文是Gabor特征提取三部分之三:
[1]CVPR读书笔记[4]:Gabor特征提取之Gabor核
http://blog.csdn.net/njzhujinhua/article/details/38460861
[2] CVPR读书笔记[5]:Gabor特征提取之Gabor核的实现
http://blog.csdn.net/njzhujinhua/article/details/38610281
[3] CVPR读书笔记[6]:Gabor特征提取
http://blog.csdn.net/njzhujinhua/article/details/38614697
上两节讲到了Gabor滤波器核的原理及实现, 有了滤波器的kernel, 使用该滤波器也就是很简单的事了.
对于图像滤波,一种可以直接在空域进行原图像与kernel进行卷积运算, 另一种是将原图像与kernel分别进行傅里叶变换在频域进行滤波,然后再反变换回来,即用频域滤波代替卷积加快计算速度.
[1]空域滤波
这个直接用filter2D完成了, 首先依次用每个核对原图像进行滤波得到用该Gabor核采集的特征, 并将之变为一行.
最后将所有核采集的特征矩阵变为1行(对32*32的图像,起一个核采集后是1*1024数据, 40个核采集后是40*1024,最后reshape变为1*40960).(这个原本为一列的,大部分理论中讲的也都是按样本特征为列向量来的,后来见svm中样本为行向量,便如此设定了. 设为行向量也方便一个样本的特征的内存拷贝)
Mat FaceFeature_gabor::GetFeature(Mat &src) { Mat feature; Mat feat_part[GABOR_SCALE_NUM][GABOR_ANGLE_NUM]; for (int i=0; i< GABOR_SCALE_NUM; i++) { for (int j=0;j<GABOR_ANGLE_NUM;j++) { filter2D(src, feat_part[i][j], CV_32F, m_gabor.m_gaborReKernel[i][j]); Mat tmp; normalize(feat_part[i][j],tmp,0,255,CV_MINMAX,CV_32FC1); //test //imshow("gaborface", tmp); //waitKey(); //test end tmp = tmp.reshape(1,1); feature.push_back(tmp); } } return feature.reshape(1,1); }
[2]频域滤波
通过将每个Gabor核进行傅里叶变换,得到其频域的滤波核.一个运行的系统,Gabor核设定好后一般不变,于是其频域的滤波核也不会变,这里只需做一次即可.后面对每个人脸采集特征时都是直接使用了.
在变换生成滤波核的大小时需要先将原空域核copyMakeBorder成与要处理的预设的标准人脸大小相匹配, 以便后面在频域要进行的滤波(mulSpetrums运算).
bool FaceFeature_gabor::InitFreqKernel() { Mat mergecomplexkernel; int freqksize=getOptimalDFTSize(m_faceSz.height); for (int scaleIdx=0;scaleIdx < GABOR_SCALE_NUM; scaleIdx++) { for (int angleIdx = 0;angleIdx < GABOR_ANGLE_NUM; angleIdx++) { Mat re,im; copyMakeBorder(m_gabor.m_gaborReKernel[scaleIdx][angleIdx], re, 0,freqksize-m_gabor.m_gaborReKernel[scaleIdx][angleIdx].rows, 0, freqksize-m_gabor.m_gaborReKernel[scaleIdx][angleIdx].cols, BORDER_CONSTANT, Scalar::all(0)); copyMakeBorder(m_gabor.m_gaborImgKernel[scaleIdx][angleIdx], im, 0,freqksize-m_gabor.m_gaborImgKernel[scaleIdx][angleIdx].rows, 0, freqksize-m_gabor.m_gaborImgKernel[scaleIdx][angleIdx].cols, BORDER_CONSTANT, Scalar::all(0)); Mat planes[]={re, im}; merge(planes, 2, mergecomplexkernel); dft(mergecomplexkernel,m_gaborFreqKernel[scaleIdx][angleIdx], DFT_COMPLEX_OUTPUT); } } return true; }
对于FERET的一个原80*80像素FERET-001\01.tif的人脸处理前后如下由此频域核即可实施对标准化后的脸进行在频域滤波了(先dft,再mulSpectrums,代码略)
前:100*100
得到的GaborFace如下,
其中每行表示8个方向, 每列2个一组,一共5组表示5个尺度. 每组里面的2个上面是使用频域滤波的结果,下面是简单filter2D的结果
相关推荐
在Pytorch中,可以构建神经网络模型来学习如何在辐射场中嵌入和提取水印。通过训练,模型可以学习到如何在保持图像质量的同时,巧妙地隐藏和保护水印信息。文件列表中的"cvpr2024_WateRF-main"可能包含了相关的代码...
【标题】"RestoreFormer"是2022年在计算机视觉领域知名会议CVPR上发表的一项研究工作,专注于人脸恢复技术。该技术尤其关注在无监督的条件下,如何实现高质量的盲人脸修复,即在没有原始参考图像的情况下,恢复低...
4. **Image Processing**:图像处理是计算机视觉的基础,包括图像增强、去噪、特征提取等。在这些代码中,可能会用到OpenCV、PIL等库进行图像预处理,以提高后续算法的性能。 5. **Object Detection**:目标检测是...
- 人脸识别与生物特征 - 跨媒体分析与检索等 #### CVPR 2020 - **时间**:2020年6月14日至6月19日 - **形式**:线上会议 - **主要议题**: - 人工智能伦理与安全 - 视觉语言融合 - 计算机视觉与机器人技术 - ...
CVPR 2018笔记以下是我在大会期间遇到的最有趣的论文,挑战和研讨会的链接,注释和想法。 但是,您可能希望通过回顾所有979篇被接受的论文并逐步浏览所有21个教程和48个研讨会的内容,来形成自己对计算机视觉和模式...
5. **扩展性**:支持添加自定义的特征提取器、描述符、匹配器和优化器,以适应不同的任务和数据集。 6. **并行处理**:利用多核CPU和GPU资源,OpenSfM能够有效地处理大量图像,缩短计算时间。 【应用场景】 ...
CVPR2021-代码 论文开源项目(带代码的文件)合集!CVPR 2021论文收录列表: : 注1:等2021年2月28日开奖后,欢迎各位大佬提交issue,分享CVPR 2021本文和开源项目! 注2:CVPR 2021已交稿成立!已投稿且想要进来的...
2. **深度学习架构**:可能使用了卷积神经网络(CNN)或者Transformer等先进的网络结构,以提取图像特征并进行曲线拟合。 3. **数据预处理**:包括图像增强、灰度化、直方图均衡化等步骤,以提高模型对不同光照和...
标题中的"C:\Users\西邮吴彦祖\Desktop\文件转换.rar"表明这是一个RAR格式的压缩文件,位于用户“西邮吴彦祖”的桌面,命名为“文件转换”。这通常意味着里面包含的是与文件处理或转换相关的数据。...
git clone https://github.com/YueJiang-nj/CVPR2020-SDFDiff.git 使用virtualenv或conda安装需求: # pip source virtual_env/install_pip.sh # conda source virtual_env/install_conda.sh 介绍
如我们的CVPR 2020出版物( )中所建议,该存储库包含用于对基于排名的深度度量学习方法运行策略适应性否定采样的代码。 SAMPLE_RUNS.sh中列出了可以达到与本文报告相似的结果的示例运行,因为基于RL的方法引入了更...
【标题】"matlab中存档算法代码-FSF_CVPR2017_Demo:带运动分割的快速多帧立体声场景流演示(CVPR2017)"涉及的知识点主要集中在计算机视觉(Computer Vision)领域,尤其是立体视觉(Stereo Vision)、场景流(Scene...
Deep Learning Methods for Vision CVPR 2012 Tutorial 9:00am-5:30pm, Sunday June 17th, Ballroom D (Full day)
CVPR2018_attention 用于语义分割的上下文编码MegaDepth:从互联网照片中学习单视图深度预测LiteFlowNet:用于光流估计的轻量级卷积神经网络PWC-Net:使用金字塔,翘曲和成本量的光流CNN 语义分割模型对对抗攻击的...
2 SiamRPN-CVPR2018:High Performance Visual Tracking with Siamese Region Proposal Network.pdf 3 DaSiamRPN-ECCV2018:Distractor-aware Siamese Networks for Visual Object Tracking.pdf 4 SiamRPN++-CVPR...
CVPR16-深位 使用无监督的深度神经网络学习紧凑型二进制描述符 由林凯文,陆继文,陈楚松,周杰创建 介绍 我们提出了一种新的无监督深度学习方法来学习紧凑的二进制描述符。 我们对在网络顶层学习的二进制代码执行三...
《DeepOIS:陀螺仪引导的深光学图像稳定器补偿》是2021年在计算机视觉领域知名会议CVPR上发表的一项研究成果。这项工作主要聚焦于解决移动设备(如智能手机、无人机等)在拍摄时由于运动引起的图像模糊问题。光学...
然而,实际数据往往呈现出长尾分布,即一部分类别的样本数量远远超过其他类别,这种现象在CVPR2020年的一篇论文《Deep Representation Learning on Long-tailed Data: A Learnable Embedding Augmentation ...
CVPR2020内存汇聚网络可实现高效的交互式视频对象分段这是CVPR2020论文“用于有效的交互式视频对象分段的内存聚合网络”的pytorch实施。准备依存关系Python 3.7 火炬1.0 脾气暴躁的张量板davisinteractive(请参阅)...