Patent Expired on SIFT

Hurray, team 'what is right and just'.  The patent on the SIFT algorithm has expired.  You may now use it in your for sale' software applications and hardware without fear from the threat of litigation.

If you don't know what SIFT (scale-invariant feature transform) is, and profess to work in computer vision, get with the program.  David Lowe wrote a lot of great papers, but this is the one that launched an onslaught of additional referencing computer vision papers that used or at least acknowledged SIFT.
Here is the original paper.
Here are some additional David Lowe SIFT Keypoint Detector paper references.

SIFT is part of a large number of different image 'feature point' detector algorithms. Feature points are also called interest points because your brain is apparently very interested in them. Feature or interest points are visually salient locations associated with an object in an image that can be used for all kinds of different purposes, including:
1: to identify what kind of object they belong to, or to help match up different views of the object.
2: or  to identify things like 3D object reconstruction from a set of 2D view images taken of the object.
3: or for matching an object when you are stitching together different photos that contain the object to build a panorama image.
4: or to match up different exposure settings of a view containing an object to build HDR (high dynamic range) images from multiple exposures of the same scene.
5: you get the idea, imagine more uses for visually salient feature matching here (hint, try image compression or visually salient difference measures, etc).

But there is more big news associated with this joyous software patent expiration.
OpenCV 4.0 has now just been released.
And the SIFT code in OpenCV has now been moved from the 'don't use in commercial applications because of patent issues' folder into the main OpenCV repository that build as the default dynamic library framework.

So we can start using SIFT as an option in Studio Artist when we generate visually salient interest points, which will be fun. 

OpenCV 4.4 also adds some fun new features to the dnn module (which is where all of the deep learning neural net capabilities live in OpenCV).  Yolov4 detectors are now supported. Yolo is an acronym for 'you only look once'.  Because you do, you only look once and then can remember what something looks like (most of the time), so why can't your deep learning neural network do the same.

We should probably cover Yolo detectors in more depth in another HTC post, so look for that as an upcoming future post. Yolo detectors use Anchor Boxes, as opposed to scanning a sliding window across the entire image at all potential object positions, leading to hopefully faster processing time.

We will definitely cover OpenCV in much more detail in future posts. It is an essential recipe ingredient (ie. code framework) hidden away in the background many different HTC posts.  For example, in this monday's post on the OAK AIKit.

OpenCV is your open source swiss army knife of computer vision and image processing features.  They are very devoted to being cross platform.  They are also very devoted to supporting optimized compilation for deployment on many different platforms.

OpenCV can be compiled to use the Qt framework for it's built in image display capabilities.

OpenCV can be accessed via Python bindings if you want to sue it in Python code.  OpenCV itself is C++, so when you use it in Python code there is a Python binding that gets called that then runs the C++ code.

OpenCV already runs on ios, so you can already compile a version of it for apple ARM chips.  So it stands to reason they will be on it to insure direct support for ARM chip macs in future releases. OpenCV 4.4 also includes Obj-C / Swift bindings to make it easier to work with it in apple's proprietary Swift language (if you must).


Popular posts from this blog

Simulating the Universe with Machine Learning

CycleGAN: a GAN architecture for learning unpaired image to image transformations

Pix2Pix: a GAN architecture for image to image transformation