Я пытаюсь написать код, который помогает мне в моей биологической работе.Концепция кода заключается в анализе видеофайла сжимающихся клеток в ткани
Пример 1
Пример 2: youtube.com/watch?v=uG_WOdGw6Rk
И вычеркните следующее:
- Количество ударов в минуту.
- Сила удара
- Регулярность избиения
И поэтому я написал код Matlab, который будет циклически проходить по видео и сравнивать каждый кадр с тем, который следует за ним, и видеть, есть ли какие-либо изменения в кадрах, и отображать эти изменения на кривой.
ПримерМой код Результаты
Ядро Текущего кода, который я написал:
for i=2:totalframes
compared=read(vidObj,i);
ref=rgb2gray(compared);%% convert to gray
level=graythresh(ref);%% calculate threshold
compared=im2bw(compared,level);%% convert to binary
differ=sum(sum(imabsdiff(vid,compared))); %% get sum of difference between 2 frames
if (differ ~=0) && (any(amp==differ)==0) %%0 is = no change happened so i dont wana record that !
amp(end+1)=differ; % save difference to array amp wi
time(end+1)=i/framerate; %save to time array with sec's, used another array so i can filter both later.
vid=compared; %% save current frame as refrence to compare the next frame against.
end
end
figure,plot(amp,time);
====================
Итак, это мой код, но есть ли способ улучшить его, чтобы получить лучшие результаты?
, потому что мне кажется, что imabsdiff не совсем то, что я должен использовать, потому что мое видео содержит многошума и это влияет на мои результаты много, и я думаю, что все мои данные усилителя на самом деле подделаны!
Кроме того, я на самом деле могу извлечь только избиениеОцените это путем подсчета пиков, но как я могу улучшить свой код, чтобы иметь возможность получать из него все необходимые данные ??
спасибо, также очень ценю вашу помощь, это небольшая часть кода,если вам нужна дополнительная информация, пожалуйста, дайте мне знать.спасибо