Всем привет
У меня возникла проблема при применении порога в адаптивном фоновом алгоритме. Мой код
threshold=25 for f=1:frames I=read(obj,f); figure(1);imshow(I);title('Input Video Sequence'); if f==1 Background=I; Fg=abs(I-Background); else Fg=abs(I-Background); end end for i=1:width for j=1:height if Fg(i,j)>threshold Fg(i,j)=255; else Fg(i,j)=0; end end end figure(2);imshow(Fg);
Это видеофайл, в котором я применяю этот алгоритм, но когда я применяю пороговые условия, результаты не влияют, и я не могу получить маску переднего плана.
ПРИМЕЧАНИЕ.
Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.
После того, как вы пройдете первый цикл по кадрам, FG будет иметь значение последней итерации, потому что вы продолжаете перезаписывать его на каждой итерации и ничего с ним не делаете. Таким образом, после того, как этот цикл заканчивается, FG — это просто последний кадр минус первый кадр. Явно не то, что вы хотите сделать. Затем вы устанавливаете пороговое значение FG, которое, как я уже сказал, является последним отличием, и отображаете его.
Поместите модификацию фона и пороговое значение внутри вашего цикла по кадрам и отобразите внутри этого цикла или назначьте кадр FG{f} для хранения всех ваших разностных кадров. Я добавил всего несколько строк в свою демонстрацию (которую я уже публиковал ранее), чтобы обработать ваш адаптивный фон. Скопируйте, вставьте и запустите этот код:
% Demo macro to extract frames and get frame means from an avi movie % and save individual frames to separate image files. % Also computes the mean gray value of the color channels. clc; % Clear the command window. close all; % Close all figures (except those of imtool.) imtool close all; % Close all imtool figures. clear; % Erase all existing variables. workspace; % Make sure the workspace panel is showing. fontSize = 14; % Change the current folder to the folder of this m-file. % (The line of code below is from Brett Shoelson of The Mathworks.) if(~isdeployed) cd(fileparts(which(mfilename))); end % Open the rhino.avi demo movie that ships with MATLAB. folder = fullfile(matlabroot, '\toolbox\images\imdemos'); movieFullFileName = fullfile(folder, 'rhinos.avi'); % Check to see that it exists.
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ