Recognizing distortions in a regular grid

拈花ヽ惹草 提交于 2019-11-29 22:26:11

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.

Edit

You may also easily identify the maximum displacement zone:

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:

(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.

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)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!