我刚开始使用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º)。然而,当我在一定方向上对齐信号的“条纹”或“管”时,返回的值是根据我的解释信号的最高变化之一(条纹与背景),从而垂直于条纹的方向。这不是我需要的。
我真正需要的是一个返回信号条纹方向的脚本。
我希望我足够清楚。请不要犹豫与我联系,向我提出更多问题。
许多人非常感谢!!!!!!!!!!!
一切顺利,
涓.-