Objectives
cv.jit is a collection of max/msp/jitter tools for computer vision applications. The goals of this project are to provide externals and abstractions to assist users in tasks such as image segmentation, shape and gesture recognition, motion tracking, etc. as well as to provide educational tools that outline the basics of computer vision techniques.
Tools
Statistics | |
---|---|
cv.jit.mean | Calculates the mean value of a matrix over time. |
cv.jit.ravg | Calculates the running average of a matrix over time. |
cv.jit.sum | Sums all the pixels in a plane, works for any type/dim. |
cv.jit.variance | Estimates the variance of a matrix over time. |
cv.jit.stddev | Estimates the standard deviation of a matrix over time. |
Motion Analysis | |
cv.jit.opticalflow | Estimates the optical flow using various algorithms. |
cv.jit.LKflow | Estimates the optical flow using the Lucas-Kanade technique. |
cv.jit.HSflow | Estimates the optical flow using the Horn-Schunk technique. |
cv.jit.track | Track the position of up to 255 individual pixels. |
cv.jit.features2track | Initialize cv.jit.track to easiest pixels to track. |
cv.jit.framesub | Difference between consecutive frames. |
cv.jit.shift | Region tracking using the MeanShift and CAMShift algorithms. |
cv.jit.touches | Track multiple regions at a time. (Optimized for multi-touch interfaces.) |
Binary Images | |
cv.jit.threshold | Adaptive thresholding. |
cv.jit.canny | Extract binary edges from a greyscale image. |
cv.jit.binedge | Returns only edge pixels. |
cv.jit.dilate | Turns a pixel ON if at least one neighbour is ON. |
cv.jit.erode | Removes the edge pixels from an image. |
cv.jit.open | Erode followed by dilate. |
cv.jit.close | Dilate followed by erode. |
Image Segmentation | |
cv.jit.floodfill | Isolates a single connected component. |
cv.jit.label | Gives each connected component a unique value. |
cv.jit.blobs.bounds | Find bounding boxes for each connected component. |
cv.jit.blobs.centroids | Find center of mass for each connected component. |
cv.jit.blobs.direction | Find direction each connected component points to. |
cv.jit.blobs.elongation | Calculate elongation for each connected component. |
cv.jit.blobs.moments | Calculate moments of inertia for each connected component. |
cv.jit.blobs.orientation | Measure angle of main axis for each connected component. |
cv.jit.blobs.recon | Carry out pattern recognition on each connected components. |
cv.jit.blobs.sort | Re-arrange labels so that each connected component keeps the same from frame to frame. |
Shape Analysis | |
cv.jit.mass | Returns the number of non-zero pixels. |
cv.jit.centroids | Calculates the center of mass for an image. |
cv.jit.moments | Computes various invariant shape descriptors. |
cv.jit.orientation | Calculates a shape’s main axis. |
cv.jit.direction | Calculates the direction a shape points to. |
cv.jit.perimeter | Counts the number of edge pixels. |
cv.jit.elongation | Estimates how thin a shape is. |
cv.jit.circularity | Estimates how compact a shape is. |
cv.jit.undergrad | Performs simple pattern recognition. |
cv.jit.learn | Performs pattern analyis and recognition on an incoming list. |
cv.jit.faces | Finds human faces in an image. |
cv.jit.features | Finds areas of high contrast, pixels that are easy to track. |
cv.jit.lines | Finds straight lines. |
cv.jit.hough | Compute Hough space. (by Christopher P. Baker and Mateusz Herczka.) |
cv.jit.hough2lines | Find straight lines in Hough space. |
cv.jit.snake | Fit a point sequence to image edges. |
Miscelaneous | |
cv.jit.grab | Cross-platform wrapper for jit.qt.grab/jit.dx.grab. |
cv.jit.changetype | Change the type of a matrix without changing other attributes. |
cv.jit.resize | Anti-aliased matrix resize. |
cv.jit.cartopol | Treats the data in two matrices as cartesian coordinates and translates to polar data. |
cv.jit.poltocar | …and vice versa. |
Drawing and display | |
cv.jit.track.draw | Visualize output of cv.jit.track. |
cv.jit.lines.draw | Visualize output of cv.jit.lines. |
cv.jit.features.draw | Visualize output of cv.jit.features. |
cv.jit.faces.draw | Visualize output of cv.jit.faces. |
cv.jit.centroids.draw | Visualize output of cv.jit.centroids. |
cv.jit.blobs.orient.draw | Visualize output of cv.jit.blobs.orientation. |
cv.jit.blobs.elongation.draw | Visualize output of cv.jit.blobs.elongation. |
cv.jit.blobs.direction.draw | Visualize output of cv.jit.blobs.direction. |
cv.jit.blobs.centroids.draw | Visualize output of cv.jit.blobs.centroids. |
cv.jit.blobs.bounds.draw | Visualize output of cv.jit.blobs.bounds. |
cv.jit.blobs.color | Visualize output of cv.jit.label. |
cv.jit.shift.draw | Drawing utility for cv.jit.shift. |
cv.jit.flow.draw | Display optical flow using hue and saturation. |
cv.jit.touches.draw | Drawing utility for cv.jit.touches. |
Obsolete objects | |
cv.jit.covariance | Computes the covariance matrix of a vector. |
cv.jit.mahalanobis | Computes the Mahalanobis metric. |
cv.jit.hmean | Calculates the harmonic mean over time. |
cv.jit.gmean | Calculates the geometric mean over time. |
cv.jit.trackpoints | Display utility for cv.jit.track. |
cv.jit.trackgroup | Manager utility for cv.jit.track. |
cv.jit.shapeinfo | Wrapper for cv.jit.moments. |
Download
The latest version of cv.jit is 1.8 and can be used with 64-bit versions of Max. A big thanks to the good folks at Cycling ’74 for porting the externals.
Download the latest build from the Github repository. Updated on 2015.4.30
Previous version (only runs on 32-bit Max)
Download cv.jit version 1.7.2. for OSX (Universal Binary).
Updated on 2010.10.13
Download cv.jit version 1.7.2 for Windows. Updated on 2010.10.13
Older versions that support Max 4.6 and earlier
Download cv.jit version 1.6.2 for OSX (Universal Binary).
Download cv.jit version 1.6.2 for Windows.
Legacy
License
cv.jit is distributed according to the LGPL license. This means that you can freely use these externals as part of a Max patch.
Source Code
Download the development files for OSX and Windows, including source and project files. You can also obtain the source code from the Subversion repository at the following address: https://cvjit.svn.sourceforge.net/svnroot/cvjit
Download the development files for the 64-bit port, including source and project files.
Requires jitter, available from Cycling ’74.
6 Comments
Dear Jean-Marc Pelletier,
today I got a notification from Windows Defender, claiming the OSX externals of cv.jit are infected with a trojan. Is this a flase positive or is there an infection throughout opencv libraries?
Thanks and best regards
Damian Dziwis
I ran a virus check on the binaries just in case but could not replicate. This is almost certainly a false positive. There’s a new version with bug fixes coming soon anyway so you might try again when it comes out.
Dear Jean-Marc Pelletier,
I’m working on my first jitter external I want to release open source “rj.jit.findcontours”
I can build correctly with dynamic libraries but I’m getting a lot of errors with static libraries.
Can you support me a little? My goal is to get a visual studio 2019 working project so I can create more externals with static libraries.
My email is rajancraveri[at]gmail[dot]com
Thanks for your work
https://jmpelletier.com/building-your-own-cv-jit-externals/
Dear Jean-Marc,
Thank you for developing an excellent package for computer vision in MAX! I have been working with cv.jit for almost a year now and I’ve had great success with it so far!
I am creating an object recognition system for my MFA body of work and I keep encountering a bug with the cv.jit.blobs.recon object. It often gives me the following error: “File xxx.mxb was not created by cv.jit.learn.” I’ve created all my models with cv.jit.learn and I can’t seem to find a solution for this anywhere. Do you have any advice?
I can see that a new version of the package is in the works and I can’t wait for its release!
If you have some time, I would love to get your thoughts on my project.
Looking forward to hearing back from you soon,
Best,
Leila
Merci pour cv.jit.
Outil exceptionnel pour mon travail et ma recherche.
JPD