我正在测试各种分割算法以便比较它们的结果。为了做到这一点,我有特定的算法来计算分割过程后每个图像中存在的对象。然后,因为我有一个大的图像数据集,手动注册每个图像分割的所有计数结果值是非常累人的。我正在尝试从matlab实现XLSWRITE函数来自动化该过程,但没有取得多大成功....
我使用的一种分割方法是找到圆圈的霍夫变换,你可以在这里看到代码:
clear all, clc;
a=1:35;
A = arrayfun( @(x) sprintf( '%04d', x ), a, 'UniformOutput', false );
I = cellfun( @(b) imread( ['C:Teste/' b '/c1/' b '.png'] ), A, 'UniformOutput', false );
for i = a
% Gaussian Filter
W = fspecial('gaussian',[10,10],2);
J = imfilter(I,W);
% Finding Circular objects -- Houng Transform
[centers, radii, metric] = imfindcircles(J,[5 10], 'Sensitivity',0.93,'Edge',0.27);
%[radius_parasites]=[5 10] 'Sensitivity',0.93,'Edge',0.27)
%[radius_nucleus]=[10 20] 'Sensitivity',0.87,'Edge',0.27)
idx_mask = ones(size(radii));
min_dist = 2; % relative value.
for i = 2:length(radii)
cur_cent = centers(i, :);
for j = 1:i-1
other_cent = centers(j,:);
x_dist = other_cent(1) - cur_cent(1);
y_dist = other_cent(2) - cur_cent(2);
if sqrt(x_dist^2+y_dist^2) < min_dist*(radii(i) + radii(j)) && idx_mask(j) == 1
idx_mask(i) = 0;
break
end
end
end
idx_mask = logical(idx_mask);
centers_use = centers(idx_mask, :);
radii_use = radii(idx_mask, :);
metric_use = metric(idx_mask, :);
viscircles(centers_use, radii_use,'EdgeColor','b');
a=length(centers_use)
end
所以我想将变量a
保存在一个列中,其中包含我拥有的35个图像的标题单元格(循环每个图像),如下所示:
Results_Al_1
-------------
a1
a2
...
为此,我试图这样做:
filename = 'testdata.xlsx';
A = {'Al_1';'Results of Al 1';a};
sheet = 1;
xlRange = 'B1';
xlswrite(filename,A,sheet,xlRange)
所以,如果有人能帮助我,我真的很感激。
提前致谢!