1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng Dụng Kỹ Thuật Phát Hiện Người Trong Giám Sát An Ninh.pdf

100 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 100
Dung lượng 2,9 MB

Nội dung

Untitled THÀNH PHỐ HỒ CHÍ MINH BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT Tp Hồ Chí Minh, tháng SKC007447 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH CHUYÊ[.]

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH /8Ұ19Ă17+Ҥ&6Ƭ 1*8 Bin) cua phan tu truoc no (i-1) SATHisBin{i,1}(AnglBin(i,1))=SATHisBin{i,1}(AnglBin(i,1))+Magni(i,1);% Add Bin Hien tai cua phan tu hien tai %% for j=2:W % Add toan bo cac Bin (1 -> Bin) cua phan tu truoc no SATHisBin{i,j}=SATHisBin{i-1,j}+SATHisBin{i,j-1}-SATHisBin{i1,j-1}; SATHisBin{i,j}(AnglBin(i,j))=SATHisBin{i,j}(AnglBin(i,j))+Magni(i,j);% Add Bin Hien tai cua phan tu hien tai end end end //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function [vector]=HOGLocal(SATHisBin, CellS, [H,W]=size(SATHisBin); YH=ceil(H/CellS)-BlockS+1; % So cac Diem XW=ceil(W/CellS)-BlockS+1; % So cac Diem % Tinh toan cua cac Blocks anh YLocBlock=1:CellS:H; XLocBlock=1:CellS:W; % Xu ly truong hop bien HTemp=length(YLocBlock); YLocBlock(HTemp)=H-CellS+1; WTemp=length(XLocBlock); XLocBlock(WTemp)=W-CellS+1; % NumItemBlock=BlockS*BlockS*Bin; % Number [H1,W1]=size(SATHisBin); SATHisBin(2:H1+1,2:W1+1)=SATHisBin; P5 BlockS, Bin, StepCells) Block co the Y Block co the X Bin phan tu Block SATHisBin(1,:)={zeros(Bin,1)}; SATHisBin(:,1)={zeros(Bin,1)}; IndY=1:StepCells:YH; if IndY(length(IndY))= 160 ratio = max(96/w,160/h); I = imresize(I,ratio); end %% fin temporal [~, windows] = get_pyramid_dimensions(I); count = count + windows; end end %% Aux function to know how the windows indices function [level, num_window] = get_window_indices(wxl, w_linear_index) accum_windows = 0; for i=1:size(wxl,2) accum_windows = accum_windows + wxl(i); if w_linear_index = 0.995); % positive match information coordinates = coordinates'; coordinates = coordinates(pos_indxs,:); probs = probs(pos_indxs,:); %% Computing level coordinates for drawing [bb_size, l0_coordinates] = compute_level0_coordinates(wxl, coordinates, pos_indxs, scale); %% Showing all positive windows in separate figures P14 if show_all windows = windows(:,:,:,pos_indxs); for w=1:size(pos_indxs,2) figure('name',sprintf('x=%d, y=%d', l0_coordinates(w,1),l0_coordinates(w,2))); % figure('name',sprintf('x=%d, y=%d', bb_size(w,1),bb_size(w,2))); ii = insertText(windows(:,:,:,w), [1,1], probs(w), 'FontSize',9,'BoxColor', 'green'); imshow(ii) end end %% Drawing detections over the original image draw = I; shape_inserter = other_shapeInserter; if ~draw_all shape_inserter = ok_shapeInserter; %% non-max-suppression! max_indxs = non_max_suppression(l0_coordinates, probs, bb_size); pos_indxs = pos_indxs(max_indxs); l0_coordinates = l0_coordinates(max_indxs,:); bb_size = bb_size(max_indxs, :); probs = probs(max_indxs,:); end draw = I; for w=1:size(pos_indxs,2) %% Drawing the rectangle on the original image x = l0_coordinates(w,1); y = l0_coordinates(w,2); % Rectangle conf bb_height = bb_size(w,1); bb_width = bb_size(w,2); rectangle = int32([x,y,bb_width,bb_height]); draw = step(shape_inserter, draw, rectangle); draw = insertText(draw, [x,y+bb_height], probs(w), 'FontSize',9,'BoxColor', 'green'); end % Showing image with all the detection boxes imshow(draw); figure(gcf); end %% Aux function to compute the windows coordiantes at level pyramid image function [bb_size, new_cords] = compute_level0_coordinates(wxl, coordinates, inds, scale) P15 % Consts bb_width = 64; bb_height = 128; % Vars new_cords = zeros(size(inds,2),2); bb_size = zeros(size(inds,2),2); % for each positive window index for i=1:size(inds,2) % linear index of the window ind = inds(i); % find the positive window original level level = 0; while ind > sum(wxl(1:level)) level = level + 1; end % fprintf('Match found at level %d\n', level); % compute original coordinates in Level0 image factor = (scale^(level-1)); new_cords(i,1) = floor(coordinates(i,1) * factor); new_cords(i,2) = floor(coordinates(i,2) * factor); % Bounding Box resizing? bb_size(i,1) = ceil(bb_height*factor); bb_size(i,2) = ceil(bb_width*factor); end end ///////////////////////////////////////////////////////// sliding_detector.m function sliding_detector(model) path = uigetdir('.\images','Select positive test image path'); if isa(path,'double') cprintf('Errors','Invalid paths \nexiting \n\n') return end images = rdir(strcat(path,filesep,'*.png')); for i=1:numel(images) file_name = images(i).name; disp(file_name); I = imread(file_name); [h,w,~] = size(I); scale = min(w/86, h/142); I = imresize(I, 1.2/scale); draw_sliding_window(I,model); end end P16 CODE PHÁT HIỆN NGƢỜI TRONG VIDEO Phong_nhandang.m %% Nhan dang nguoi video video=VideoReader('E:\PROJECT_VIDEO\VIDEO\video1.MP4'); nFrames=video.NumberOfFrames; % frame = read(video,[1 10]); fprintf('Totally, there are %d frames \n',nFrames); % j=1; h = figure; for ind=1:1:nFrames img=read(video,ind); img=imresize(img,1.5); peopleDetector = vision.PeopleDetector; ClassificationModel = 'UprightPeople_128x64'; ClassificationThreshold = 3; MinSize = []; MaxSize = []; ScaleFactor = 1.05; WindowStride = [8 8]; MergeDetections = true; UseROI = false; [bbox,score] = step(peopleDetector,img); % Detect people using the people detector object [selectedBbox, selectedScore] = selectStrongestBbox(bbox, score); img = insertObjectAnnotation(img,'rectangle', selectedBbox, cellstr(num2str(selectedScore)), 'Color', 'y'); figure(h); imshow(img); hold on hold off %refresh(h); %pause(0.1); I = getframe(h); imwrite(I.cdata,strcat('Output\image1(',num2str(ind),').jpg')); end % close(video); P17 S K L 0

Ngày đăng: 24/06/2023, 18:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w