Expert in areas of Computer Vision, Multimedia, Messaging, Networking and others. Focused on embedded software development. Competent in building cross-platform solutions and distributed SW systems.
Offer standalone custom solutions as well as integration of existing products. Opened for outsourcing services.
Posted on : 02-06-2009 | By : rhondasw | In : OpenCV
275
OpenCV’s standart cascades allow to detect faces and eyes. I wanted to create cascade in similar way to detect another objects: pringles or plate for example. I found some material in Net how to use OpenCV training tools, also I investigated training tool’s source code myself to found out, what training parameters can be tuned.
Prepare images.
For training, I needed thousands of images, containing my object with different lightning conditions and perspectives. After trying to find required number of pictures with Google , I understood, that it’s really difficult task =). So I decided to take video with my object, then I wrote simple program to crop object from video, frame by frame. In such way, I generated about 3000 positive samples (cropped images with my object). Resolution varied from 50×50 to 100×100. The advantage of this method – you get many samples with different reflections, illuminations and backgrounds. It’s very important, that all these images “features” are various!
On this demo CV system tracks moving people using single PTZ (pan/tilt/zoom) camera (AXIS 214) and tries to positioning it to always keep first entered person in the camera sight. When PTZ stops in new position, the system filters out still objects from those that actually moving, assigns unique IDs (and color frames) to them and measures proximity of these objects to the original one using color-histogram-based algorithm. The object with highest proximity will be treated as a target. System will turn camera in the direction where targeting object moves, when it is approach to the border of camera sight (the red rectangle on the border indicates direction of next movement of PTZ cam).
This video demo illustrates color-histogram-based object tracker in action. CV system tracks people as moving blobs (“clouds” of moving pixels) identifies them and distinct one from another in case of occlusions. When two (or more) blobs are intersected, system merges them in one combined object and marks it by IDs of all those source-objects that currently included in the combination. When one of objects separates from the combination CV system recognize which one is out and re-arrange ID appropriately. This approach works pretty well in case of characteristic histograms.
Here is a demo of the jerry-built algorithm that finds barcode plates using Hough transform. Actually the video is mostly speaking for itself. Two points to comment:
The frames of barcodes are a bit long, since with given approach there is distinct difficulty in precise identification of barcode beginning and ending, so borders where widened to not miss the useful part, which is not really critical since extracted region of interest is still quite small.
The task was to detect only one barcode, so when there are several of them in the camera sight, CV system selects the best one (those with the most distinct lines). Since conditions of lighting and sharpness are always floating in video, system jumps from one barcode to another.
This demo video demonstrates ability of CV system to take snapshots of several moving people by means of two digital cameras: static (QuickCam Pro 9000) and moving (AXIS 214) PTZ (pan/tilt/zoom). CV system tracks moving people (using color-histogram-based tracker) on the video taken by the static camera and targeting PTZ cam to one of people, negotiating the number of already captured snapshots per person and distance to peoples on scene. Since PTZ cam positioning takes some time, the predicting algorithm is used to forecast future position of the person, which allows targeting PTZ cam more accurately.
This is a demo of object recognition technique based on extraction and matching of characteristic points on objects with evident texture. This technique allows recognizing object by various angles and in case of partial occlusions. The demo clip is self-explanatory – obviously it works just fine.
Posted on : 10-04-2009 | By : rhondasw | In : OpenCV
10
Today’s story is about improving performance of OpenCV library on the ARM-based platforms.
As you already know (from here or from here or may be even from here), face detection algorithm implemented by OpenCV library doesn’t work perfectly on ARM processors. Science doesn’t know for certain why this happens. There might be several possible reasons. One of our assumption was missing of hardware support for floating point operations. So we tried to translate Viola-Jones algorithm from floating point to fixed point. And that’s how we did this…
Posted on : 09-04-2009 | By : Aleksey Kodubets | In : OpenCV
46
By default OpenCV 1.1 don’t support AXIS ip-cameras. So, this paper describes approach for getting camera interface (cvCaptureFromCAM) from OpenCV when you are using an Axis Ip camera.
Posted on : 02-04-2009 | By : rhondasw | In : OpenCV
18
This time OpenCV was ported to the Apple iPhone platform.
First of all we need to compile OpenCV library itself so that it can be used on the iPhone. There are two ways here:
1. Use OpenCV as a private framework.
2. Compile OpenCV as a static library.
First approach looks more comfortable for using, though I was not able to make it work properly on the iPhone (it works fine on the simulator, but not on the real hardware).
But anyway, let’s see how both approaches can be followed.