Matlab 调谐Gabor滤波器
我试图在嘈杂的垂直堆叠层的图片中找出病态 采用Gabor滤波。对于每一列,我考虑左右两侧各有10个像素的邻域,并使用gabor核对图像部分进行过滤。然后取frobenious范数,这样每列都有一个标量值Matlab 调谐Gabor滤波器,matlab,image-processing,filtering,wavelet,Matlab,Image Processing,Filtering,Wavelet,我试图在嘈杂的垂直堆叠层的图片中找出病态 采用Gabor滤波。对于每一列,我考虑左右两侧各有10个像素的邻域,并使用gabor核对图像部分进行过滤。然后取frobenious范数,这样每列都有一个标量值 下面是我使用下面发布的图片得到的结果。对我来说,0度的响应比45度的响应要高得多,这似乎是违反直觉的 但是理想的效果得到了满足,这意味着我可以声明一个条件,即使用0度的值低于45度的值来命中第300列附近的病理学。 我想是另一种情况,还是我的图像太吵了 因此,我的问题是:当垂直堆叠层的结构被
下面是我使用下面发布的图片得到的结果。对我来说,0度的响应比45度的响应要高得多,这似乎是违反直觉的 但是理想的效果得到了满足,这意味着我可以声明一个条件,即使用0度的值低于45度的值来命中第300列附近的病理学。 我想是另一种情况,还是我的图像太吵了 因此,我的问题是:当垂直堆叠层的结构被破坏时,如何细化参数lambda和gamma以最大化效果?(在图片中间290-320列附近) 当我试图改变参数时,我得到了太多的误报,以至于我无法再分辨 0度的值怎么会比45度的滤波器响应大呢?对我来说,考虑到这一形象,这似乎很奇怪 ================ 这是图片
这是我的密码
windowRadius = 10;
bw = 1;
for k=0:23
theta(k+1)= k*pi/12;
end
psi = [0 pi/2];
lambda = 8; % std value 8
gamma = 0.5; % std value 0.5
for colIndx=1: size(Img,2)
if colIndx-windowRadius < 1
left = 1;
else
left = colIndx - windowRadius;
end
if colIndx+windowRadius > size(Img,2)
right = size(Img,2);
else
right = colIndx + windowRadius;
end
for i=1:length(theta)
gb{i} = gabor_fn(bw,gamma,psi(1),lambda,theta(i)) ...
+ 1i * gabor_fn(bw,gamma,psi(2),lambda,theta(i));
end
gabor_out0deg{colIndx} = imfilter(Img(:, left : right),gb{1},'symmetric');
gabor_out45deg{colIndx} = imfilter(Img(:, left : right),gb{4},'symmetric');
gabor_out90deg{colIndx} = imfilter(Img(:, left : right),gb{7},'symmetric');
gaborFroNorm0deg(colIndx) = norm(gabor_out0deg{colIndx},'fro') / ((right - left) * size(Img,1));
gaborFroNorm45deg(colIndx)= norm(gabor_out45deg{colIndx},'fro') / ((right - left) * size(Img,1));
gaborFroNorm90deg(colIndx)= norm(gabor_out90deg{colIndx},'fro') / ((right - left) * size(Img,1));
end
windowRadius=10;
bw=1;
对于k=0:23
θ(k+1)=k*pi/12;
结束
psi=[0π/2];
λ=8;%标准值8
伽马=0.5;%标准值0.5
对于colIndx=1:大小(Img,2)
如果colIndx窗口半径小于1
左=1;
其他的
左=colIndx-窗口半径;
结束
如果colIndx+windowRadius>大小(Img,2)
右=尺寸(Img,2);
其他的
右=共线x+窗半径;
结束
对于i=1:长度(θ)
gb{i}=gabor_fn(bw,gamma,psi(1),lambda,theta(i))。。。
+1i*gabor_fn(bw,gamma,psi(2),λ,θ(i));
结束
gabor_out0deg{colIndx}=imfilter(Img(:,左:右),gb{1},'symmetric');
gabor_out45deg{colIndx}=imfilter(Img(:,左:右),gb{4},'symmetric');
gabor_out90deg{colIndx}=imfilter(Img(:,左:右),gb{7},'symmetric');
gaborFroNorm0deg(colIndx)=范数(gabor_out0deg{colIndx},'fro')/((右-左)*大小(Img,1));
gaborfrorm45deg(colIndx)=范数(gabor_out 45deg{colIndx},'fro')/((右-左)*大小(Img,1));
gaborFroNorm90deg(colIndx)=范数(gabor_out 90deg{colIndx},'fro')/((右-左)*大小(Img,1));
结束
尝试使用imgaborfilt
:谢谢你的建议,但我仍然不知道高波长是否适合我,以及为什么0度的幅度比45度的幅度大得多。使用sobel滤波器可以得到预期的结果,即0度的幅度是最弱的,但不幸的是,我不需要索贝尔过滤器。