首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gabor滤波器在图像中的应用

gabor滤波器在图像中的应用
EN

Stack Overflow用户
提问于 2013-11-06 10:07:12
回答 2查看 7.1K关注 0票数 3

我对图像处理非常陌生,我想知道如何在12种不同方向的图像上应用gabor滤波器,比如0,15,30,45到165。我想将这个gabor滤波器应用于12个方向,每个方向的输出必须是displayed.My,输入是视网膜图像,方向输出应该是经过filter.How调整后的视网膜图像。

代码语言:javascript
复制
 %code for gabor filter                
 I = getimage();         
 I=I(:,:,2);    
 lambda  = 8;    
theta   = 0;    
psi     = [0 pi/2];    
gamma   = 0.5;    
 bw      = 1;    
 N       = 12;    
img_in = im2double(I);    
%img_in(:,:,2:3) = [];  % discard redundant channels, it's gray anyway    
 img_out = zeros(size(img_in,1), size(img_in,2), N);        
 for n=1:N         
        gb = gabor_fn(bw,gamma,psi(1),lambda,theta)...          
         + 1i * gabor_fn(bw,gamma,psi(2),lambda,theta);     
         % gb is the n-th gabor filter         
         img_out(:,:,n) = imfilter(img_in, gb, 'symmetric');          
        % filter output to the n-th channel       
        %theta = theta + 2*pi/N;          
        theta = 15 * n;   % i wrote this because my angles are multiples of 15       
        % next orientation           
 end 

 figure(1);           
 imshow(img_in);                  
 title('input image');                    
 figure(2);            
 img_out_disp = sum(abs(img_out).^2, 3).^0.5;        
 %default superposition method, L2-norm        
 img_out_disp = img_out_disp./max(img_out_disp(:));           
 % normalize        
 imshow(img_out_disp);         
 title('gabor output, L-2 super-imposed, normalized');        

我的输入图像是

我的输出图像是

如何应用gabor滤波器将图像定向到12个不同的方向

我应该得到一个输出的视网膜图像,但我得到我的输出图像为

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-06 10:52:41

您应该添加这两行:

代码语言:javascript
复制
...
% gb is the n-th gabor filter 
img_out(:,:,n) = imfilter(img_in, gb, 'symmetric');   
figure;
imshow(img_out(:,:,n));
...  
票数 2
EN

Stack Overflow用户

发布于 2015-10-28 20:55:25

我从你的问题中了解到,你想用gabor滤波器12次,每次用指定的方向(θ),对吗?要做到这一点-->在循环之前--写这个-->.

代码语言:javascript
复制
responses = {}; % to save each response from filter.

在过滤你的图像之后,像这样旋转-->

..。

代码语言:javascript
复制
response =  conv2(img_in,gb,'same'); 

..。

然后让你的振幅像这样->.

代码语言:javascript
复制
realpart = real(response);
imagpart = imag(response);
response = sqrt(realpart.^2 + imagpart.^2);

..。

将--> img_out(:,:,n)替换为->

..。

代码语言:javascript
复制
responses = cat(1,responses,response);

此代码将将您的响应从每个过滤器保存到一个单元格中,如果您希望看到响应,只需执行以下操作.

代码语言:javascript
复制
X = responses{1}; % or 2 or 3...

此链接将提供有关gabor过滤器params.html的更好信息。

希望这能帮到你。最好的尊重。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19809156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档