Ask Your Question

gfuhr's profile - activity

2016-05-27 15:19:38 -0600 received badge  Nice Answer (source)
2014-08-10 00:48:33 -0600 received badge  Nice Answer (source)
2013-03-03 16:33:17 -0600 received badge  Nice Answer (source)
2012-09-21 08:21:34 -0600 commented answer Baby's first SLAM algorithm

There is also the SLAM for dummies :-), which I think it is good.

2012-09-12 13:57:31 -0600 commented question OpenCV Pedestrian Counting

Counting pedestrian is a difficult problem in a unconstrained scenario. Detecting and tracking pedestrians are also mostly open problems. As always, it would be nice if you could provide some image examples, then we can be more specific.

2012-09-10 14:26:46 -0600 commented answer Pose estimation with SIFT and homography

You still need to recover K, R and t, otherwise how can you recover/project the Z axis with only the homography? Notice that an homography is a transformation between planes (in your case, the book cover and the image plane). In addition to the paper of Zhang in my answer, you can also look to this survey: http://cvlab.epfl.ch/~lepetit/papers/lepetit_ftcgv05.pdf (section Mathematical Tools) which can help you with the problem.

2012-09-10 13:24:23 -0600 commented answer Pose estimation with SIFT and homography

I meant that depending on what your need to do is not that simple. As I mentioned, if your objective is to insert a virtual object on the book, you will need to extract the extrinsic parameters as I told.

2012-09-09 13:31:10 -0600 answered a question Pose estimation with SIFT and homography

I think you should be a little more specific in your question.

If your asking how to obtain the rotation and translation (extrinsic parameters) of the camera using an homography, this problem is known as Homography Decomposition. For instance, if you want to insert an augmented object in your book, you will need these parameters (simply computing the perpendicular vector to X and Y will lead to errors).

Notice that to estimate the R and t from the homography you will need the instrinsic parameters of the camera, which can obtained using the calibration method present in OpenCV. These parameters will remain the same for all sequences of the camera.

Finally, you need to implement a couple of equations to extract the extrinsic parameters, they are well described in this great paper by Zhang:

A Flexible New Technique for Camera Calibration

Of course, this depends in what you really want to do in your application. I hope this can help.

2012-09-05 12:47:44 -0600 answered a question Why haar features often used with AdaBoost?

I'm not an expert in classification methods, but maybe I can offer you some help. and someone can latter complement my answer.

1- Haar features are often used with AdaBoost because they can be seen as weak classifiers and what the Adaboost method actually does is to combine several weak classifiers in order to generate a robust one.

2 - I think that if you concatenate the response of several haar filters and use this big descriptor you can perform classification using SVM (or other methods). However this is not ideal because Adaboost tend to be quicker than SVM (see 3).

3 - I think you can find several papers that compare classifiers (google it). Some classifiers perform better in different classification problems. This depends on your application. For instance, SVM tries to find an hyperplane that divides your positive and negative samples by maximizing the margin between this two classes. Adaboost is good when you have a large number of negative sample at testing time. In this case, each weak classifier can classify as negative your answer such that you don't need to test all the classifiers (this is known as cascade). In general cases this cascade of features is much faster then other approaches. A classical application of Adaboost in Computer Vision is the Viola & Jones method of face and pedestrian detection:

Viola, Jones - Rapid Object Detection using a Boosted Cascade of Simple Features

I hope this helps, if anyone see some errors in the above, please tell us.

2012-08-17 09:09:36 -0600 answered a question How to recognize detection fact

Hi again, let me try to complement my answer.

One way to test if you found the object in a given image is indeed try to extract the homography (using findHomography) and then test its singular values, just like mentioned in the source you gave.

Another way is to see if at least you have a minimum number of matches. You need to specify the threshold yourself experimentally.

A third way to check the quality of the homography if you're working with planar objects (which I am going to assume that you are) is to compute the ZNCC (Zero Normalized Cross Correlation) between the object warped-back to the reference coordinate frame and the model you used. This ZNCC value is going to be very small if the homography is badly estimated. I used this method some time ago and it worked just fine. Also there is a function in OpenCV that you can use to compute that: matchTemplate().

These last two techniques are indeed used here: A realtime tracking system combining template-based and feature-based approaches (2007) - Ladikos et at.

I hope this can help.

2012-08-16 11:48:17 -0600 commented question How to recognize detection fact

Hi, your question is a little bit confusing to me.

One way to test if you found the object in a given image is indeed try to extract the homography (using findHomography) and then test its singular values, just like you are doing. Another way is to see if at least you have a minimum number of matches.

If your question is about why the homography is not good after a rotation, please tell us what kind of points are your using (SIFT, SURF, ORB, etc.) and what are the descriptors. Some descriptor are not rotation invariant, so...

2012-08-10 11:40:40 -0600 commented answer Animal Recognition

As we all said, we can give a more complete answer if you provide more details and some example images. Please tell us what are the animals your are trying to recognize (they have similar shapes/appearances? how the animal will appear to the camera? etc.).

2012-08-10 11:35:01 -0600 commented answer Why does camera calibration work on one image but not on a (very similar) other image?

Also, here is a guide of how to take good images for calibration: http://graphics.cs.msu.ru/ru/science/research/calibration/recommendations

2012-08-08 08:51:00 -0600 commented question Extract palm from a mask of the hand

Also, can you please be a little bit more specific? If I understood, you have a mask for the whole hand which you want to segment into palm and non-palm regions, is that it?

2012-08-08 08:01:35 -0600 commented answer Wrong Position From cvGoodFeaturesToTrack()!

I think you are right, large block sizes can result in corners that are slightly dislocated with respect to true ones, but I don't see this as a bug (its a feature for me).

Indeed, I took a brief look in the paper [Shi94] and the authors don't mention the size of the window used to compute the derivatives.

2012-07-31 15:23:58 -0600 received badge  Critic (source)
2012-07-30 13:28:55 -0600 answered a question Animal Recognition

Hi,

it seems for me that you can model your problem as an instance of object recognition (you can search the list for this, that is a lot of info about it). I can recommend to you two recent papers on object recognition that can help you start your project:

P. Felzenszwalb, R. Girshick, D. McAllester, D. Ramanan. Object Detection with Discriminatively Trained Part Based Models. IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 32, No. 9, September 2010 You can find the paper and code here: http://www.cs.brown.edu/~pff/latent/

Payet, N.; Todorovic, S.; , "From contours to 3D object detection and pose estimation," Computer Vision (ICCV), 2011 IEEE International Conference on , vol., no., pp.983-990, 6-13 Nov. 2011

I hope that this can help... If you give more details about the type of animals you are trying to detect we can provide more a specific answer such as which feature you could use.

2012-07-30 09:27:53 -0600 answered a question multiply two points and matrix

Hi,

I am not sure if I understood your question but it seems that you are asking how two multiply several points by an homography (3x3 matrix) at the same time, right? For this, you only need to concatenate the points as column vectors in a Mat and then you can do something like that:

cv::Mat_<double> imp;
imp   = H*im_point;

for (int i = 0; i < im_point.cols; i++) {
    // normalize the point
    imp(0,i) = imp(0,i)/imp(2,i);
    imp(1,i) = imp(1,i)/imp(2,i);
}

cv::Mat res;
res = imp(cv::Range(0,2), cv::Range::all());
return res;

Notice that the points im_point must be in homogeneous coordinates. I hope that this helps, if not, please be more specific in your question...

2012-07-29 14:23:14 -0600 received badge  Supporter (source)
2012-07-28 06:03:57 -0600 received badge  Teacher (source)
2012-07-27 16:13:33 -0600 commented question Object recognition by edge (or corners) matching ?

Hi,

can you be more specific and tell us why do you want to use edges/corners instead of the most common approach which is to use interest points (e.g. SIFT)?

2012-07-27 11:03:41 -0600 commented answer Difference of Gaussian Filtering

I think DoG is used to much more than detecting edges, it is actually an approximation of the Laplace of the image at a given scale... So, it would be more correct to say that is in fact a way of detecting corners or blobs. I don't know if you guys agree on this.

2012-07-27 10:59:59 -0600 answered a question Difference of Gaussian Filtering

Hi,

I don't know if you are talking about some specific function in OpenCV, can you give us more details about it? If you are referring to the buildDoGPyramid function (that actually computes a Difference of Gaussians), you don't need to pass any sigma to the function. Take a look to this source file: modules/nonfree/src/sift.cpp.

If I'm not mistaken, the whole theory of scale space is to filter with a Gaussian Filter that has the same standard deviation in the x and y coordinates. Otherwise the procedure will remove more details in one direction than another, which it does not make too much sense.