A comprehensive resource for diving deep into the fascinating world of digital video processing. Whether you're starting from the basics or looking to refine your advanced skills, this workshop provides hands-on guidance and clear explanations.
Note
The mathematics requirements below are not mandatory but will significantly deepen your understanding of machine learning concepts.
- π¨βπ» Programming Fundamentals
- π Proficiency in Python (data types, control structures, functions, classes, etc.).
- My Python Workshop: github.com/mr-pylin/python-workshop
- π¦ Experience with libraries like NumPy and Matplotlib.
- My NumPy Workshop: github.com/mr-pylin/numpy-workshop
- My Data Visualization Workshop: github.com/mr-pylin/data-visualization-workshop
- π Proficiency in Python (data types, control structures, functions, classes, etc.).
- π£ Mathematics for Video Processing
- π² Linear Algebra: Vectors, matrices, matrix operations.
- Linear Algebra Review and Reference written by Zico Kolter.
- Notes on Linear Algebra written by Peter J. Cameron.
- MATH 233 - Linear Algebra I Lecture Notes written by Cesar O. Aguilar.
- π² Probability & Statistics: Probability distributions, mean/variance, etc.
- π² Linear Algebra: Vectors, matrices, matrix operations.
- πΆ Digital Signal Processing Knowledge
- My Digital Image Processing Workshop: github.com/mr-pylin/image-processing-workshop
- Digital Image Processing (4th Edition) written by Rafael C. Gonzalez & Richard E. Woods
- The Scientist and Engineer's Guide to Digital Signal Processing written by Steven W. Smith
Important
This project requires Python v3.10 or higher. For optimal compatibility and to avoid potential issues with dependencies, it is strongly advised that you use the Python version specified in the .python-version file.
-
Use uv for dependency management. It handles dependencies, virtual environments, and locking versions more efficiently.
-
To install exact dependency versions specified in uv.lock for consistent environments without installing the current project as a package:
uv sync --no-install-project
-
Install all dependencies listed in requirements.txt using pip:
pip install -r requirements.txt
Caution
pip does not lock dependency versions as strictly as uv. You may encounter version conflicts or reproducibility issues. Only use this method if you know what you are doing.
- Open the root folder in VS Code (
Ctrl/Cmd + KthenCtrl/Cmd + O). - Open
.ipynbfiles using the Jupyter extension integrated within VS Code. - Allow VS Code to install any recommended dependencies for working with Jupyter Notebooks.
- Select the correct Python kernel and virtual environment in which the dependencies were installed.
Note
- Stick with the exact dependency versions specified in uv.lock or requirements.txt. The repository has been tested with these versions to ensure compatibility and stability.
- This repository is actively maintained, and dependencies are updated regularly to the latest stable versions.
- The table of contents embedded within notebooks (
.ipynbfiles) may not function correctly on GitHub. - For an improved experience, open the notebooks locally or view them via nbviewer, rather than directly on GitHub.
-
ffmpeg & ffprobe:
- ffmpeg is a Swiss Army knife for media, used for converting and manipulating audio and video files in a wide range of formats.
- Link: github.com/BtbN/FFmpeg-Builds
-
Video Quality Measurement Tool (VQMT):
- It is a software program designed to analyze the quality of digital video and images.
- Link: compression.ru/video/quality_measure
-
yuv-player:
- A Lightweight YUV player that supports various YUV formats.
- Link: github.com/Tee0125/yuvplayer
-
DIP3/e β Book Images
- A collection of all images and videos used in the Digital Image Processing (3rd Edition) book, written by Rafael C. Gonzalez and Richard E. Woods.
- Permission is required from the owner of a Β© image if the image is used for other than personal educational or research purposes.
- Link: imageprocessingplace.com/DIP-3E/dip3e_book_images_downloads.htm
-
YUV4MPEG Videos:
- Derf's video collection provides uncompressed YUV4MPEG clips for testing video codecs.
- Link: media.xiph.org/video/derf
- Codecs are algorithms used to compress and decompress signals, ensuring efficient storage and transmission of high-quality signals e.g. videos.
- For detailed information on popular video codecs, refer to the ./codecs/README.md.
- A fundamental package for scientific computing in Python, providing support for arrays, matrices, and a large collection of mathematical functions.
- Official site: numpy.org
- A comprehensive collection of Python libraries for creating static, animated, and interactive visualizations: Matplotlib, Seaborn, and Plotly.
- Official sites: matplotlib.org | seaborn.pydata.org | plotly.com
- A powerful open-source library (primarily written in C++) for computer vision and image processing tasks.
- Supports a wide range of functionalities, including image and video processing, object detection, facial recognition, and more.
- Compatible with multiple programming languages, including Python, C++, and Java.
- Official sites: opencv.org
- Found an issue, have a suggestion, or wish to contribute? Your input is highly valued.
- Reach out to me via linktr.ee/mr_pylin.
This project's code is licensed under the Apache License 2.0. This license grants you the freedom to use, modify, and distribute the code. However, any distribution of the code must include copies of both the LICENSE and NOTICE files.
-
β Original Assets:
- The assets located in the ./assets/original/ folder are licensed under the CC BY-ND 4.0.
- Note: This license restricts derivative works, meaning you may share these assets but cannot modify them.
-
π External Assets:
- The assets located in the ./assets/external/ folder are collected from multiple third-party sources.
- Each subfolder within ./assets/external/ contains its own
ATTRIBUTION.mdfile detailing the relevant copyright, license, and attribution information for the assets within that specific subfolder. - Users must review the applicable
ATTRIBUTION.mdfile before using, redistributing, or modifying any external asset.
- If you are a copyright holder and believe that any asset in this repository has been included improperly or without appropriate attribution, please contact the repository maintainer.
- Upon verification, the content will be promptly corrected or removed as necessary.