27 Aralık 2012 Perşembe

Feature Detection with ORB and Matching with FLANN(Android)


Algorithm
 
1. Detect the keypoints using ORB Detector
2. Calculate descriptors by using vectors
3. Matching descriptor vectors by using FLANN 
4. Calculate min and max distances between keypoints
5. Show number of good matches (whose distance is less than 2*minimum distance)

 

26 Aralık 2012 Çarşamba

Object Detection and Tracking with SURF and SIFT

We have some troubles about executing SURF and SIFT examples.But we have solved the problem and got some examples.













We executed object detection and tracking codes in visual studio.









 



12 Aralık 2012 Çarşamba

OpenCV Samples


http://opencv.org/platforms/android/opencv4android-samples.html

OpenCV Sample - image-manipulations( Posterize )


OpenCV Sample - image-manipulations( Canny )
OpenCV Sample - Face Detection


OpenCV Sample - Feature Point Descriptors

3 Aralık 2012 Pazartesi

ViewFinder Example with Android

In android tutorial we mentioned in our older posts there is another example application named viewfinder.  (To see the tutorial)

We followed the instructions step by step. Then we ran the application on our android device. Application shows standart deviation and color histograms dynamically. Here are some screenshots from application.


2 Aralık 2012 Pazar

Descriptors on Visual Studio

      Before android studies ,we have executed some samples codes on Visual Studio with opencv.A few weeks ago we did some matching examples on pictures with MATLAB.But matlab is slow program and our project is have to be real-time application.So that speed is more important.
First example includes same images with our MATLAB studies.











Here is the result image of c++.Interest points of first image is 591.And the matching score is 565.As you can see there are some incorrect datas.But they can  be ignored.



















In addition to this ,according to our project ,we wanted to try some special images.We used template matching sample for it.And These are the results:

Introduction to Android with Opencv

While we are working on image processing, at the same time we started to learn Android programming. Because our project is going to work on mobile devices.

We are new in android programming and we needed a start point. So we completed this tutorial to make our first android application. Our next move is completing the second tutorial at the same page.

First of all we executed sample android code on Visual Studio 2010 /C++.

After that we have decided to develope our project on eclipse and we have started to study on this way.

Results:
This sample is on eclipse screen:
This example is our android device:





20 Kasım 2012 Salı

VLfeat Matching Examples


         While we are studying on image processing ,we have started to find interest points on images.After that we are studying on matching the interest points between two almost same images.First of all we have two images.It includes nearly same view on same viewpoint.Basic idea is that finding the interest points on the images and matching them .
         There is a result of this process.It gives us nearly correct matches.We worked on vl feat open source library which implements popular computer vision algorithms including HOG, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixels, and quick shift. It is written in C for efficiency and compatibility, with interfaces in MATLAB for ease of use, and detailed documentation throughout. It supports Windows, Mac OS X, and Linux.
         But there is a problem here because your images can be different size or high quality so that you change the code lines like that:

on vl_demo_covdet.m;
         % vl_imarraysc(reshape(patches(:,1:10*10), w,w,[])) ;
         vl_imarraysc(reshape(patches(:,1:size(frames,2)), w,w,[])) ;

Then if your image has high quality you can resize images;
         imresize(image,1/3.0,'bicubic');




            








             But there are different images.There is puzzle box while you can see top of the box at first image,you can see bottom of the box at second image and the back ground is a carpet.As a result of the matching process,we can see  the program has matched the carpet pattern on images.We can not say the matching process is totally wrong but ıt has trick point.the pattern  is same all over the carpet so that program finds the interest points and matches them.but this images can be located different places on it. there  is an example for this situation:




7 Kasım 2012 Çarşamba

Samples of Key Points and Descriptors

We tried these codes in order to find key points and descriptors. Then we have these pictures as results of changing the bold line with the ones above each pictures.

imPath = fullfile(‘alex.jpg’) ;
im = imread(imPath) ;
imgs = im2single(rgb2gray(im)) ;
[frames, descrs] = vl_sift(imgs) ;
imagesc(im) ; colormap gray; hold on ;
vl_plotframe(frames) ;
vl_plotsiftdescriptor(descrs(:,432), frames(:,432)) ;

original image:
[frames, descrs] = vl_sift(imgs) ;
frames = vl_covdet(imgs, 'verbose') ;
frames = vl_covdet(imgs, 'method', 'Hessian') ;
frames = vl_covdet(imgs, 'method', 'HarrisLaplace');
frames = vl_covdet(imgs, 'EstimateAffineShape', true) ;

Local Features: Detection and Description

Matching two images is one of the subjects that we want to learn for implementing our project. Hereby we have worked on the Local Features subject. Rotation, scaling, viewpoint changes makes harder matching process. Image matching process contains five steps:
 1. Find a set of distinctive keypoints: For better results, points which changes in both directions should be chosen. These points are generally corners.
 2. Define a region around each keypoint in a scale- or affine-invariant manner: Similarity of signature functions helps matching process. In affine-invariant region detection, strong viewpoint changes can be handled too.
 3. Extract and normalize the region content: In this step rotation invariances are fixed.
 4. Compute a descriptor from the normalized region: Finally a descriptor is encoded for content discriminative matching process. SIFT and SURF are the example implementations of local descriptors. 5. Match the local descriptors.

 In conclusion we have learned the algorithm of matching process with local descriptors. This functionality can be used in stereo matching, image retrieval, object recognition and categorization.

27 Ekim 2012 Cumartesi

How we see?

Every single living system has vision techniques.Thereby they can detect objects. But there is a question right there; how we can be sure this object is really what it looks like. Because context is everything. For example; when we see an orange point on different backgrounds, we can easily decide they are the same orange point or on the same background we can say they are different colors. Actually context makes illusions which we can think of the bugs of our visual system.There is a speech which is about these illusions by Beau Lotto.

 Link

16 Ekim 2012 Salı


Hi! This is a blog to record all of our studies during the Project which is about image processing. This Project can be a game based on augmented reality or an application using image processing. We are going to decide the exact subject later. Firstly we are trying to understand what is image processing and what makes it so hard? According to our first readings image processing is hard because we see the objects around us and process them very easily without an effort. This makes it hard to accept that our sight differs from our perception. Although our eyes behaves just like a camera, our neurons makes a reasonable image from the photo we took with our eyes. To solve a problem like this we must work on representation and algorithm. The people who never think abut visual perception might say that inner screen theory is a good answer. But this theory does not explain how we can understand the objects’ shapes, colors or the other features. There is another evidence that proofs the existence of our visual perception system is illusions. That means our visual perception system has a working algorithm and it sometimes makes mistakes based on its assumptions.