Bagaimana proses pewarnaan video hitam putih bekerja
- AI colorization: Model dilatih dengan jutaan foto/video berwarna untuk memprediksi warna alami. Misalnya langit โ biru, daun โ hijau, kulit manusia โ tone natural.
- Frame-by-frame: Video dipecah jadi frame gambar, tiap frame diwarnai, lalu digabung lagi.
- Manual + semi-otomatis: Editor bisa kasih petunjuk warna (mask/region), sisanya diisi otomatis.
Alat yang bisa dipakai
- DeOldify (open source): Populer untuk foto & video lama, berbasis Python/deep learning.
- DaVinci Resolve: Profesional; kombinasi dengan plugin/AI untuk colorization.
- Adobe After Effects/Premiere Pro: dengan plugin pihak ketiga untuk pewarnaan dan koreksi.
- Topaz Video AI: peningkatan kualitas; beberapa kasus bisa bantu colorization.
- Online tools: cepat untuk video pendek, tapi terbatas resolusi/durasi.
Catatan hasil
- Akurasi: tidak selalu 100% (warna baju/objek tertentu bisa salah tebak).
- Kombinasi: hasil terbaik pakai AI + koreksi manual (grading).
- Kualitas sumber: semakin bagus kualitas asli, semakin enak diwarnai.
Workflow praktis dengan ffmpeg + DeOldify
Berikut alur sederhana yang bisa kamu jalankan di Linux/macOS/Windows (dengan Python dan ffmpeg terpasang). Kita ekstrak frame, warnai dengan DeOldify, lalu gabungkan kembali dan re-attach audio.
1) Siapkan lingkungan
# Pastikan ffmpeg terpasang
# macOS (Homebrew)
brew install ffmpeg
# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y ffmpeg
# Windows: install ffmpeg dari situs resmi, lalu tambahkan ke PATH
# Buat environment Python (opsional, dianjurkan)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependensi DeOldify (versi minimal)
pip install torch torchvision
pip install fastai==1.0.60
pip install deoldify==0.6.0 # jika tersedia; alternatif: pakai repo source
2) Ekstrak frame dari video
# Struktur folder
mkdir -p work/frames work/colorized
# Ekstrak frame (simpan sebagai PNG untuk kualitas)
# Ganti input.mp4 dengan video hitam putih kamu
ffmpeg -i input.mp4 -qscale:v 1 work/frames/frame_%05d.png
# Ekstrak audio (jika ada)
ffmpeg -i input.mp4 -vn -acodec copy work/audio.aac
3) Warnai frame dengan DeOldify (Python)
Kita gunakan DeOldify โartisticโ untuk warna yang menarik; bisa ganti ke โstableโ untuk warna lebih natural. Contoh skrip Python di bawah ini membaca semua frame dan menyimpan versi berwarna ke folder work/colorized
.
# colorize_frames.py
import os
from pathlib import Path
from PIL import Image
import torch
# DeOldify imports (pastikan deoldify tersedia)
from deoldify import device
from deoldify.device import DeviceId
from deoldify.visualize import get_artistic_image_colorizer, get_stable_image_colorizer
# Pakai GPU jika tersedia, kalau tidak otomatis CPU
device.set(DeviceId.GPU if torch.cuda.is_available() else DeviceId.CPU)
# Pilih model: artistic atau stable
colorizer = get_artistic_image_colorizer() # alternatif: get_stable_image_colorizer()
frames_dir = Path("work/frames")
out_dir = Path("work/colorized")
out_dir.mkdir(parents=True, exist_ok=True)
# Parameter render: bisa di-tuning
render_factor = 35 # naikkan untuk detail, turunkan untuk speed/warna lembut
frames = sorted(frames_dir.glob("frame_*.png"))
print(f"Memproses {len(frames)} frame...")
for i, frame_path in enumerate(frames, 1):
try:
result = colorizer.get_transformed_image(
str(frame_path),
render_factor=render_factor,
post_process=True
)
# Simpan
out_path = out_dir / frame_path.name
result.save(str(out_path))
if i % 50 == 0:
print(f" >> {i}/{len(frames)} frame diwarnai...")
except Exception as e:
print(f" !! Gagal memproses {frame_path.name}: {e}")
print("Selesai mewarnai semua frame.")
4) Gabungkan kembali frame menjadi video berwarna
# Gabungkan frame berwarna jadi video (sesuaikan framerate)
# Untuk framerate yang sama dengan input, bisa baca dari ffmpeg -i input.mp4
ffmpeg -framerate 25 -i work/colorized/frame_%05d.png -c:v libx264 -pix_fmt yuv420p work/colorized_noaudio.mp4
# Tempelkan audio asli (jika diekstrak)
ffmpeg -i work/colorized_noaudio.mp4 -i work/audio.aac -c:v copy -c:a aac -b:a 192k -shortest output_colorized.mp4
Tips hasil lebih bagus
- Render factor: coba nilai 28โ40. Terlalu tinggi bisa over-saturation atau artefak, terlalu rendah kurang detail.
- Stabil vs artistik: โstableโ untuk warna natural, โartisticโ untuk warna lebih hidup/dramatis.
- Preprocessing: naikkan resolusi dengan upscaler (mis. waifu2x untuk animasi, Topaz untuk video) sebelum colorization.
- Grading akhir: pakai editor (Resolve/Premiere) untuk koreksi warna global dan konsistensi antar scene.
- Berkas besar: proses per segmen (split video per bab) untuk menghindari kehabisan RAM/VRAM.
Intinya: ekstrak frame โ colorize dengan DeOldify โ gabungkan dengan ffmpeg โ re-attach audio โ lakukan color grading akhir. Simpel, modular, dan bisa diulang untuk proyek lain.


Sebelum

Sesudah

Workflow