日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

低秩矩阵的应用--背景建模

發布時間:2025/7/25 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 低秩矩阵的应用--背景建模 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景建模是從拍攝的視頻中分離出背景和前景。

由于背景的視頻基本是不變的,所以如果把每幀當做一個矩陣的一列那么,矩陣是低秩的,所以低秩矩陣的恢復來恢復出背景。

今天主要完成了,在自己的數據庫讓進行背景和前景的分離。下面為主要步驟:

1.從馬毅的實驗室網址下載RPCA求解的代碼http://perception.csl.illinois.edu/matrix-rank/introduction.html

2.給出的接口是[A_hat E_hat iter] = inexact_alm_rpca(D, lambda, tol, maxIter)

所以明確目標:D是我們的視頻中的每一幀,A_hat 是我們估計的背景,E_hat是前景。

RPCA解決的問題是



[cpp] view plaincopy
  • clc;??
  • clear;??
  • ??
  • %%?this?to?read?avi?by?using?mmread?to?get?every?frame??
  • video?=?VideoReader('E:\FFOutput\test.avi');??
  • nFrames?=?video.NumberOfFrames;???%得到幀數??
  • H?=?video.Height;?????%得到高度??
  • W?=?video.Width;??????%得到寬度??
  • Rate?=?video.FrameRate;??
  • Cal_FrameN=300;??
  • %?Preallocate?movie?structure.??
  • mov(1:Cal_FrameN)?=?struct('cdata',zeros(H,W,3,'uint8'),'colormap',[]);??
  • ??
  • ??
  • %read?one?frame?every?time??
  • for?i?=?1:Cal_FrameN??
  • ????mov(i).cdata?=?read(video,i);??
  • ????P?=?mov(i).cdata;??
  • ????double_P=im2double(P);??
  • ????%imshow(?double_P),title('原始圖片3');??
  • ????Frame=rgb2gray(?double_P);%當前灰度幀??
  • ????%下采樣??
  • ????Down_Frame=Frame(2:4:H,2:4:W);??
  • ????M(:,?i)?=?Down_Frame(:);??
  • ???%??disp('當前播幀數:'),disp(i);??
  • ????%?imshow(P),title('原始圖片');??
  • ???????
  • ??
  • %?????P2=rgb2gray(P);??
  • ??
  • ???
  • end??
  • ???
  • [A_hat,?E_hat,?iter]=inexact_alm_rpca(M,0.006);??
  • A=reshape(A_hat(:,200),?size(Down_Frame));??
  • E=reshape(E_hat(:,200),?size(Down_Frame));??
  • D_real=reshape(M(:,200),?size(Down_Frame));??
  • figure;??
  • imshow(D_real),title('原始圖片');??
  • figure;??
  • imshow(A),title('恢復圖片');??
  • figure;??
  • imshow(abs(E)),title('錯誤圖片');??


  • 因為是MATLAB的初學者所以遇到了兩個問題:

    A.必須對讀取的圖像做double_P=im2double(P);處理不然會出現

    錯誤使用 ?*?
    MTIMES 不完全支持整數類。至少有一個輸入必須為標量。
    要按元素進行 TIMES 計算,請改用 TIMES (.*)。


    出錯 lanbpro (line 298)
    ? ? ? r = At*U(:,1);


    出錯 lansvd (line 209)
    ? ? [U,B,V,p,ierr,w] = lanbpro(A,j,p,options,U,B,V,anorm);


    出錯 inexact_alm_rpca (line 53)
    norm_two = lansvd(Y, 1, 'L');


    出錯 background (line 36)
    [A_hat, E_hat, iter]=inexact_alm_rpca(M,0.006);

    B在顯示錯誤圖片時需要做abs絕對值處理,不然是全黑的圖片,不能看到前景圖像。

    C.最后一個也非常重要lumada值為1/(根號m).m為一張圖片像素點的個數

    D還有一個問題就是原圖片很到,直接做會有內存不夠的問題,所以進行了下采樣。


    實驗結果:

    = +

    總結

    以上是生活随笔為你收集整理的低秩矩阵的应用--背景建模的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。