gpt4 book ai didi

matlab - 使用 Gabor 滤波器进行图像处理

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:00 29 4
gpt4 key购买 nike

我正在尝试对图像执行 gabor 过滤器。

%% Read

clear all;
close all;
clc;
I=imread('test.png');
imshow(I);

%% Crop
I2 = imcrop(I);
figure, imshow(I2)
m=size(I2,1);
n=size(I2,2);
%% Gabor
phi = 7*pi/8;
theta = 2;
sigma = 0.65*theta;
for i=1:3
for j=1:3
xprime= j*cos(phi);
yprime= i*sin(phi);
K = exp(2*pi*theta*i(xprime+ yprime));
G= exp(-(i.^2+j.^2)/(sigma^2)).*abs(K);
end
end

%% Convolve

for i=1:m
for j=1:n
J(i,j)=conv2(I2,G);
end
end
imshow(uint8(J))

我总是收到这个错误。

??? Subscript indices must either be real positive integers or logicals.

不确定如何解决这个... enter image description here

enter image description here

最佳答案

您在 K = exp(2*pi*theta*i(xprime+ yprime)); 中缺少一个 *i 和括号。你喜欢的应该是 K = exp(2*pi*theta*i*(xprime+ yprime));。正是因为这种情况,Mathworks 建议使用 sqrt(-1) 作为虚数。

更新:在 Matlab 中做卷积不需要循环。你只需说 J=conv2(I2,G);

更新 2:

这是工作代码

%% Gabor
phi = 7*pi/8;
theta = 2;
sigma = 0.65*theta;
filterSize = 6;

G = zeros(filterSize);


for i=(0:filterSize-1)/filterSize
for j=(0:filterSize-/filterSize
xprime= j*cos(phi);
yprime= i*sin(phi);
K = exp(2*pi*theta*sqrt(-1)*(xprime+ yprime));
G(round((i+1)*filterSize),round((j+1)*filterSize)) = exp(-(i^2+j^2)/(sigma^2))*K;
end
end

%% Convolve

J = conv2(I2,G);
imshow(imag(J));

关于matlab - 使用 Gabor 滤波器进行图像处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7419409/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com