如何在Matlab中分析方向性(如斐济工具)? Imgradient功能不起作用

时间:2013-11-27 16:40:21

标签: image-processing matlab

我刚开始使用Matlab,如果我的错误是“愚蠢的”,请提前抱歉。 我的目标是能够分析灰度(8位)图像中的管/纤维/条纹的方向。示例:见图:

http://www.mediachance.com/dvdlab/helppro2/transitionbmp.jpg

当我使用Fiji Directionality Tool时,返回的信号方向为:0º,这是一个预期值(仅取0º到180º的范围)。

我试图写的剧本应该会导致我在斐济获得的剧本。 为此,我使用了Matlab图像处理工具箱(2013)中的imgradient函数。

这是脚本:

enter code here

clear all;
close all;
p = 0;

a = imread('image.tif');

%Apply the imgradient function

[M D] = imgradient(a);
[r c] = size(a);

%Given that I get directions in [-180 to 180] I transform the negatives in the      corresponding positives (e.g.: -45 = 135)

for x = 1 : c;
for y = 1 : r;
    if D(x,y) < 0;
        d_nonnegatives(x,y) = D(x,y) + 180;
    else
        d_nonnegatives(x,y) = D(x,y);
    end;
end;
end;

% Prepare the date to make the graphs

for x = 1 : c;
for y = 1 : r;
p = p + 1;
d_list(p) = d_nonnegatives(x,y);   
end;
end;

d_list_transposed = d_list';
d_list_sorted = sortrows(d_list_transposed);
binrange = [0:10:180];
[N bins] = histc(d_list_sorted,binrange);

%Make figures

figure, imshow(D), title('Image Direction Matrix')
figure, hist(d_list_sorted,binrange), title('Amount of Pixels vs Direction: Negative      values converted to positive');
figure, hist(D), title('Amount of Pixels vs Direction: Values non-converted to positive');

我从上一个直方图中得到的结果:“像素数与方向数:未转换为正数的值”为:约90ºC。这个值垂直于我应该得到的值,正如我之前提到的那样,0ºC(斐济方向性工具)。

然而,使用这个脚本,当我分析的图片很简单时,我可以得到正确的方向。 如下面的链接:

http://www.wuphonsreach.org/Games/SimCity4/HbgPA/24x16_GradientHeighMap.png

在这种情况下,脚本返回我预期的方向(斐济= Matlab脚本=90º)。然而,当我在一定方向上对齐信号的“条纹”或“管”时,返回的值是根据我的解释信号的最高变化之一(条纹与背景),从而垂直于条纹的方向。这不是我需要的。

我真正需要的是一个返回信号条纹方向的脚本。

我希望我足够清楚。请不要犹豫与我联系,向我提出更多问题。

许多人非常感谢!!!!!!!!!!!

一切顺利,

涓.-

0 个答案:

没有答案