【发布时间】:2012-02-14 07:29:42
【问题描述】:
编辑:GABOR FILTER 的描述
% gab2d:**2D Gabor 过滤器** % Gabor 滤波器基本上是一个高斯滤波器,由一个复正弦波调制 % G = gab2d(I,Sx,Sy,f,theta,FUN) % 输入和输出参数([] 是可选的): % I(矩阵)大小为 NxM:输入图像大小为 NxM。 gamma(标量):空间纵横比,x 到 y。 lambda(scalar):正弦函数的波长。 b(标量):空间频率带宽(以八度为单位) theta(标量):gabor 滤波器的方向。 % phi(标量):相位偏移。 0 是 Gabor 滤波器的实部或 % 偶对称,pi/2 是 Gabor 滤波器的虚部或 % 奇对称。 % **笔记**: sigma(标量):Gabor 滤波器或标准的传播 高斯的百分比偏差是根据 lambda 和 b 自动计算的。 % [shape] (strings): conv2 的形状。请参阅帮助 conv2。默认为“相同”。 % % GO(矩阵)大小为 NxM:应用 Gabor 的输出图像 % 过滤器。这是幅度响应。 大小为 (2Sx+1)x(2Sy+1) 的 % [GF](矩阵):Gabor 滤波器。function [GO, GF] = gab2d(I, gamma, lambda, b, theta, phi, shape)
I=imread('C:\Users\Vinay\Documents\MATLAB\textureflawimages\text9.png');
gamma = 1; b = 1; theta = 0:pi/6:pi-pi/6; phi = 0; shape = 'valid'; lambda=8;
if nargin < 7, shape = 'same'; end;
if isa(I, 'double') ~= 1, I = double(I); end
sigma = (1 / pi) * sqrt(log(2)/2) * (2^b+1) / (2^b-1) * lambda;
Sy = sigma * gamma;
for x = -fix(sigma):fix(sigma)
for y = -fix(Sy):fix(Sy)
xp = x * cos(theta) + y * sin(theta);
yp = y * cos(theta) - x * sin(theta);
GF(fix(Sy)+y+1,fix(sigma)+x+1) = ...
exp(-.5*(xp^2+gamma^2*yp^2)/sigma^2) * cos(2*pi*xp/lambda+phi) ...
; %/ (2*pi*(sigma^2/gamma));
% Normalize if you use different sigma (lambda or b)
end
end
GO = conv2(I, double(GF), shape);
错误:
???错误使用 ==> mpower 矩阵必须是正方形。
==> gab2d 中的错误在 36 GF(fix(Sy)+y+1,fix(sigma)+x+1) = ...
我无法纠正这个问题..
请帮忙
【问题讨论】:
-
那是什么语言?另外,是否可以整理格式以使其更具可读性?
标签: image matlab image-processing