製作了一套 my_cartoon_beautiful 我的影片清晰機,可以把老影片變高解析度的好工具
開發動機:
前陣子在網路上發現 https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan
可以針對卡通圖片變成高解析度圖片的 project,產出的品質相當好,覺得可以整合加以利用。
轉檔速度不是很快,需要有點耐心^^...
有較好的顯卡GPU才能加快速度,初期剛使用把 3WA 早期一些老照片稍微修了一下
Real-ESRGAN 旨在開發通用影像復原的實用演算法,特別針對動漫影像進行最佳化
拿來修一些古早卡通影像效果相當不錯
想法如下:
1. 用 ffmpeg 把影片 → 單張圖片 (一秒30幀)
2. 用 ffmpeg 把影片輸出聲音 (wav)
3. 用 Real-ESRGAN-ncnn-vulkan 把第 1 步驟作出的圖片,轉成高解析度圖片
4. 用 ffmpeg 把高解析度圖片、wav 檔合併回新影片
5. 刪除處理過程的暫存檔
6. 將以上步驟作成 C# 小程式
最近在練習 C# 單機程式開發,當作練習作業
版權:
完全免費的 MIT-License
最初開發日期:
2024-07-28
原始碼在 github:
https://github.com/shadowjohn/my_cartoon_beautiful
產出結果
FB 看到的影片:本田小狼經典飆車畫面,轉檔前
本田小狼經典飆車畫面,轉檔後
細條變得更加清晰,不過有些鉛筆感的細節也稍微失去
2004 年阿山典藏的 akite rmvb 檔...
然後這是清晰後的畫面,線條邊緣、文字,都變得相當清楚
開發心得:
雖然只是用 C# 寫一層皮去呼叫 ffmpeg 與 Real-ESRGAN-ncnn-vulkan,過程也是中了不少混亂,最大的混亂是花了很多時間才發現是因為 ffmpeg 版本過舊,透過 C# 使用 process.start 呼叫外部指令,經過一段時間後會自己掛掉,但在 cmd 手動執行 ffmpeg 又可以順利跑完,嘗試了各種 process 寫法,且把 ffmpeg -progress dump 出去,或是自行計算已處理的 frame 數,最終仍被莫明奇妙的 freezes 卡死,萬念俱灰下把 ffmpeg 更新到新版,就可以順利完成了~~~(撒花)
花了幾個晚上,寫了一個簡單易用的轉檔工具,覺得心情大好~
轉檔速度參考:
3WA 的主機 (Linux) AMD Ryzen 3 4100 + Nvidia 1050ti 轉 30 分鐘的卡通,大概要 4 小時
羽山桌機 (Win11) Intel(R) Xeon(R) CPU E5-2680 v4 + Nvidia GTX 1080 同樣影片,大概 2 小時
轉檔過程轉成圖片,會佔用相當大的硬碟空間~最好在空間較大的硬碟處理
以前典藏的卡通,轉成較好的畫質回味回味
使用方法:
1. 選擇來源影像
2. 選擇要存在哪
3. 選擇影像放大倍數 x2 x3 x4 (越大越久...,羽山是都用 x2 而已)
4. 按下開始轉檔,等待成果
程式相依套件:
1. ffmpeg windows binary static (ffmpeg version N-116451-ge7d3ff8dcd-20240729)
2. realesrgan-ncnn-vulkan (v0.2.0-windows)
3. windows .net framework 4.6.2
版本說明:
在 github 維護說明
參考資料:
1. ffmpeg: https://www.ffmpeg.org/download.html
2. realesrgan-ncnn-vulkan: https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan
特別感謝:
感謝田老師跟 Rickz 大半夜不睡幫忙測試 debug XD