serverless_OpenPIV
An idea to use AWS Lambdas or Google Cloud functions as a Serverless Framework for super-fast PIV processing in the cloud
Option 1
- User uploads N image pairs (
001_a.tif
,001_b.tif
,002_a.tif
,002_b.tif
...) to a S3 bucket - Lambda function detects the upload and triggers the processing of
openpiv_python
on every new pair and stores the result in the results bucket
The limitation is that a single pair processing should have less than a time limit allowed for lambda and this might fail for multi-pass and window deformation complex analysis types.
Option 2
- Upload of a new pair of images trigger the lambda
splitter
splitter
reads the pair and splits it into sub-windows (interrogation windows). Every sub-window is stored as a pair of small images into a separate bucket (from a first pair we get many pairs of sub-windows in mutliple buckets. It's possible also that the split won't be identical, i.e. it is useful of sub-window from image B is larger and covers a larger area around the sub-window in image A.analyzer
is another lambda function that watches the small sub-windows bucket and triggers the analysis withopenpiv-python
on a single sub-window. So we trigger as many lambdas as number of sub-windows. This process should be super-fast and efficient.analyzer
stores the results in the results bucket - either adds a row to the same ASCII file or appends the pandas DataFrame. It is also efficient as we do not care in which order the rows will be written, i.e. which lambda will finish first. But it has to be efficient in writing so lambdas do not wait to write because of others. So maybe we better write into separate files and trigger another lambdacollector
collector
watches all the results created byanalyzer
s and combines them into a single file that is sent to the user bucket.