📄 vbpds.m
字号:
a = abs(round(obj.particle_position(obj.current_particle,1)));
b = abs(round(obj.particle_position(obj.current_particle,2)));
c = a + (obj.PtternsDimension(1) - 1);
d = b + (obj.PtternsDimension(2) - 1);
if a > 240;a=240;end
if c > 240;c=240;end
if b > 320;b=320;end
if d > 320;d=320;end
if a <= 0;a=1;end
if b <= 0;b=1;end
if c <= 0;c=1;end
if d <= 0;d=1;end
obj.error_code = '06-02';
frame = obj.Current_Image(a:c,b:d);%156:191,218:235);%84:119,112:129);%
%disp('Set current_frame part0')
for i = size(frame,1)+1:obj.PtternsDimension(1)
for j =size(frame,2)+1:obj.PtternsDimension(2)
frame(i,j) = 0;
end
end
%disp('Set current_frame part1')
obj.error_code = '06-03';
if size(frame,1)==obj.PtternsDimension(1)
for i = 1:obj.PtternsDimension(1)
for j =size(frame,2)+1:obj.PtternsDimension(2)
frame(i,j) = 0;
end
end
end
%disp('Set current_frame part2')
obj.error_code = '06-04';
if size(frame,2)==obj.PtternsDimension(2)
for i = size(frame,1)+1:obj.PtternsDimension(1)
for j =1:obj.PtternsDimension(2)
frame(i,j) = 0;
end
end
end
obj.current_frame = frame(:,:);
catch e
if strcmp(obj.Show_Message,'true')
warning( 'VBPDS:Return_Frame', ' Error in Return_Frame : "%s".\n',e.message);
disp(['VBPDS:Return_Frame ', 'error_code : ' obj.error_code]);
end
end
end
function obj = Compute_Fitness(obj)
%%
try
obj.error_code = '07-01';
% current_frame_phi = abs(log(invmoments(obj.current_frame)))';
% for i = 1:7
% if current_frame_phi(i) == Inf
% current_frame_phi(i) = 0;
% end
% end
%
% obj.error_code = '07-02';
% for i = 1:obj.Number_of_PedestrianPatterns
% Delta_phi(1,i) = norm(obj.All_Patterns_Edg_Phi(:,i) - current_frame_phi);
% end
% [MIN_Delta_phi_val,MIN_Delta_phi_index] = min(Delta_phi);
%
% obj.error_code = '07-03';
% % for i = obj.Number_of_PedestrianPatterns+1:obj.Number_of_PedestrianPatterns+obj.Number_of_NonPedestrianPatterns
% % Delta_phi2(1,i) = norm(obj.All_Patterns_Phi(i,:) - current_frame_phi');
% % end
% % [MIN_Delta_phi_val2,MIN_Delta_phi_index2] = min(Delta_phi2(1,obj.Number_of_PedestrianPatterns+1:end));
%
% MIN_Delta_phi = .2;
% MAX_Delta_phi = 1;
% MIN_fitness = 100;
% MAX_fitness = 1;
%
% fitness1 = (MIN_Delta_phi_val * (MAX_fitness-MIN_fitness)+(MAX_Delta_phi*MIN_fitness)-(MIN_Delta_phi*MAX_fitness))/(MAX_Delta_phi - MIN_Delta_phi);
% if (fitness1 < 0); fitness1 = 0;end
% if (fitness1 > 100); fitness1 = 100;end
% % MIN_Delta_phi = .5;
% % MAX_Delta_phi = 3;
% % MIN_fitness = 1;
% % MAX_fitness = 100;
% %
% % obj.error_code = '07-04';
% % fitness2 = (MIN_Delta_phi_val2 * (MAX_fitness-MIN_fitness)+(MAX_Delta_phi*MIN_fitness)-(MIN_Delta_phi*MAX_fitness))/(MAX_Delta_phi - MIN_Delta_phi);
% % if (fitness2 < 0); fitness2 = 0;end
% % if (fitness2 > 100); fitness2 = 100;end
%
% obj.error_code = '07-05';
%
% % if fitness1 > fitness2
% % fitness = fitness1;
% % else
% % fitness = MAX_fitness - fitness2;
% % end
% % disp ([obj.current_iteration obj.current_particle MIN_Delta_phi_val fitness1 MIN_Delta_phi_val2 fitness2 fitness])
% disp ([obj.current_iteration obj.current_particle MIN_Delta_phi_val fitness1 ])
%
% if fitness1 > obj.g_best_fitness % best fitness is minimum
% obj.Delta_phi_index = MIN_Delta_phi_index;
% end
% % Set phi_index output
% if obj.current_fitness(obj.current_particle) <= obj.Termination_Fitness
% obj.Delta_phi_index = MIN_Delta_phi_index;
% end
% tmp = [];
% for j = 1:size(obj.current_frame,2)
% tmp = [tmp;obj.current_frame(:,j)];%#ok<AGROW>
% end
% current_frame = double(tmp);
% fitness = sim(obj.Neural_Network,obj.current_frame);
obj = obj.extract_feature;
fitness1 = sim(obj.Neural_Network,obj.pi);
obj.current_fitness(obj.current_particle,1) = fitness1;%round(abs(fitness)); % best fitness is minimum
catch e
if strcmp(obj.Show_Message,'true')
warning( 'VBPDS:Compute_Fitness', ' Error in Compute_Fitness : "%s".\n',e.message);
disp(['VBPDS:Compute_Fitness ', 'error_code : ' obj.error_code]);
end
end
end
function obj = DisplayResults(obj,Image,Result,Image_Title,Image_Discription)
try
obj.error_code = '08-01';
set(0, 'Units', 'pixels');
f1 = figure; imshow(Image), title(Image_Title);
text(size(Image,2),size(Image,1)+15, ...
Image_Discription, ...
'FontSize',7,'HorizontalAlignment','right');
set(gcf,'Name',Image_Title,'NumberTitle','off');
%set(gcbo,'NextPlot','new');
set(gcf,'Position',[50+(obj.Order-1)*255 100 250 250]);
obj.error_code = '08-02';
if ~isempty(Result)
for i = 1:size(Result,1)
for j = 1:size(Result,2)
if obj.result_fitness(i,j) >= 0
f3 = rectangle ('Position', [Result(i,j,2),Result(i,j,1),obj.PtternsDimension(2),obj.PtternsDimension(1)]);
if i == size(Result,1) && j == size(Result,2)
set(f3, 'EdgeColor', [1 1 1]);
set(f3, 'FaceColor', [1 1 1]);
else
set(f3, 'EdgeColor', obj.Color(j,:));
%set(f3, 'FaceColor', [1 0 0]);
end
end
end
end
end
obj.error_code = '08-03';
obj.Order = obj.Order + 1;
catch e
if strcmp(obj.Show_Message,'true')
warning('VBPDS:PSODisplayResults', 'Error in Display : "%s".\n',e.message);
disp(['VBPDS:DisplayResults ', 'error_code : ' obj.error_code]);
end
end
end
function obj = extract_feature(obj)
try
%tic
v_s = [];
n_b_h = [];
n_t_h = [];
n_b_v = [];
n_t_v = [];
n_r_h = [];
n_l_h = [];
n_r_v = [];
n_l_v = [];
obj.error_code = '09-01';
%obj.current_frame = obj.stream(1:36,1:18,1);
tmp = obj.current_frame;
%figure,imshow(tmp)
%figure,imhist(tmp)
tmp = uint8(histeq(tmp,16));
%figure,imshow(tmp)
%figure,imhist(tmp)
height = size(tmp,1);
width = size(tmp,2);
obj.error_code = '09-02';
h_e = edge(tmp,'sobel','horizontal');
%figure,imshow(h_e)
v_e = edge(tmp,'sobel','vertical');
%figure,imshow(v_e)
obj.error_code = '09-03';
n_t_h = sum(h_e(1:(height/2),:));
n_b_h = sum(h_e((height/2)+1:end,:));
n_l_h = sum(h_e(:,1:(width/2)),2);
n_r_h = sum(h_e(:,(width/2)+1:end),2);
n_t_v = sum(v_e(1:(height/2),:));
n_b_v = sum(v_e((height/2)+1:end,:));
n_l_v = sum(v_e(:,1:(width/2)),2);
n_r_v = sum(v_e(:,(width/2)+1:end),2);
obj.error_code = '09-04';
for i = 1:width
if (n_b_h(i) > n_t_h(i)) && (n_b_h(i) ~= 0)
v_s_h(i) = n_t_h(i) / n_b_h(i);
else
if (n_t_h(i) > n_b_h(i)) && (n_t_h(i) ~= 0)
v_s_h(i) = n_b_h(i) / n_t_h(i);
else
if (n_t_h(i) == n_b_h(i)) && (n_b_h(i) > 0) && (n_t_h(i) > 0)
v_s_h(i) = 1;
else
if (n_b_h(i) == 0) || (n_t_h(i) == 0)
v_s_h(i) = 0;
end
end
end
end
if (n_b_v(i) > n_t_v(i)) && (n_b_v(i) ~= 0)
v_s_v(i) = n_t_v(i) / n_b_v(i);
else
if (n_t_v(i) > n_b_v(i)) && (n_t_v(i) ~= 0)
v_s_v(i) = n_b_v(i) / n_t_v(i);
else
if (n_t_v(i) == n_b_v(i)) && (n_b_v(i) > 0) && (n_t_v(i) > 0)
v_s_v(i) = 1;
else
if (n_b_v(i) == 0) || (n_t_v(i) == 0)
v_s_v(i) = 0;
end
end
end
end
end
obj.error_code = '09-05';
for i = 1:height
if (n_r_h(i) > n_l_h(i)) && (n_r_h(i) ~= 0)
h_s_h(i) = n_l_h(i) / n_r_h(i);
else
if (n_l_h(i) > n_r_h(i)) && (n_l_h(i) ~= 0)
h_s_h(i) = n_r_h(i) / n_l_h(i);
else
if (n_l_h(i) == n_r_h(i)) && (n_r_h(i) > 0) && (n_l_h(i) > 0)
h_s_h(i) = 1;
else
if (n_r_h(i) == 0) || (n_l_h(i) == 0)
h_s_h(i) = 0;
end
end
end
end
if (n_r_v(i) > n_l_v(i)) && (n_r_v(i) ~= 0)
h_s_v(i) = n_l_v(i) / n_r_v(i);
else
if (n_l_v(i) > n_r_v(i)) && (n_l_v(i) ~= 0)
h_s_v(i) = n_r_v(i) / n_l_v(i);
else
if (n_l_v(i) == n_r_v(i)) && (n_r_v(i) > 0) && (n_l_v(i) > 0)
h_s_v(i) = 1;
else
if (n_r_v(i) == 0) || (n_l_v(i) == 0)
h_s_v(i) = 0;
end
end
end
end
end
beta = .9;
obj.error_code = '09-06';
f_h_e_h = h_e;%filtered horizontal edge by horizontal symetry
f_h_e_v = h_e;%filtered horizontal edge by vertical symetry
f_v_e_h = v_e;%filtered vertical edge by horizontal symetry
f_v_e_v = v_e;%filtered vertical edge by vertical symetry
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -