Recognizing distortions in a regular grid

前端 未结 2 1193
一整个雨季
一整个雨季 2020-12-23 19:33

To give you some background as to what I\'m doing: I\'m trying to quantitatively record variations in flow of a compressible fluid via image analysis. One way to do this is

相关标签:
2条回答
  • 2020-12-23 19:41

    I think you are looking for the Digital Image Correlation algorithm.

    Here you can see a demo.

    Here is a Matlab Implementation.

    From Wikipedia:

    Digital Image Correlation and Tracking (DIC/DDIT) is an optical method that employs tracking & image registration techniques for accurate 2D and 3D measurements of changes in images. This is often used to measure deformation (engineering), displacement, and strain, but it is widely applied in many areas of science and engineering.

    Edit

    Here I applied the DIC algorithm to your distorted image using Mathematica, showing the relative displacements.

    enter image description here

    Edit

    You may also easily identify the maximum displacement zone:

    enter image description here

    Edit

    After some work (quite a bit, frankly) you can come up to something like this, representing the "displacement field", showing clearly that you are dealing with a vortex:

    enter image description here

    (Darker and bigger arrows means more displacement (velocity))

    Post me a comment if you are interested in the Mathematica code for this one. I think my code is not going to help anybody else, so I omit posting it.

    0 讨论(0)
  • 2020-12-23 19:57

    I would also suggest a line tracking algorithm would work well.

    Simply start at the first pixel line of the image and start following each of the vertical lines downwards (You just need to start this at the first line to get the starting points. This can be done by a simple pattern that moves orthogonally to the gradient of that line, ergo follows a line. When you reach a crossing of a horizontal line you can measure that point (in x,y coordinates) and compare it to the corresponding crossing point in your distorted image.

    Since your grid is regular you know that the n'th measured crossing point on the m'th vertical black line are corresponding in both images. Then you simply compare both points by computing their distance. Do this for each line on your grid and you will get, by how far each crossing point of the grid is distorted.

    This following a line algorithm is also used in basic Edge linking algorithms or the Canny Edge detector.

    (All this are just theoretic ideas and I cannot provide you with an algorithm to it. But I guess it should work easily on distorted images like you have there... but maybe it is helpful for you)

    0 讨论(0)
提交回复
热议问题