Hello, This is to announce an early version of scikit-video, a scikit for all your video needs :) Please excuse posting here, I think this may be of interest for anyone using scikit-image to work with video. Code: https://github.com/aizvorski/scikit-video Status: There is video reading and writing code, which is a drop-in replacement for opencv's VideoCapture and VideoWriter; some simple video player and transcoder examples using this; and a bunch of video quality metrics. Overall this is beta quality but usable. Motivation: This scikit is intended as a companion to scikit-image: the two are complementary and not competitive. What code is better in scikit-video than in scikit-image? Roughly, if the code *only* makes sense when applied to a sequence of images, then it may be better placed in scikit-video. An example of this would be temporal denoise. Other code which would make sense to have in here is code which is more often seen or used in a video context, even though it may in principle be used for both images or video. An example of this would be the SSIM quality metric. It is intended that scikit-image and scikit-video would "just work" together, for example you might read a video file using skvideo, use a skimage filter on each frame and write out the filtered frames to another file with skvideo. The video I/O part of this is perhaps even more useful now that skimage.io.video is not available in newer skimage releases. Roadmap: - Skeleton project from scikit-example - DONE - Video IO by wrapping ffmpeg/avconv - reading and writing DONE - Video metrics - have SSIM, VIF, PSNR (would like VQM, VQuad, polar edge coherence, ...) - Unit tests and CI - not yet :) (beyond this point are just possible future directions) - (?) TLD, CMT and other object tracking algorithms (wrap C, CUDA code) - (?) Pyramid motion estimation - (?) Details about a compressed video file: macroblock types, motion vectors, ... - (?) 3D denoise, guided filter denoise, etc - (?) Mini video player (there is already a playback example but without UI) - (?) Any existing off-the-shelf projects that would be good to merge into this I expect that if this gathers enough interest it will transition to a group-maintained project similar to skimage or sklearn. Your suggestions, ideas, and code are most welcome. Regards, Alex Izvorski
Hi Alex, Thanks for the notice! I haven't inspected the code, but a robust pure-Python video interface would be very helpful to the Python ecosystem as a whole. I look forward to trying this out in the next few days. As a subtle point, I see it is released under the GPL v3. Much of the scientific Python ecosystem employs the modified BSD license, and we will be unable to link directly to your package or tightly include it from the scikit-image side because of the viral nature of the GPL. Also, some of our contributors would be unable to work on a GPL'd package because of employer requirements. If you would consider re-licensing under the modified BSD, cross pollination with scikit-image and the rest of the Python ecosystem would be much easier! I know, licensing is the last thing we want to deal with - code is where all the fun is - but I figured I'd bring this to your attention in case you were unaware. Cheers, Josh On Saturday, September 27, 2014 1:08:36 AM UTC-4, Alexander Izvorski wrote:
Hello, This is to announce an early version of scikit-video, a scikit for all your video needs :) Please excuse posting here, I think this may be of interest for anyone using scikit-image to work with video. Code: https://github.com/aizvorski/scikit-video Status: There is video reading and writing code, which is a drop-in replacement for opencv's VideoCapture and VideoWriter; some simple video player and transcoder examples using this; and a bunch of video quality metrics. Overall this is beta quality but usable. Motivation: This scikit is intended as a companion to scikit-image: the two are complementary and not competitive. What code is better in scikit-video than in scikit-image? Roughly, if the code *only* makes sense when applied to a sequence of images, then it may be better placed in scikit-video. An example of this would be temporal denoise. Other code which would make sense to have in here is code which is more often seen or used in a video context, even though it may in principle be used for both images or video. An example of this would be the SSIM quality metric.
It is intended that scikit-image and scikit-video would "just work" together, for example you might read a video file using skvideo, use a skimage filter on each frame and write out the filtered frames to another file with skvideo.
The video I/O part of this is perhaps even more useful now that skimage.io .video is not available in newer skimage releases. Roadmap: - Skeleton project from scikit-example - DONE - Video IO by wrapping ffmpeg/avconv - reading and writing DONE - Video metrics - have SSIM, VIF, PSNR (would like VQM, VQuad, polar edge coherence, ...) - Unit tests and CI - not yet :) (beyond this point are just possible future directions) - (?) TLD, CMT and other object tracking algorithms (wrap C, CUDA code) - (?) Pyramid motion estimation - (?) Details about a compressed video file: macroblock types, motion vectors, ... - (?) 3D denoise, guided filter denoise, etc - (?) Mini video player (there is already a playback example but without UI) - (?) Any existing off-the-shelf projects that would be good to merge into this I expect that if this gathers enough interest it will transition to a group-maintained project similar to skimage or sklearn. Your suggestions, ideas, and code are most welcome. Regards, Alex Izvorski
participants (2)
-
Alexander Izvorski
-
Josh Warner