matlab 視頻分割基礎算法:基於直方圖差異的算法

% matlab2012a   基於直方圖差異的視頻分割算法
%讀取視頻 進行簡單的圖像處理
v = VideoReader('cs.mp4');
n = v.NumberOfFrames; row = v.Height; col = v.Width;
a = read(v,1);
a = rgb2gray(a);
a = histeq(a);
a = imhist(a);
%存儲差異的數組
d = linspace(0.0,0.0,n-1);
 for k = 2:n
     %讀取第i幀
     b = read(v,k);
     b = rgb2gray(b);
     b = histeq(b);
     b = imhist(b);
     %基於直方圖差異  兩幅圖直方圖差的絕對值相加 / 圖的面積
     c = abs(double(a) - double(b));
     for i = 1:256
         d(k-1) = d(k-1) + c(i);
     end
     d(k-1) = d(k-1)/row/col;
     a = b;
 end
 %disp(d);
 %閾值 取差異數組平均值與最大值的 平均數
 yu = (mean(d)+max(d))/2;
 disp(yu);
 %統計分割點個數
 count = 0;
  for k = 1:n-1
     %如果大於閾值 保存分割點的圖片
     if(d(k) > yu)
         count = count + 1;
         imwrite(read(v,k),strcat(num2str(k),'.jpg'));
         imwrite(read(v,k+1),strcat(num2str(k+1),'.jpg'));
     end
  end
  disp(count);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章