background preloader

Computer Vision

Facebook Twitter

Image processing - How to define the markers for Watershed in OpenCV? SURF in OpenCV | Achu's TechBlog. Let us now see what is SURF. SURF Keypoints of my palm SURF stands for Speeded Up Robust Features. It is an algorithm which extracts some unique keypoints and descriptors from an image. More details on the algorithm can be found here and a note on its implementation in OpenCV can be found here. A set of SURF keypoints and descriptors can be extracted from an image and then used later to detect the same image.

SURF uses an intermediate image representation called Integral Image, which is computed from the input image and is used to speed up the calculations in any rectangular area.It is formed by summing up the pixel values of the x,y co-ordinates from origin to the end of the image. Object detection using SURF is scale and rotation invariant which makes it very powerful. OpenCV library provides an example of detection called find_obj.cpp. The explanation of the code is straightforward. SURF keypoints of my mobile phone Here are a few more screenshots of object recognition using surf: Color Detection & Object Tracking. Object detection and segmentation is the most important and challenging fundamental task of computer vision.

It is a critical part in many applications such as image search, scene understanding, etc. However it is still an open problem due to the variety and complexity of object classes and backgrounds.The easiest way to detect and segment an object from an image is the color based methods . The object and the background should have a significant color difference in order to successfully segment objects using color based methods. Simple Example of Detecting a Red Object In this example, I am going to process a video with a red color object and create a binary video by thresholding the red color. You can download this OpenCV visual c++ project from here. Explanation OpenCV usually captures images and videos in 8-bit, unsigned integer, BGR format. Usually, one can think that BGR color space is more suitable for color based segmentation. Arguments - Simple Example of Tracking Red objects. Opencv haartraining | Shehan's blog. Tutorial: OpenCV haartraining (Rapid Object Detection With A Cascade of Boosted Classifiers Based on Haar-like Features) - Naotoshi Seo.

Tutorial: OpenCV haartraining (Rapid Object Detection With A Cascade of Boosted Classifiers Based on Haar-like Features) Objective The OpenCV library provides us a greatly interesting demonstration for a face detection. Furthermore, it provides us programs (or functions) that they used to train classifiers for their face detection system, called HaarTraining, so that we can create our own object classifiers using these functions. It is interesting. However, I could not follow how OpenCV developers performed the haartraining for their face detection system exactly because they did not provide us several information such as what images and parameters they used for training. The objective of this report is to provide step-by-step procedures for following people. My working environment is Visual Studio + cygwin on Windows XP, or on Linux.

A picture from the OpenCV website History Tag: SciSoftware ComputerVision FaceDetection OpenCV Data Prepartion . and Computer Vision Test Images . Database. 1. . Computer Vision Software » Blog Archive » FAQ: OpenCV Haartraining. Hi All, before posting your question, please look at this FAQ carefully! Also you can read OpenCV haartraining article. If you are sure, there is no answer to your question, feel free to post comment. Also please, put comments about improvement of this post. This post will be updated, if needed.

Positive images Why positive images are named so? Because a positive image contains the target object which you want machine to detect. What’s vec file in OpenCV haartraining? During haartraining positive samples should have the same width and height as you define in command “-w -h size”. Is it possible to merge vec files? Yes, use Google, there are free tools, written by OpenCV’s community. I have positive images, how create vec file of positive samples? There is tool in C:\Program Files\OpenCV\apps\HaarTraining\src createsamples.cpp. Createsamples -info positive_description.txt -vec samples.vec -w 20 -h 20 What’s positive description file? Yes, with createsamples you need description file. Or No. Yes. Image Segmentation. Pff's homepage Below is a C++ implementation of the image segmentation algorithm described in the paper: Efficient Graph-Based Image Segmentation Pedro F.

Felzenszwalb and Daniel P. Huttenlocher International Journal of Computer Vision, Volume 59, Number 2, September 2004ps.gz pdf The source code is available as a tgz file segment.tgz, or zip segment.zip (updated on 3/21/07). Example segmentation results: Segmentation parameters: sigma = 0.5, K = 500, min = 50. Segmentation parameters: sigma = 0.5, K = 1000, min = 100. Tutorial: OpenCV haartraining (Rapid Object Detection With A Cascade of Boosted Classifiers Based on Haar-like Features) - Naotoshi Seo. Coding Robin. Open this page, allow it to access your webcam and see your face getting recognized by your browser using JavaScript and OpenCV, an "open source computer vision library". That's pretty cool! But recognizing faces in images is not something terribly new and exciting. Wouldn't it be great if we could tell OpenCV to recognize something of our choice, something that is not a face?

Let's say... a banana? That is totally possible! What we need in order to do that is called a "cascade classifier for Haar features" to point OpenCV at. Here's the good news: we can generate our own cascade classifier for Haar features. But now for the best of news: keep on reading! The following instructions are heavily based on Naotoshi Seo's immensely helpful notes on OpenCV haartraining and make use of his scripts and resources he released under the MIT licencse.

Let's get started The first thing you need to do is clone the repository on GitHub I made for this post. You'll also need OpenCV on your system. Training Haar Cascades | memememe. For better or worse, most cell phones and digital cameras today can detect human faces, and, as seen in our previous post, it doesn’t take too much effort to get simple face detection code running on an Android phone (or any other platform), using OpenCV.

This is all thanks to the Viola-Jones algorithm for face detection, using Haar-based cascade classifiers. There is lots of information about this online, but a very nice explanation can be found on the OpenCV website. (image by Greg Borenstein, shared under a CC BY-NC-SA 2.0 license) It’s basically a machine learning algorithm that uses a bunch of images of faces and non-faces to train a classifier that can later be used to detect faces in realtime. The algorithm implemented in OpenCV can also be used to detect other things, as long as you have the right classifiers. My OpenCV distribution came with classifiers for eyes, upper body, hands, frontal face and profile face. Actually, that last link is for more than just iPhones. 1. 2. 2a. 3.

Welcome to opencv documentation! — OpenCV 2.4.9.0 documentation. OpenCV 3 Image Thresholding and Segmentation. Thresholding Thresholding is the simplest method of image segmentation. It is a non-linear operation that converts a gray-scale image into a binary image where the two levels are assigned to pixels that are below or above the specified threshold value. In other words, if pixel value is greater than a threshold value, it is assigned one value (may be white), else it is assigned another value (may be black).

In OpenCV, we use cv2.threshold() function: cv2.threshold(src, thresh, maxval, type[, dst]) This function applies fixed-level thresholding to a single-channel array. The function returns the computed threshold value and thresholded image. src - input array (single-channel, 8-bit or 32-bit floating point). Picture source: threshold dst - output array of the same size and type as src. Thresholding - code and output The code looks like this: Output: Original images are available : gradient.png and circle.png Adaptive Thresholding where: Here is the code for adaptive thresholding: Algorithm - Image Segmentation using Mean Shift explained. OpenCV Tutorial Part 6 - 推酷.

Hi folks! I’m glad to publish a sixth part of the OpenCV Tutorial cycle. In this post I will describe how to implement interesting non-photorealistic effect that makes image looks like a cartoon. It has numerous names: cartoon filter or simply “toon” also it known as rotoscoping. In addition we will refactor application interface and add tweeting feature to share your results across the web. Don’t afraid, video recording will be added, but later. Interface improvements I will never get tired to repeat that user experience is a top 1 priority for mobile apps.

I was unsatisfied with previous interface. The left toolbar button for image view responsible for selecting a photo; in the video mode I put a button that switches between front and back cameras to this position. iPhone interface improvements iPad interface improvements To eliminate duplicate code for two processing modes (image and video) we introduce a base class to store common data for derived views: Image negative Result: Conclusion.

OpenCV 3 Watershed Algorithm : Marker-based Segmentation I. Hough Circle Detection. Cell Counting - MATLAB & Simulink Example. This example shows how to use a combination of basic morphological operators and blob analysis to extract information from a video stream. In this case, the example counts the number of E. Coli bacteria in each video frame. Note that the cells are of varying brightness, which makes the task of segmentation more challenging. Introduction This example illustrates how to use the morphological and BlobAnalysis System objects to segment individual cells and count them. Initialization Use these next sections of code to initialize the required variables and objects. VideoSize = [432 528]; Create a System object™ to read video from avi file. filename = 'ecolicells.avi'; hvfr = vision.VideoFileReader(filename, ...

Create two morphological dilation System objects which are used to remove uneven illumination and to emphasize the boundaries between the cells. hdilate1 = vision.MorphologicalDilate('NeighborhoodSource', 'Property', ... Hautoth = vision.Autothresholder( ... Hblob = vision.BlobAnalysis( ... Introduction to programming with OpenCV.