我正在尝试使用z-score来标准化我的图像对象功能以进行分类。不幸的是,所有对象的规范化特征似乎都是相同的。会出现什么问题以及如何纠正?算法的部分如下。
% FEATURE EXTRACTION
cc = bwconncomp(ROI, 8) % connected components in ROI of binary image
for i = 1:Number_objects
Number_objects = cc.NumObjects % number of connected components
imagecomponents = regionprops(cc,'Area','MajorAxisLength','MinorAxisLength','Perimeter',...
'EquivDiameter','Extent','Orientation','Solidity','Eccentricity')
Areas = imagecomponents(i).Area
MajorAxisLengths = imagecomponents(i).MajorAxisLength
MinorAxisLengths = imagecomponents(i).MinorAxisLength
Perimeters = imagecomponents(i).Perimeter
EquivDiameters = imagecomponents(i).EquivDiameter
Extents = imagecomponents(i).Extent
Orientations = imagecomponents(i).Orientation
Soliditys = imagecomponents(i).Solidity
Eccentricitys = imagecomponents(i).Eccentricity
end
Areas_vector = [imagecomponents.Area]'
MajorAxisLengths_vector = [imagecomponents.MajorAxisLength]'
MinorAxisLengths_vector = [imagecomponents.MinorAxisLength]'
Perimeters_vector = [imagecomponents.Perimeter]'
EquivDiameters_vector = [imagecomponents.EquivDiameter]'
Extents_vector = [imagecomponents.Extent;]'
Orientations_vector = [imagecomponents.Orientation]'
Soliditys_vector = [imagecomponents.Solidity]'
Eccentricitys_vector = [imagecomponents.Eccentricity]'
% NORMALIZATION OF FEATURES
Areas_mean = mean(Areas_vector);
MajorAxisLengths_mean = mean(MajorAxisLengths_vector);
MinorAxisLengths_mean = mean(MinorAxisLengths_vector);
Perimeters_mean = mean(Perimeters_vector);
EquivDiameters_mean = mean(EquivDiameters_vector);
Extents_mean = mean(Extents_vector);
Orientations_mean = mean(Orientations_vector);
Soliditys_mean = mean(Soliditys_vector);
Eccentricitys_mean = mean(Eccentricitys_vector);
%compute the standard deviations of features
Areas_std = std(Areas_vector),y = std(Areas_vector')
MajorAxisLengths_std = std(MajorAxisLengths_vector);
MinorAxisLengths_std = std(MinorAxisLengths_vector);
Perimeters_std = std(Perimeters_vector);
EquivDiameters_std = std(EquivDiameters_vector);
Extents_std = std(Extents_vector);
Orientations_std = std(Orientations_vector);
Soliditys_std = std(Soliditys_vector);
Eccentricitys_std = std(Eccentricitys_vector);
%normalization
for i = 1:Number_objects
Normalized_Areas(i) = (Areas - Areas_mean)/Areas_std
Normalized_MajorAxisLengths(i) = (MajorAxisLengths - MajorAxisLengths_mean)/MajorAxisLengths_std
Normalized_MinorAxisLengths(i) = (MinorAxisLengths - MinorAxisLengths_mean)/MinorAxisLengths_std
Normalized_Perimeters(i) = (Perimeters - Perimeters_mean)/Perimeters_std
Normalized_EquivDiameters(i) = (EquivDiameters - EquivDiameters_mean)/EquivDiameters_std
Normalized_Extents(i) = (Extents - Extents_mean)/Extents_std
Normalized_Orientations(i) = (Orientations - Orientations_mean)/Orientations_std
Normalized_Soliditys(i) = (Soliditys - Soliditys_mean)/Soliditys_std
Normalized_Eccentricitys(i) = (Eccentricitys - Eccentricitys_mean)/Eccentricitys_std
end
for i = 1:Number_objects
Normalized_Areas_vector = Normalized_Areas'
Normalized_MajorAxisLengths_vector = Normalized_MajorAxisLengths'
Normalized_MinorAxisLengths_vector = Normalized_MinorAxisLengths'
Normalized_Perimeters_vector = Normalized_Perimeters'
Normalized_EquivDiameters_vector = Normalized_EquivDiameters'
Normalized_Extents_vector = Normalized_Extents'
Normalized_Orientations_vector = Normalized_Orientations'
Normalized_Soliditys_vector = Normalized_Soliditys'
Normalized_Eccentricitys_vector = Normalized_Eccentricitys'
end
Components_matrix = [Normalized_Areas_vector Normalized_MajorAxisLengths_vector Normalized_MinorAxisLengths_vector Normalized_Perimeters_vector...
Normalized_EquivDiameters_vector Normalized_Extents_vector Normalized_Orientations_vector Normalized_Soliditys_vector Normalized_Eccentricitys_vector]
Mean_Components_vector = mean(Components_matrix)'
最后,我希望每个对象(返回)都有不同的名称,例如Normalized_object_vector1,Normalized_object_vector2等。我怎么能在Matlab中做到这一点?请帮忙。