规范化分类功能

时间:2015-08-18 13:40:39

标签: matlab

我正在尝试使用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中做到这一点?请帮忙。

0 个答案:

没有答案