看板 MATLAB 關於我們 聯絡資訊
各位板友你們好 之前有在板上問過有關Matlab該如何讀wmv檔的問題 板友們是推薦mmreader和VideoReader(2012版新增)這兩個function 用在時間不長,或是解析度不高的影片上的話是ok 但如果影片資料過大就很容易佔滿記憶體 使得用影片無法讀進Matlab中 想請問如果碰上這種狀況時,有什麼好方法能夠解決呢? 謝謝。 ---------------------------------------------------------------------- *補充說明: 我的應用是這樣的:先將影片讀進來做處理,之後再存回影片 但我現在碰上的問題是用mmreader讀進來的資料就過大 或是在處理過程中會導致資料量過大、記憶體不足的情況 主要不是轉存的問題 所以我的疑問就在於 像這種要對影片做處理,並且還需要保持整個影片的架構的方式 如果碰上記憶體不足的情況時 大家會建議怎麼做呢?例如:分段處理之後再合併 畢竟要把整部影片都讀進來再做處理有點不太實際 謝謝。 PS. 我的後續動作是將影片轉成frame,之後再做處理 因為是醫學相關的應用,所以資料最好是保持原始內容,所以才用直接讀檔的方式 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.103.41 ※ 編輯: skyzer 來自: 140.123.103.41 (01/21 22:49)
gozelee:有軟體可以直接將影片轉成圖片阿... 01/22 00:58
skyzer:用軟體轉圖片的話還要考慮轉換過程是否有對data做處理 例如 01/22 01:18
skyzer:wmv轉成jpg的話因為格式不相同 轉出來的data可能有經過壓縮 01/22 01:19
skyzer:而造成原始資料的喪失 為了能保持原本的資料所以才用直接讀 01/22 01:20
skyzer:的方式 01/22 01:20
YoursEver:video本身就被壓縮過; 如果只是不想再轉存圖檔多壓一次, 01/22 04:47
YoursEver:直接把mmreader的object內的影像資料另外轉存就好. 01/22 04:48
YoursEver:matlab help裡面已經附了該如何抓出單一frame的範例碼. 01/22 04:49
YoursEver:轉存時可以存bmp,這樣就不用擔心被多壓一次. 01/22 04:49
skyzer:感謝您的回答
skyzer:但我主要的困難比較不是在轉存的部份
skyzer:詳細內容我新增在原文後面的補充說明內
skyzer:謝謝你。
※ 編輯: skyzer 來自: 140.123.103.41 (01/22 08:44)
YoursEver:各frame拆成bmp是沒有問題的,跑多少讀多少即可. 01/22 11:11
YoursEver:再來,你要算一下你需要的memory有多少. 01/22 11:11
YoursEver:假設你的video是320*480的mpeg-1,那麼每frame就會有 01/22 11:14
YoursEver:320*480*3 = 460K, 若30 frame/sec, 一秒就有約14MB. 01/22 11:16
YoursEver:如果是HD,那麼在30frame/sec下,每秒需要的memory逾100MB 01/22 11:19
YoursEver:這樣搞下去,記憶的的部分多半會無解; 轉存成BMP分批讀 01/22 11:19
YoursEver:就是你說的"保持原樣",若有疑問可以找video processing 01/22 11:20
YoursEver:的相關資料去確認. 01/22 11:20
skyzer:可是這樣會有一堆bmp檔說...解析度大約是1000x1000 這樣弄 01/22 16:15
skyzer:記憶體不夠本來就很正常 所以才想問有沒有好的處理方式呀 01/22 16:16
skyzer:我對轉bmp檔沒有疑問呀@@" 但輸出希望是影片檔或是mat 01/22 16:19
skyzer:才想知道有沒有什麼串接處理的方法 謝謝 01/22 16:20
YoursEver:轉成bmp吧. 除了花硬碟花迴圈之外什麼都不花,工程上來說 01/22 16:21
YoursEver:不容易找到比這個更方便廉價的解. 01/22 16:22
YoursEver:看看avifile, addframe之類的東西對你有無幫助吧. :) 01/22 16:39
skyzer:請問Y大 那轉成一堆bmp檔後能夠結合回影片檔嗎? 01/22 16:41
skyzer:那兩個我會看看的 謝謝你 01/22 16:41
YoursEver:你看完avifile的範例程式碼就知道了. :) 01/22 20:53
skyzer:原來如此 謝謝你 01/22 22:24