The Stack Overflow podcast is back! Listen to an interview with our new CEO.
22

From a computer vision perspective: the basic problem is estimating a homography between your target point set and a subset of points in the large set. In your case, with rotation only, it will be an affine homography. You should look into the RANSAC method. It is designed to find a match in a set with many outliers. So, you are armed with two important ...


17

This is not the best solution, but it's a solution. I'd like to learn of better techniques: If they were not going to be rotated or scaled, you could use a simple cross-correlation of the images. There will be a bright peak wherever the small image occurs in the large image. Registering an Image Using Normalized Cross-Correlation Template-based matching ...


9

As I've said in the comments, medical image registration is a topic with lots of research available, and I'm not an expert. From what I've read, the basic idea commonly used is to define a mapping between two images (in your case an image and its mirror image), then define energy terms for smoothness and for image similarity if the mapping is applied, and ...


7

Second question is easy: optical flow, more specifically dense optical flow, is an algorithm that takes two consecutive video frames and returns a vector field. For every pixel in frame 1 you get a vector showing where it moved to in frame 2. You can also have sparse optical flow, which only computes the motion vectors for certain pixels, such as the ...


7

So one good step to enhance the vein-like structures is coherence enhancing diffusion: Weickert, Joachim. "Coherence-enhancing diffusion filtering." International Journal of Computer Vision 31.2-3 (1999): 111-127. So I first apply this algorithm to your image, aggressively. The next step is to identify the curvilinear structures, which would in this case ...


6

I am somewhat surprised that feature points don't work that well. I have had success registering shapes like yours using either Harris points, this is a corner detector, in combination with the RANSAC algorithm. See the wiki or Peter Kovesi his site Using a feature detector like SURF or SIFT in combination with an edge map of the image prior to feature ...


5

I don't think you can completely get rid of histogram or threshold-based binarization, since the former is to achieve line segmentation, while the latter is to extract the letters. The Radon horizontal projection is used for line segmentation, and the center line can be used to approximate the baseline of each segment. Yet this is somehow equivalent to the ...


5

This certainly is a signal processing question albeit a little vague. I can't say for certain that Google use it but the SIFT (shift invariant feature transform) algorithm http://www.cs.ubc.ca/~lowe/keypoints/ has been used in variant form in technologies such as Microsoft's Photosynth. It allows key features of multiple images containing overlapping content ...


4

This is always going to require a lot of computation, especially if you want to process as many as 2000 points. I'm sure there are highly-optimized solutions for this kind of pattern-matching already, but you have to figure out what it's called in order to find them. Since you're talking about a point cloud (sparse data) instead of an image, my cross-...


4

I am currently working on CBIR using Component Trees, which should be a relatively new idea. Some expected advantages of using Component Trees to describe images would be: The Component Tree representation of an image would not depend so much on the deformations (even projective) to the image Examining different levels of the tree would allow comparisons ...


4

MSER (Maximally stable extremal regions) are regions, not points. And they're invariant to affine transformation. But it's not a segmentation method, strictly speaking Informally speaking, the idea is to find blobs at various thresholds, then select the blobs that have the least change in shape/area over a range of thresholds. These regions should be stable ...


4

Given that you are working only on Tanimoto Coefficient, i am trying to be more specific rather than giving generic answer with various different approaches. The basic notation of Tanimoto Coefficient is as follows: $$ T(A,B) = { N_{AB} \over N_A + N_B - N_{AB} } $$ where $T$ is the desired result, over $A$ and $B$ images. In this measure, we ...


4

Interesting question. First, maybe you are after approaches based on interest keypoint detector and matching. This would include SIFT (Scale-Invariant Feature Transform), SURF, ORB, etc ... or even a simpler approach based solely on the Harris operator (csce.uark.edu/~jgauch/library/Features/Harris.1988.pdf). It is not clear from your post what you have ...


3

Ok, I finally found the reason for my confusion - thanks to this answer. There were a number of reasons why I couldn't get my spatial NCC and frequency domain peak values to agree numerically. Some obvious, some subtle, all stupid. For the sake of completeness, here they are: I had missed an offset and scale factor that was introduced when normalising my ...


3

I am very surprised why no-one mentioned methods of Generalized Hough Transform family. They directly solve this particular problem. Here is what I propose: Take the template and create the R-table, indexing the edges of the template. The edges I select are the following: Use the default OpenCV implementation of generalized Hough transform to obtain: ...


3

Iif the pattern is sparse binary you can do simple covariance of coordinate vectors instead of images. Take coordinates of points in the sub-window sorted left-up, make a vector from all the coordinates and calculate covariance with vector made of coordinates of points of pattern sorted left-up. You can also use weights. After that make brute force nearest ...


3

Geometric Transformation Supose that $f$ is an image, defined over $(w,z)$ coordinate system, undergoes geometric distortion to produce an image $g$, defined over $(x,y)$ coordinate system. To perform this operation is used this $$(x,y) = T\{(w,z)\} $$ So, one of most commmonly used forms of spatial transformation is the affine transform (Wolberg [1990]). ...


2

I would add @mirror2image description on the alternative solution beside RANSAC, you may consider ICP algorithm (iterative closest point), a description can be found here! I think the next challenge in using this ICP is to define your own cost function, and the starting pose of the target plane with respect to the 3d cloud point data. Some practical ...


2

I have eventually found a simple idea for the solution on the paper called "Blending Images for Texturing 3D Models". The idea is not doing the complete blending for each new image added to canvas, but rather build separate lowpass and highpass canvas (for two-band blending). These are then merged as a final step of the rendering. Finding seam is still a ...


2

I have found this survey paper very useful: http://ralph.cs.cf.ac.uk/papers/Geometry/Registration.pdf It gives a categorized overview of the field. I think section 3 and 4 are the most relevant ones for you.


2

Except I have an important constraint, the features on the original image must maintain their relative area after the transformation. I'm assuming you're looking for a smooth transformation, where all areas (not just the 4 squares in your image) maintain their relative sizes. IIRC, this constraint is called "fluid registration". (I'm pretty sure I've read ...


2

Assume that the center of the square maps to the center of the vertexes. The vertices in the output are known. Assume they are $(x_1,y_1),...,(x_4,y_4) $ Their center is $ ( \frac{x_1+x_2+x_3+x_4}{4},\frac{y_1+y_2+y_3+y_4}{4}) $ Now you have 4 degrees of freedom of where to put the points where the color change. $ ( w_1 x_1 +(1-w_1) x_2 ,w_1 y_1 +(1-w_1 ) ...


2

At the start of the inner loop, you assign uchar* t_p= (uchar*) temp->imageData; later on, you use it as t_p[x+cx]; Aren't you missing the cy here?


2

I personally like this one. It is nicely designed for occlusions and large displacements. But, recent trends in deep learning lead to better results in optical flow such as this and this.


2

I have referred to Stage I.D of this tutorial. Hope this helps. http://www.robots.ox.ac.uk/~vgg/practicals/instance-recognition/index.html#stage-id-improving-sift-matching-using-a-geometric-transformation When the features have scale and orientation assigned (e.g. SIFT features have these properties), you can compute similarity transform between each ...


2

To find coordinate or index of drew region, first you have to find the coordinate of 4 colored dots, which is easily obtained by using the transformPointsForward function over the intrinsic coordinate of these 4 points in your original image. intrinsic coordinate is the index of your image matrix. then you have to do some geometric calculations. first, find ...


2

You need to be careful when reproducing formulas! Your $i_r$, $i_w$ are actually $\bar{i_r}$, $\bar{i_w}$ in the paper and two sentences above $(4)$, it says these are their zero-mean versions, which are obtained by subtracting from each vector its corresponding arithmetic mean. So, the symbols in your formula are always the same, regardless of ...


2

A fundamental book on image processing for electrical engineers is Two-Dimensional Signal and Image Proccesing_Jae S. Lim A highly recommended one, again, for electrical engineers is Fundamentals of Digital Image Processing_Anil Jain A hands-on book on basic practical image procesing is Principles of Digital Image Processing_Wilhelm Burger If ...


1

This Process is Known as Color Correction.It is Explained in more detail here. To Give a short Explanation: Lets suppose You have a Input Color Matrix represented as | R_O1 G_O1 B_O1 | A = | R_O2 G_O2 B_O2 | | R_On G_On B_On | and a Reference Target Color Matrix represented as | R_T1 G_T1 B_T1 | B = | R_T2 G_T2 B_T2 | | R_Tn G_Tn ...


1

I can't help with the fisheye lens issue, but assuming that effect isn't too large, the mapping between the above images is a perspective transformation. We can transform a point on the plane $z=1$ into 3D space using a $3\times 3$ matrix. $$\left( \begin{array}{c} X\\ Y\\ Z\\ \end{array} \right) = \left( \begin{array}{c} s_x\ \ h_x\ \ t_x \\ ...


Only top voted, non community-wiki answers of a minimum length are eligible