私はコードを書こうとしています。これは私の生物学の仕事に役立ちます。コードの概念は、組織内の収縮細胞のビデオファイルを分析することです
例2:youtube.com/watch?v=uG_WOdGw6Rk
そして、以下をプロットします。
- 1分あたりのビート数。
- ビートの強さ
- 殴打の規則性
そこで、ビデオをループして各フレームとそれに続くフレームを比較し、フレームに変更があったかどうかを確認して、これらの変更を曲線にプロットする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が正確に使用すべきものではないことに気づき、すべてのアンプデータが実際に偽造されていると思います!
また、実際には、ピークを数えることによって、これからビート率を抽出することしかできませんが、必要なすべてのデータを取得できるようにコードを改善するにはどうすればよいですか?
また、本当にありがとうございました。これはコードのごく一部です。さらに情報が必要な場合は、お知らせください。ありがとう