0

I need a flat image from a cylindrical object, i have 2d images from the object, the images are taken from a steady camera where the object spins, therefore i have images from all faces of the object. I'm using C# so any algorithm based in C# would be helpful. Thx for any help.

Rafael
  • 45
  • 6
  • Add what you tried. – artgb Sep 13 '17 at 13:03
  • Where's the viewing point ? –  Sep 13 '17 at 14:31
  • The camera is placed perpendicular to the object. I've tried cut the middle of the object ant stitch all together (since the object spins through the images). But the result wasn't the best, the top and botton part in the output image was very scratchy. – Rafael Sep 13 '17 at 15:31
  • You need to unwarp the image using a geometric model that mimics the effect of perspective. This can be achieved approximately by a deformation mesh (stick a grid on the cylindre), or exactly by an analytical model, of which you will determine the parameters from the image. This is pretty technical, I cannot give a full development, sorry. –  Sep 13 '17 at 17:53
  • possible duplicate of [Take a image of a tube that alway spin around in openCV C++](https://stackoverflow.com/q/37097175/2521214) – Spektre Sep 14 '17 at 06:22
  • @Spektre Indeed it's very similar, but i forget to mention, the object is not perfect cylinder(yes, I know, a big stuff that I forgot to mention. ), he is more like a carrot, so when i try your suggestion in the other post i have some problems with the upper and botton parts of the object, those partes in the result get confuse, since de spining motion of this parts can variate according to the form of the object. And i tried SIFT + RANSAC, but didn't work, the surface of the object has very similar details, so the result get a little crazy, so i'm getting lots of false positive matches. – Rafael Sep 14 '17 at 15:04
  • @SilvioRafael if your object is a cone you could mount your camera perpendicular to its surface and registering only the central axis line. In that case you would bypass all the problems you got now. If not you could try to compute the missing `z` component in your **2D** images (based on the known shape) and unwrap by the arc-length from some starting scan line. Similar to this [OpenCV Birdseye view without loss of data](https://stackoverflow.com/a/39316776/2521214). Without sample images and more info about the shape we can only guess – Spektre Sep 14 '17 at 15:11
  • @Spektre Your solution was very helpful, thx. But now i'm facing other problem, hope that you can help me. – Rafael Sep 21 '17 at 11:59
  • Firstly, sorry for my bad english. I have images of a object that are spinning, but the RPM os my object aint always the same, so i need to normalize the RPM through the images. – Rafael Sep 21 '17 at 11:59
  • My first ideia till now is, calculate the circumference of the object(using the radius). Using a reference point on the image and see how much the point moves through the image i'll have the RPM, i get the highest RPM in the images and save it, so lets say the highest RPM would be 0,1cm/per image, and i ignore the images till that 0,1cm have been achieve. Lets say in the moment X the RPM is 0,05cm/per image, i ignore 1 image so the RPM would be 0,1, therefore normalizing the speed. Is there a better/easy way to do it? – Rafael Sep 21 '17 at 12:14
  • if you got markers on the spinning surface you can infer the delta time with sub fps precision by interpolation. Without markers is hard to say ... – Spektre Sep 21 '17 at 14:52

0 Answers0