I have an array of 2D points and a known curve geometry (it consists of a straight line segment and a circle segment). The points might rotate slightly and are somewhat noisy. I need to find points in array, which correspond to that curve. I have a feeling, that it should be a pretty common task in image processing, which is a new area to me. So, is there a common algorythm for dealing with such tasks? Right now I am reading about Hough Transform, which i think with some modifications can be applied to my task. Am i moving to the right direction? Are there any pitfalls? Thanks.

Here goes sample image where (1) is points array, (2) is curve geometry and (3) is what i would like to achieve: data sample

  • $\begingroup$ Can you provide a sample image of your data so that we can see with what you are dealing? $\endgroup$
    – halirutan
    Mar 31 '14 at 18:47
  • $\begingroup$ Hough transform: en.wikipedia.org/wiki/Hough_transform $\endgroup$
    – André
    Mar 31 '14 at 19:26
  • $\begingroup$ This could possibly be framed as a statistical inference problem. $\endgroup$
    – k20
    Mar 31 '14 at 19:53
  • $\begingroup$ @halirutan, sure, i made an edit. $\endgroup$
    – Nikita B
    Apr 1 '14 at 10:09

This should probably be a comment rather than an answer but I can't comment...

If you can define your curve geometry (2) with some function like (its just an example, it can of course be modified) :

$$f(x) = (a x + b) \theta(x-x_0) + \left(\sqrt{R^2 - (x+x_c)^2} - y_c\right)\theta(x_0-x)$$

where $a,b,x_0,x_c,y_c$ are free parameters such that

  • $x_0$ is the $x$ coordinate where (2) starts to bent
  • $(x_c,y_c)$ is the coordinate of the center of the circle of radius $R$

Then you could use a Levenberg-Marquardt algorithm to fit $f(x)$ to your datas.

  • $\begingroup$ Thank you for a suggestion, i will do some research in that direction. $\endgroup$
    – Nikita B
    Apr 4 '14 at 8:29
  • $\begingroup$ What does theta stand for in your example? I'm not sure i understand the notation. $\endgroup$
    – Nikita B
    Apr 4 '14 at 8:34
  • $\begingroup$ sorry, it's simply the heavyside function... it's one simple way to write things without using if conditions $\endgroup$
    – PinkFloyd
    Apr 4 '14 at 8:36
  • $\begingroup$ Ah, ok, i get it $\endgroup$
    – Nikita B
    Apr 4 '14 at 9:04
  • $\begingroup$ @NikitaBrizhak Is my suggestion applicable to your problem ? $\endgroup$
    – PinkFloyd
    Apr 8 '14 at 8:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.