如何在空间和频率域中的每个尺度和方向创建 64 个 Gabor 特征

2023-11-25

通常,Gabor 滤波器,顾名思义,用于过滤图像并提取与过滤方向相同的所有内容。

在这个问题中,您可以看到比此中编写的代码更有效的代码Link

假设 4 个方向上有 16 个尺度的滤波器,因此我们得到 64 个 gabor 滤波器。

scales=[7:2:37],7x7 到 37x37 以两个像素为步长,所以我们有 7x7, 9x9, 11x11, 13x13, 15x15, 17x17, 19x19, 21x21, 23x23, 25x25, 27x27, 29x29, 31x31, 33 x33, 35x35 和 37x37。

方向=[0, pi/4, pi/2, 3pi/4]。

Gabor滤波器在空间域的方程为:

enter image description here

The equation of Gabor filter in the frequency domain is: enter image description here


在空间域中:

function [fSiz,filters,c1OL,numSimpleFilters] = init_gabor(rot, RF_siz)    

    image=imread('xxx.jpg');
    image_gray=rgb2gray(image);
    image_gray=imresize(image_gray, [100 100]);
    image_double=double(image_gray);

    rot = [0 45 90 135]; % we have four orientations
                RF_siz    = [7:2:37]; %we get 16 scales (7x7 to 37x37 in steps of two pixels)
                minFS     = 7; % the minimum receptive field
                maxFS     = 37; % the maximum receptive field
                sigma  = 0.0036*RF_siz.^2 + 0.35*RF_siz + 0.18; %define the equation of effective width
                lambda = sigma/0.8; % it the equation of wavelength (lambda)
                G      = 0.3;   % spatial aspect ratio: 0.23 < gamma < 0.92


                numFilterSizes   = length(RF_siz); % we get 16

                numSimpleFilters = length(rot); % we get 4

                numFilters       = numFilterSizes*numSimpleFilters; % we get 16x4 = 64 filters

                fSiz             = zeros(numFilters,1); % It is a vector of size numFilters where each cell contains the size of the filter (7,7,7,7,9,9,9,9,11,11,11,11,......,37,37,37,37)

                filters          = zeros(max(RF_siz)^2,numFilters); % Matrix of Gabor filters of size %max_fSiz x num_filters, where max_fSiz is the length of the largest filter and num_filters the total number of filters. Column j of filters matrix contains a n_jxn_j filter (reshaped as a column vector and padded with zeros).




            for k = 1:numFilterSizes  
                for r = 1:numSimpleFilters
                    theta     = rot(r)*pi/180; % so we get 0, pi/4, pi/2, 3pi/4
                    filtSize  = RF_siz(k); 
                    center    = ceil(filtSize/2);
                    filtSizeL = center-1;
                    filtSizeR = filtSize-filtSizeL-1;
                    sigmaq    = sigma(k)^2;

                    for i = -filtSizeL:filtSizeR
                        for j = -filtSizeL:filtSizeR

                            if ( sqrt(i^2+j^2)>filtSize/2 )
                                E = 0;
                            else
                                x = i*cos(theta) - j*sin(theta);
                                y = i*sin(theta) + j*cos(theta);
                                E = exp(-(x^2+G^2*y^2)/(2*sigmaq))*cos(2*pi*x/lambda(k));
                            end
                            f(j+center,i+center) = E;
                        end
                    end

                    f = f - mean(mean(f));
                    f = f ./ sqrt(sum(sum(f.^2)));
                    p = numSimpleFilters*(k-1) + r;
                    filters(1:filtSize^2,p)=reshape(f,filtSize^2,1);
                    fSiz(p)=filtSize;
                end
            end

            % Rebuild all filters (of all sizes)

            nFilts = length(fSiz);
            for i = 1:nFilts
              sqfilter{i} = reshape(filters(1:(fSiz(i)^2),i),fSiz(i),fSiz(i));

            %if you will use conv2 to convolve an image with this gabor, so you should also add the equation below. But if you will use imfilter instead of conv2, so do not add the equation below.

                    sqfilter{i} = sqfilter{i}(end:-1:1,end:-1:1); %flip in order to use conv2 instead of imfilter (%bug_fix 6/28/2007);

    convv=imfilter(image_double, sqfilter{i}, 'same', 'conv');
    figure;

        imagesc(convv);
        colormap(gray);

                      end 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在空间和频率域中的每个尺度和方向创建 64 个 Gabor 特征 的相关文章

  • 训练 tesseract 与 iPhone 一起使用

    我正在尝试在我的 iPhone 应用程序中使用 tesseract 2 04 只想检测数字 我在这里所做的首先是使用这篇文章交叉编译 tesseract 以生成 lib 文件http robertcarlsen net 2009 07 15
  • 将值从 C++ MEX 文件返回到 MATLAB

    我正在编写一个从 C 代码中检索数据的 MATLAB 程序 为此 我在 MATLAB 中创建了一个 MEX 文件和一个网关 mexFunction 虽然可以在 MATLAB 中读取读取值 但我无法检索它来使用它 如果不清楚 我有与这里完全相
  • 计算向量的导数

    我有以下函数 维维亚尼曲线 Phi t cos t 2 cos t sin t sin t 只需检查它是否有效 s linspace 0 T 1000 plot3 cos s 2 cos s sin s sin s 如何推导函数Phi 可能
  • MATLAB 问题中的 Parfor

    为什么我不能使用parfor在这段代码中 parfor i 1 r for j 1 N r xr j N r i 1 x i r j 1 end end 这是错误 错误 parfor 中的变量 xr 无法分类 请参阅 MATLAB 中的并行
  • 在 numpy/scipy 中查找 matlab 函数

    是否有一个等价的函数find A gt 9 1 来自 numpy scipy 的 matlab 我知道有nonzeronumpy 中的函数 但我需要的是第一个索引 以便我可以在另一个提取的列中使用第一个索引 Ex A 1 2 3 9 6 4
  • 如何使用PHP在服务器端缩小图像?

    我有一些从服务器提取的图像 imgUrl保存图像的路径 现在我用 img src width 100 height 200 或 CSS 来缩小图像 但我想在 PHP 中执行此操作 以便将已缩放的图像提供给 DOM 有任何想法吗 Thanks
  • MATLAB 符号替换

    我知道在 MATLAB 中如果声明了 syms x y f x 2 y 2 grad gradient f 然后grad会存储值 2 x 2 y 如果我想评估梯度 2 2 I use subs f x y 2 2 这返回 4 4 我正在编写
  • Alpha 混合可消除图像中的接缝

    我缝合了两张图像 但在最终图像中存在可见的接缝 我正在尝试使用阿尔法混合去除那条接缝 我知道 Alpha 混合是使用cvAddweight 函数 但在此函数参数是两个图像 alpha beta gamma和目的地 我正在服用gamma 0
  • 在 opencv 中一次性将旋转和平移结合起来

    我有一段用于旋转和平移图像的代码 Point2f pt 0 in rows double angle atan trans c trans b 180 M PI Mat r getRotationMatrix2D pt angle 1 0
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • MATLAB 图形渲染:OpenGL 与 Painters?

    当谈到使用哪个渲染器来处理 MATLAB 图形或何时它很重要时 我一无所知 但我遇到过某些示例 其中does matter plot 0 0 ko markersize 50 linewidth 8 set gcf renderer ope
  • 透视变形矩形的比例

    给定一张被透视扭曲的矩形的二维图片 我知道这个形状原本是一个矩形 但我不知道它原来的大小 如果我知道这张图片中角点的像素坐标 我如何计算原始比例 即矩形的商 宽度 高度 背景 目标是自动使矩形文档的照片不失真 边缘检测可能会通过霍夫变换完成
  • Python:处理图像并保存到文件流

    我需要使用 python 处理图像 应用过滤器和其他转换 然后使用 HTTP 将其提供给用户 现在 我正在使用 BaseHTTPServer 和 PIL 问题是 PIL 无法直接写入文件流 因此我必须写入临时文件 然后读取该文件 以便将其发
  • 使用Python对图像进行反转和平移

    我编写了以下代码来循环遍历文件夹中的所有图像 创建其底片并将其保存在新的相似名称下 我怎样才能做同样的事情来将它们向右平移 5 个像素 Code from PIL import Image import PIL ImageOps impor
  • 如何使用神经网络保存 Sift 特征向量进行分类

    SIFT 特征的 Matlab 实现发现于http www cs ubc ca lowe keypoints http www cs ubc ca lowe keypoints 在 stackoverflow 的帮助下 我想将功能保存到 m
  • 如何在 MATLAB 的 for 循环中读取多个图像?

    我已将结果分段放在一个文件夹中 这些需要在 for 循环中读取并在循环中进一步处理 我尝试阅读如下 for i 1 10 file name dir strcat C Users adminp Desktop dinosaurs im im
  • 通过 h5py 将 matlab v7.3 文件读入 python numpy 数组列表

    我知道以前已经有人问过这个问题 但在我看来 仍然没有答案可以解释正在发生的事情 并且不适用于我的情况 我有一个 matlab v7 3 文件 其结构如下 gt rank lt 1x454 cell gt gt each element is
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • 使用决策树

    我知道 tl dr 我将尝试解释我的问题 而不会用大量蹩脚的代码来打扰您 我正在做一项学校作业 我们有蓝精灵的图片 我们必须通过前景背景分析来找到它们 我有一个 Java 决策树 其中包含所有数据 HSV 直方图 1 一个节点 然后尝试找到
  • 在 .NET 中旋转 JPEG,质量损失最小

    我正在尝试支持从 ASP NET MVC 旋转 JPEG 图像 以 90 度增量 我正在尝试使用System Drawing GDI 但是我遇到了问题 我尝试使用Image RotateFlip http msdn microsoft co

随机推荐

  • R 中带有 data.table 的交叉表[重复]

    这个问题在这里已经有答案了 我喜欢 R 中的 data table 包 我认为它可以帮助我执行复杂的交叉制表任务 但还没有弄清楚如何使用该包来执行类似的任务table 以下是一些重复调查数据 opinion lt c gov market
  • 为什么调用该函数? JavaScript / 窗口

    我的 HTML 文件中有以下代码
  • 在自定义/用户控件 (Winforms) 中添加对嵌套容器的设计时支持

    我有类似于向导控件的东西 中间是一个我想用来放置任何子控件的面板 我发现使用 ScrollableControlDesigner 将允许将删除的控件添加到自定义 用户控件中 但这不是我所需要的 它需要添加到容器中 以便可以应用布局而不影响
  • 使用 re.sub 和多次替换仅替换捕获的组

    下面只是我创建的一个简单示例 string I love sleeping I love singing I love dancing pattern re compile r I love w 我只想用 re sub 替换 w 部分 这个
  • C# 基类方法使用的成员变量重写

    好吧 我承认这有点奇怪 但它确实有一个合乎逻辑的目的 我在当前项目中使用 C 并试图找到一种方法来重写派生类中的成员变量 但在基类方法中访问被重写的变量 为了让事情变得更 有趣 如果重写的成员变量是静态的 这在下面的示例代码中没有显示 那就
  • Delphi中简单的读/写记录.dat文件

    由于某种原因 即使我昨天使用过 我的 OpenID 帐户也不再存在 但不管怎么说 我需要将记录数据保存到 dat 文件中 我尝试了很多搜索 但都是与数据库和BLOB的东西有关 我无法从中构建任何东西 我有以下记录 type Scores r
  • Cassandra 中的 IN 关系对查询不利吗?

    给出 CQL 中以下选择的示例 SELECT FROM tickets WHERE ID IN 1 2 3 4 给定 ID 是分区键 使用 IN 关系比执行多个查询更好还是没有区别 我记得不久前在 Cassandra 用户邮件列表中看到有人
  • Python argparse --toggle --no-toggle 标志

    有没有简单直接的使用方法 toggle and no togglePython 的 argparse 的标志 现在我正在使用类似于以下内容的东西 import argparse parser argparse ArgumentParser
  • for循环条件下方法调用的效率

    我正在编写一个游戏引擎 其中一组对象保存在一个ArrayList使用 for 循环进行迭代 显然 效率相当重要 所以我想知道循环的效率 for String extension assetLoader getSupportedExtensi
  • React 高阶组件强制重新渲染包装组件

    我正在努力了解如何在高阶组件中正确实现此验证行为 编辑 TLDR 感谢用户 noa dev 的出色建议 我在这里创建了一个 React Fiddle https jsfiddle net 8nLumb74 1 来展示问题 简而言之 为什么我
  • 使用 Google Directions API 问题绘制具有超过 8 个航点的路线图

    我正在尝试绘制具有多个航点的路线图 根据谷歌API 您只能使用8个航点 对于业务开发 您只能使用23个航点 但这不足以绘制准确的旅行地图 我得到了一个值得注意的解决方案链接在这里但没有正常工作 该解决方案在某种程度上存在一个问题 它无法绘制
  • 如何获取eclipse的JDT源码?

    我正在尝试编写一个Eclipse插件 但我发现默认情况下没有源 我在 www eclipse org 上搜索 但没有找到任何东西 我的日食是3 6 2 哪里可以得到JDT的源码 似乎在最新版本的 Eclipse 至少是 Juno 和 Kep
  • Solr - 不区分大小写的搜索不起作用

    我想对字段应用不区分大小写的搜索myfield在 solr 中 我用谷歌搜索了一下 我发现我需要申请LowerCaseFilterFactory字段类型和字段应该是solr TextFeild 我将其应用到我的schema xml并重新索引
  • 在 matlab exe 中使用标准 io 流:stdin 和 stdout

    Question 我希望它能够 监听 正在运行 已编译 的 Matlab 可执行文件中的标准输入流 我相信这就是完成的方式c或类似的语言 include stdio h fgets line 256 stdin 或者更详细地说 它可以这样使
  • std::bind 类内部的静态成员函数

    我正在尝试存储一个函数以便稍后调用 这是一个片段 这工作正常 void RandomClass aFunc int param1 int param2 double param3 bool isQueued false If some co
  • Maven 生成实际的 jar 作为 .jar.original 而不是 .jar 文件

    基本上我有一个 Maven 项目 我正在尝试使用生成我的项目的 jarmvn clean compile package通过 spring 工具套件使用下面的 pom xml 执行命令后 我在我的目录中生成了2个jar文件target文件夹
  • Crashlytics iOS - 第 0 行崩溃 - Swift 源

    我目前在某些 Swift 源文件发生崩溃时遇到问题 事实上 在 Crashlytics 上我有一个关于线路和崩溃原因的奇怪信息 它告诉我源已经崩溃了line 0它给了我一个SIGTRAP错误 我读到当线程遇到断点时会发生此错误 但问题是 当
  • System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity 的奇怪问题

    我们正在编写一个系统 允许用户通过 Intranet 上的 Web 应用程序更改其帐户密码 起初 一切似乎都进展顺利 在开发过程中 我们的测试帐户的密码可以毫无问题地更改 然而 当我们让系统上线时 我们开始遇到问题 以下是症状 起初 一切都
  • SQL服务器触发器

    我有一个这样的表结构 create table status master Name varchar 40 status varchar 10 如果状态列值更新值 我需要为状态列创建触发器 如果失败 则触发器调用一个插入命令 例如 inse
  • 如何在空间和频率域中的每个尺度和方向创建 64 个 Gabor 特征

    通常 Gabor 滤波器 顾名思义 用于过滤图像并提取与过滤方向相同的所有内容 在这个问题中 您可以看到比此中编写的代码更有效的代码Link 假设 4 个方向上有 16 个尺度的滤波器 因此我们得到 64 个 gabor 滤波器 scale