IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 二维Gabor 滤波加速 -> 正文阅读

[人工智能]二维Gabor 滤波加速

以下内容原创首发,如需转载请注明来源!

实验题目:

选取5个尺度,36个方向共180个二维模板对一幅图像分别做二维卷积,得到180幅滤波结果图像,以此作为基准Gabor滤波结果。由于这个基准算法处理速度很慢,故请试着对该方法进行改进,改进方法在要求得到同样180个卷积的结果图像的前提下,尽量提高其处理速度。

实验算法:

基本算法:

在图像处理中主要应用的是对gabor滤波的实部公式,其表达式如下:
g ( x , y ; λ , θ , ψ , σ , γ ) = e x p ( ? x ′ 2 + γ 2 y ′ 2 2 σ 2 ) c o s ( 2 π x ′ λ + ψ ) ( 1 ) g(x,y;\lambda,\theta,\psi,\sigma,\gamma) = exp(-\frac{x^{\prime2}+\gamma^2y^{\prime2}}{2\sigma^2})cos(2\pi\frac{x^\prime}{\lambda}+\psi) (1) g(x,y;λ,θ,ψ,σ,γ)=exp(?2σ2x2+γ2y2?)cos(2πλx?+ψ)(1)
其中 x ′ = x c o s θ + y s i n θ ; y ′ = ? x s i n θ + y c o s θ x^{\prime}=xcos{\theta}+ysin{\theta};y^\prime=-xsin{\theta}+ycos{\theta} x=xcosθ+ysinθ;y=?xsinθ+ycosθ
上述公式的常规代码实现为二重循环,对于每一项计算的时间复杂度均为 O ( n 2 ) O(n^2) O(n2),当其kernel取值较大时,计算效率较低。本实验主要通过对公式的正交与非正交两种方法进行分解,使其复杂乘方的计算时间复杂度仅为O(2n),仅需执行 O ( n 2 ) O(n^2) O(n2)次的乘法与加法运算即可。

具体步骤:

(1)式的计算复杂度主要体现在幂方运算上,且 x ′ 与 y ′ x^\prime与y^\prime xy分别与x,y都相关,所以无法直接分解计算,即对 x ′ 与 y ′ x^\prime与y^\prime xy的计算必须使用二重循环,这样无疑提升了时间复杂度。因此,如果能够实现对(1)式的分解,使用数组存储x与y的n次计算结果,再在最后进行赋值就可以降低时间复杂度;下文提供正交与非正交两种方法进行分解。
正交分解:
观 察 ( 1 ) 式 , 当 γ = 1 时 , x ′ 2 + γ 2 y ′ 2 = x 2 + y 2 观察(1)式,当\gamma=1时,x^{\prime2}+\gamma^2y^{\prime2}=x^2+y^2 (1)γ=1x2+γ2y2=x2+y2,此时即可以对(1)式进行正交分解:

g ( x , y ; λ , θ , ψ , σ , γ ) = e x p ( ? x 2 + y 2 2 σ 2 ) c o s ( 2 π x ′ λ + ψ ) g(x,y;\lambda,\theta,\psi,\sigma,\gamma)=exp(-\frac{x^2+y^2}{2\sigma^2})cos(2\pi\frac{x^\prime}{\lambda}+\psi) g(x,y;λ,θ,ψ,σ,γ)=exp(?2σ2x2+y2?)cos(2πλx?+ψ)

x ′ x^\prime x展开,可得(由于 ψ \psi ψ是常数,为方便公式推导,这里取0):

g ( x , y ; λ , θ , ψ , σ , γ ) = e x p ( ? x 2 + y 2 2 σ 2 ) c o s ( 2 π λ ( x c o s θ + y s i n θ ) ) g(x,y;\lambda,\theta,\psi,\sigma,\gamma)=exp(-\frac{x^2+y^2}{2\sigma^2})cos(\frac{2\pi}{\lambda}(xcos\theta+ysin\theta)) g(x,y;λ,θ,ψ,σ,γ)=exp(?2σ2x2+y2?)cos(λ2π?(xcosθ+ysinθ))

继续展开可得:

e x p ( ? x 2 2 σ 2 ) e x p ( ? y 2 2 σ 2 ) ( c o s ( 2 π λ x c o s θ ) c o s ( 2 π λ y s i n θ ) ? s i n ( 2 π λ x c o s θ ) s i n ( 2 π λ y s i n θ ) ) exp\left(-\frac{x^2}{2\sigma^2}\right)exp\left(-\frac{y^2}{2\sigma^2}\right)\left(cos{\left(\frac{2\pi}{\lambda}xcos\theta\right)}cos\left(\frac{2\pi}{\lambda}ysin\theta\right)-sin\left(\frac{2\pi}{\lambda}xcos\theta\right)sin\left(\frac{2\pi}{\lambda}ysin\theta\right)\right) exp(?2σ2x2?)exp(?2σ2y2?)(cos(λ2π?xcosθ)cos(λ2π?ysinθ)?sin(λ2π?xcosθ)sin(λ2π?ysinθ))

对x,y分别构造函数有:

f 1 ( x ) = e x p ( ? x 2 2 σ 2 ) cos ? ( 2 π λ x c o s θ ) ; f 2 ( x ) = e x p ( ? x 2 2 σ 2 ) sin ? ( 2 π λ x c o s θ ) f_1\left(x\right)=exp\left(-\frac{x^2}{2\sigma^2}\right)\cos{\left(\frac{2\pi}{\lambda}xcos\theta\right)};f_2\left(x\right)=exp\left(-\frac{x^2}{2\sigma^2}\right)\sin{\left(\frac{2\pi}{\lambda}xcos\theta\right)} f1?(x)=exp(?2σ2x2?)cos(λ2π?xcosθ);f2?(x)=exp(?2σ2x2?)sin(λ2π?xcosθ)
g 1 ( y ) = ? e x p ( ? y 2 2 σ 2 ) c o s ( 2 π λ y s i n θ ) ; g 2 ( y ) = ? e x p ( ? y 2 2 σ 2 ) s i n ( 2 π λ y s i n θ ) g_1\left(y\right)=\ exp\left(-\frac{y^2}{2\sigma^2}\right)cos\left(\frac{2\pi}{\lambda}ysin\theta\right);g_2\left(y\right)=\ exp\left(-\frac{y^2}{2\sigma^2}\right)sin\left(\frac{2\pi}{\lambda}ysin\theta\right) g1?(y)=?exp(?2σ2y2?)cos(λ2π?ysinθ);g2?(y)=?exp(?2σ2y2?)sin(λ2π?ysinθ)

则gabor核的计算公式可化为:

k ( x , ? y ) = f 1 ( x ) g 1 ( y ) ? f 2 ( x ) g 2 ( y ) k(x,\ y)=f_1\left(x\right)g_1\left(y\right)-f_2\left(x\right)g_2\left(y\right) k(x,?y)=f1?(x)g1?(y)?f2?(x)g2?(y)

伪代码:

for x in kernel_size:
	f1(x),f2(x)
for y in kernel_size:
	g1(y),g2(y)
for x in kernel_size:
	for y in kernel_size:
		k(x,y)=f1(x)g1(y)-f2(x)g2(y)

此时,复杂的幂方与三角函数的计算只需进行O(n)次,而简单的乘法与加法运算才需进行 O ( n 2 ) O(n^2) O(n2)次。
非正交分解:
上述分解仅适用于 γ = 1 \gamma=1 γ=1,对于 γ \gamma γ任意取值的更普遍情况,实验使用非正交分解。对,分别沿着 x , , y , x^,{,y}^, x,,y,与直线 t : y ? x t a n α = 0 t:y-xtan\alpha=0 t:y?xtanα=0进行分解,得到坐标变换 x → x + c o s α ; y → t t a n α x\rightarrow x+cos\alpha;y\rightarrow ttan\alpha xx+cosα;yttanα与新元表示 σ x = 1 c o s θ 2 + s i n θ 2 γ 2 ; σ t = σ c o s θ 2 γ 2 + s i n θ 2 ; α = a r c t a n ( c o s θ 2 γ 2 + s i n θ 2 ( 1 ? 1 r 2 ) c o s θ s i n θ ) \sigma_x=\frac{1}{{cos\theta}^2+{sin\theta}^2\gamma^2};\sigma_t=\sigma\sqrt{\frac{{cos\theta}^2}{\gamma^2}+{sin\theta}^2};\alpha=arctan(\frac{\frac{{cos\theta}^2}{\gamma^2}+{sin\theta}^2}{(1-\frac{1}{r^2})cos\theta sin\theta}) σx?=cosθ2+sinθ2γ21?;σt?=σγ2cosθ2?+sinθ2 ?;α=arctan((1?r21?)cosθsinθγ2cosθ2?+sinθ2?)将上述变换及新元表达式带入(1)式分解得:

f 1 ( x ) = e x p ( ? x 2 2 σ x 2 ) cos ? ( 2 π λ x c o s θ ) ; f 2 ( x ) = e x p ( ? x 2 2 σ x 2 ) sin ? ( 2 π λ x c o s θ ) f_1\left(x\right)=exp\left(-\frac{x^2}{2{\sigma_x}^2}\right)\cos{\left(\frac{2\pi}{\lambda}xcos\theta\right)};f_2\left(x\right)=exp\left(-\frac{x^2}{2{\sigma_x}^2}\right)\sin{\left(\frac{2\pi}{\lambda}xcos\theta\right)} f1?(x)=exp(?2σx?2x2?)cos(λ2π?xcosθ);f2?(x)=exp(?2σx?2x2?)sin(λ2π?xcosθ)

g 1 ( t ) = ? e x p ( ? t 2 2 σ t 2 ) c o s ( 2 π λ t c o s ( θ ? α ) ) ; g 2 ( t ) = ? e x p ( ? t 2 2 σ t 2 ) s i n ( 2 π λ t c o s ( θ ? α ) ) g_1\left(t\right)=\ exp\left(-\frac{t^2}{2{\sigma_t}^2}\right)cos\left(\frac{2\pi}{\lambda}tcos(\theta-\alpha)\right);g_2\left(t\right)=\ exp\left(-\frac{t^2}{2{\sigma_t}^2}\right)sin\left(\frac{2\pi}{\lambda}tcos(\theta-\alpha)\right) g1?(t)=?exp(?2σt?2t2?)cos(λ2π?tcos(θ?α));g2?(t)=?exp(?2σt?2t2?)sin(λ2π?tcos(θ?α))

则gabor核的计算公式可化为:
k ( x , ? y ) = f 1 ( x ) g 1 ( t ) ? f 2 ( x ) g 2 ( t ) k(x,\ y)=f_1\left(x\right)g_1\left(t\right)-f_2\left(x\right)g_2\left(t\right) k(x,?y)=f1?(x)g1?(t)?f2?(x)g2?(t)

实验结果:

实 验 选 取 的 5 个 尺 度 为 [ 3 , 11 , 33 , 77 , 111 ] , 36 个 方 向 为 ( s t a r t = 0 , e n d = π , s t r i d e = π / 36 ) , 滤 波 参 数 为 : λ = π / 2 ; γ = 1 ; ψ = 0 。 样 例 图 片 的 大 小 为 ( h e i g h t = 675 , w i d t h = 1200 ) , 经 过 10 次 实 验 三 种 滤 波 方 式 的 平 均 时 间 花 费 如 下 : 实验选取的5个尺度为[3, 11, 33, 77, 111],36个方向为(start = 0, end = \pi, stride = \pi/36),滤波参数为:\lambda=\pi/2;\gamma=1;\psi=0。样例图片的大小为(height = 675, width = 1200),经过10次实验三种滤波方式的平均时间花费如下: 5[3,11,33,77,111]36(start=0,end=π,stride=π/36)λ=π/2;γ=1;ψ=0(height=675,width=1200)10

加速方式花费时间(s)
无加速11.076
正交分解加速3.153
非正交分解加速3.129

python代码实现:

如有需要请留言邮箱。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:17:23  更:2022-02-24 15:17:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 19:31:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码