how to align vector and raster images?
For example vector images will be static/rigid and raster image will be morphable. For example I manually do initial guess and algorithm must converge to optimal solution by morphing raster image.
I know about chamfer matching but it isn't working good.
I think I need something like this http://cs.fit.edu/~eribeiro/papers/liu_ribeiro_isvc2010_shape.pdf
or some non rigid object registration algorithm.
I also tried to represent raster and vector data as points and then apply ICP algorithm to them
http://www.cvlibs.net/software/libicp.html but this lib seems can provide only shift and rotate invariance.
I will try this lib http://code.google.com/p/gmmreg/
but it seems it very complicated, maybe there is simpler approach.
some example picture shapes that I need to align.(I have already convert raster and vector to points)
some real life example using gmmreg lib (I'm still not sure I'm using it right)
rigid
TPS_L2
seems I'm not using lib right,even if points are aligned it works wrong.
I have raster and vector data represented as point clouds in 2d. Raster data extracted as contours so it contain some noise. Raster and vector data slightly differs in scale and position,raster data can also have some small perspective distortion and barrel distortion, but I can provide initian alignment. I want to raster data "converged" to unchangeble vector data, so I think I want some kind of non-rigid point cloud matching. By alignment of 2 point clouds then I want to determine some parameters(maybe TPS spline?) and unwarp raster image and then draw vector image above it.
For example if we use homography matrix and assume perspective transform we have 8 parameters. I tried to use KCReg it use some specific metric for point clouds, but it give me unsatisfactory results because my distortion can be only roughly expressed by perspective transform and I need some more non-rigid alignment. So the task consist of some function E(p)(metric)+minimizer+bounds for minimizer. I also tried gmmerg. I seems it uses some Broyden Fletcher Goldfarb Shannon minimization from VNL, but I managed to achive good results only for simple tasks.
for example affine
http://dl.dropbox.com/u/8841028/ICP/gmmreg_tests/%D0%B0%D1%84%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5.png http://dl.dropbox.com/u/8841028/ICP/gmmreg_tests/%D1%82%D1%80%D0%B0%D0%BF%D0%B5%D1%86%D0%B8%D1%8F.png
barrel-barrel backwards-barrel rigid
http://dl.dropbox.com/u/8841028/ICP/gmmreg_tests/barrel_test.png
http://dl.dropbox.com/u/8841028/ICP/gmmreg_tests/barrel_test_back.png
http://dl.dropbox.com/u/8841028/ICP/gmmreg_tests/barrel_test_rigid.png
rigid scale rotate shift
http://dl.dropbox.com/u/8841028/ICP/gmmreg_tests/rigid%3Dscale_rotate_shift_noise.png
but it fails on real problem, maybe I don't set constraints/bounds or initial guess well.
rigid shift
http://dl.dropbox.com/u/8841028/ICP/gmmreg_tests/rigid_no_guess.png
TPS_L2 no guess
http://dl.dropbox.com/u/8841028/ICP/gmmreg_tests/TPS_L2_no_guess.png
TPS_L2 initial guess
http://dl.dropbox.com/u/8841028/ICP/gmmreg_tests/TPS_L2_initial_guess.png