OpenPIV / openpiv-python

OpenPIV is an open source Particle Image Velocimetry analysis software written in Python and Cython
http://www.openpiv.net
GNU General Public License v3.0
247 stars 142 forks source link

How to evaluate Image quality for OpenPIV use #233

Closed BrouwersBart closed 2 years ago

BrouwersBart commented 2 years ago

Dear OpenPIV community,

I am trying to visualize and measure flow velocities in cohesive sediments (mud) using OpenPIV, based on speckle pattern images created using an ultrasound scanner.

Typical pair of images are enclosed, together with the OpenPIV output on this pair: A006b A006a field_06.txt Field06

As you can see the pixel brightness decreases with increasing depth due to attenuation of the ultrasound radiation in the mud. While penetration depth can be enhanced by decreasing the ultrasound frequency, the speckle brightness also decreases with decreasing frequency. At a certain depth or lower frequency the quality of the speckles will thus be insufficient for processing with OpenPIV and therefore leads to a trade-off between penetration depth and speckle brightness.

In order to find the optimal ultrasound frequency I performed a lot of tests using different ultrasound frequencies. The idea was to process all the images for each setup using OpenPIV in order to find the depth till which Vectors are generated, meaning speckle intensity is still sufficient.

I am however struggling in finding the correct way to evaluate this. The idea was to see at which depth vectors become masked. For the examples attached this would be around 30 mm depth.

This however strongly depends on the settings for validation. So I start to ask myself:

Does any one have experience with a similar exercise and can advise on how to tackle this?

Thanks in advance.

alexlib commented 2 years ago

@BrouwersBart This sounds like a complex problem that is not so much related to PIV. E.g. one could run a brightness correction scheme to get more brightness and different region of analysis. This however will only add noise at the places where the image is not related to the speckles and therefore "not moving". I'm not sure about "validation" - the fact that we get a vector (right or wrong one) has not so much to deal with the image itself. we already had places where the vectors were "okay" but it was an artifact.

alexlib commented 2 years ago

@BrouwersBart please send your question to the forum - maybe somebody had more experience with it. https://groups.google.com/g/openpiv-users?pli=1

btw, could you point us to the explanation of how the experiment is done?

BrouwersBart commented 2 years ago

I used the old school trial and error method to resolve this issue. By playing with each validation parameter seperately I was able to find a threshold at which the output was optimal. Quiet a lot of work, but the result was satisfying.