Ask Your Question

Melgor's profile - activity

2016-06-14 08:42:26 -0600 received badge  Student (source)
2014-10-29 13:32:48 -0600 received badge  Nice Answer
2014-07-31 03:07:15 -0600 received badge  Teacher
2014-07-31 02:14:27 -0600 received badge  Necromancer
2014-07-30 12:17:57 -0600 received badge  Editor
2014-07-08 12:02:09 -0600 asked a question Estimation of 4-point Polygon in Contour

Hi, I have some problem with creating algorithm which will be able to create biggest possible. So far I was only estimating the biggest inscribed Rectangle. Example output:

image description

I want to gave 4-point polygon like this blue:

image description

So far I get following result:

image description

As you can see. I only change left upper corner.

The pseudo-code which done it is following:

1.Get all possible Inscribed Square
2. Get all possible Inscribed Rectangle
3.Get biggest Rectangle and write every possible combination of (top left, top right, bottom left, bottom right)
4. Sort them by size and take biggest.

In fact, I do not do all all possible permutation, because it will take ages to finish.

Do you maybe face any similar problem or know how to resolve it in finite time?

2014-07-01 09:23:01 -0600 answered a question How can I add my own feature code into sticther pipeline of OpenCV?

Hi, There is no easy way to use SIFT features in stitching module. You have to create separate class like "detail::SiftFeaturesFinder" to do it. New class should be added in "opencv/modules/stitching/src/matchers.cpp" and "opencv/modules/stitching/include/opencv2/stitching/detail/matchers.hpp"

This should be rather easy, because all process relay on extracting features. If you need to set only specific region for keypoint extraction, you need to build black-white mask -> your new class should take it too.

All work need changes in OpenCV, so after all you need to recompile it.

2014-03-23 03:13:25 -0600 answered a question Adaptive threshold

First of all, read this documentation and see how the result look: DOCS

You should deeply analyse the result from chessboard - there you can see, that adaptive threshold is sth like edge detector. It will detect (set maximum value in you case) only the pixels, which in their local neighborhood has bigger value that "MEAN" + "C". So, the value from pixels ex. (0,0) and (1000,1000) are independent. As I say, this function will detect you edges, not blobs.

In this situation I suggest do sth like to detect blobs: - adaptiveThreshold: find edges in image - findContur: make connected component algorithm (you may to use OPEN or CLOSE morphological operation morphology to delete singe pixels or to connect to edges) - find biggest contour (by area or number of points) and fillPoly it with white color

After this operation you should get sth like you want.

2014-01-30 12:39:18 -0600 answered a question Optimising OPenCV4Android image processing

First of all, do you use Java wrapper to OpenCV(in NDK) or you write own function in NDK which use OpenCV? Each calling wrapper from Java to NDK is very expensive, time consuming really big.

So I advice you to write own function in C++, compile it in NDK for Android and write one wrapper to it from Java code.

If you doing it now, you should use multicore process ( 4 image processed in one time)

2014-01-12 02:26:20 -0600 answered a question Is there a rotatational template-matching function?

As I know, there is no function, that calculate the invariant version of matchTemplate. There is some article, which introduce it, but you will have implement it. Link:Link to article

But, in OpenCv there is function, which compare histogram of objects and pattern. It is CalcBackProjPath. Histogram are invariant to rotation, so you can call it once. But it can be much slower, because it use normal Sliding Window. MatchTemplate in OpenCv use Fourier Transform, what really speed up finding interesting point.