📄 binalize.m
字号:
function A = binalize(picture);
[X , Y] = size(picture);
A = zeros(X,Y);
for i = 1:X
for j = 1:Y
if(picture(i,j)>128)
A(i,j) = 255;
else
A(i,j) = 0;
end
end
end
%***********此处的分类器是根据待识样本与样本库进行搜索匹配实现,而搜索的根据是各特征方差的有序搜索************%
%function classifier_search()
%%%%%%%%%% 可见光
feature_file = 'data_visual_compoundfeature(jeep42pk42mianbao44taxi42).bin'; % 所有类的样本特征矢量保存文件
searchdata_file = 'data_visual_search(jeep42pk42mianbao44taxi42).bin'; % 搜索信息保存文件
num_feature = 26;
num_class = 170;
% %%%%%%%%%% 红外
% feature_file = 'data_ir_compoundfeature(jeep43pk45mianbao41taxi43).bin'; % 所有类的样本特征矢量保存文件
% searchdata_file = 'data_ir_search(jeep43pk45mianbao41taxi43).bin'; % 搜索信息保存文件
% num_feature = 26;
% num_class = 172;
feature_mean = zeros(1 , num_feature); % 多个类同一特征的均值
feature_diff = zeros(1 , num_feature); % 多个类同一特征的方差
feature_span = zeros(1 , num_feature); % 同一特征的分布宽度(最大值-最小值)
search_order = zeros(1 , num_feature); % 据方差值大小得出的,分类时特征的比较(搜索)顺序
%*******************读取特征数据********%
all_feature = zeros(num_class , num_feature);
filename = fopen(feature_file , 'a+'); % open a feature file for reading
for i = 1:num_class
all_feature(i,:) = (fread(filename , num_feature , 'double'))'; % 以特征向量为单位读取数据
end
fclose(filename);
%***********计算各特征均值(各类同特征间平均)**********%
for k = 1:num_feature
for i = 1:num_class
feature_mean(k) = feature_mean(k) + all_feature(i,k);
end
feature_mean(k) = feature_mean(k)/num_class;
end
feature_mean
% ***********计算各特征宽度(最大值和最小值间的差)************%
for k = 1:num_feature
feature_max = max(all_feature(1:num_class , k));
feature_min = min(all_feature(1:num_class , k));
feature_span(k) = feature_max - feature_min + 0.0001; % "+ 0.0001"是为了避免0值导致的错误
end
feature_span
% *************各特征相对散度(各类同特征与该特征平均均值差值的相对比例)*************%
for k = 1:num_feature
for i = 1:num_class
feature_diff(k) = feature_diff(k) + abs( all_feature(i,k) - feature_mean(k) ) / feature_span(k) ;
end
feature_diff(k) = feature_diff(k)/num_class;
end
feature_diff
for i = 1:num_feature
search_order(i) = i; % 初始化搜索顺序
end
% *************按各特征相对散度对特征序号进行排序,散度大的在前*************%
% 经实验表明,搜索顺序应将形状矩和统计特征分开排序: 长宽比为1号,形状矩从大到小随后,统计特征从大到小再随后 ?????????????????????
for i = 1:num_feature
for k = 1:num_feature-1
if feature_diff(search_order(k))<feature_diff(search_order(k+1)) %
t = search_order(k);
search_order(k) = search_order(k+1);
search_order(k+1) = t;
end
end
end
search_order
%****************保存搜索信息*****************%
file_w = fopen(searchdata_file , 'w+'); % create a file to store coded data
fwrite(file_w , num_class , 'double');
fwrite(file_w , num_feature , 'double');
fwrite(file_w , feature_mean , 'double');
fwrite(file_w , feature_diff , 'double');
fwrite(file_w , feature_span , 'double');
fwrite(file_w , search_order , 'double');
fclose(file_w);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -