From 26dbcb7c86ecf2931cf02b183e1c76e8c5b534ad Mon Sep 17 00:00:00 2001 From: hcwinsemius Date: Tue, 10 Dec 2024 20:10:57 +0100 Subject: [PATCH] 193 accelerate piv (#196) * WIP #193 * fix #194 * Refactor coordinate assignments and projections #193 * Implement dual PIV engines: OpenPIV and FF-PIV #193 Refactored the PIV implementation to support both 'OpenPIV' and 'FF-PIV' engines, allowing selection via the 'engine' parameter. * Refactor PIV computation and documentation. #193 * robustness increase for cases where last frames are not seekable #193 * bug fix with time selection with missing frames #193 * chunked frame reading WIP #193 * Handle invalid frames and update frame count logic #193 * Minor updates in documentation for installation instructions * Remove debug prints and commented code #193 * Small bug fixes and bump version 0.7.0 #193 * change order of import cli #193 * Refactor and clean up code for code coverage #193 --- CHANGELOG.md | 13 + README.md | 107 ++- docs/_images/GCPs_interactive.jpg | Bin 0 -> 293987 bytes docs/_images/bbox_interactive.jpg | Bin 0 -> 271261 bytes docs/api.rst | 45 +- docs/index.rst | 11 +- docs/installation.rst | 83 ++- docs/user-guide/velocimetry/index.rst | 54 +- examples/02_Process_velocimetry.ipynb | 15 +- pyorc/__init__.py | 9 +- pyorc/api/cameraconfig.py | 63 +- pyorc/api/frames.py | 247 ++++--- pyorc/api/orcbase.py | 71 +- pyorc/api/transect.py | 3 +- pyorc/api/video.py | 74 +- pyorc/cli/log.py | 3 +- pyorc/cli/main.py | 6 +- pyorc/cv.py | 637 ++++++++++++------ pyorc/service/velocimetry.py | 2 +- pyorc/velocimetry/__init__.py | 6 + pyorc/velocimetry/ffpiv.py | 181 +++++ .../openpiv.py} | 270 ++++---- pyproject.toml | 8 +- tests/conftest.py | 288 ++++---- tests/test_frames.py | 103 +-- tests/test_transect.py | 5 +- tests/test_velocimetry.py | 36 +- 27 files changed, 1513 insertions(+), 827 deletions(-) create mode 100644 docs/_images/GCPs_interactive.jpg create mode 100644 docs/_images/bbox_interactive.jpg create mode 100644 pyorc/velocimetry/__init__.py create mode 100644 pyorc/velocimetry/ffpiv.py rename pyorc/{piv_process.py => velocimetry/openpiv.py} (59%) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9a995e..a9d6889 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +## [0.7.0] - 2024-12-10 +### Added +`get_piv` now uses several engines, `engine="numba"` is a lot fastr +### Changed +Reading frames is now a lot more efficient as they are read in bulks (20 by default). As a result, very large videos +can be processed efficiently. +### Deprecated +openpiv is still default, but may become deprecated in future versions. +### Removed +### Fixed +### Security + + ## [0.6.1] - 2024-09-26 ### Added ### Changed diff --git a/README.md b/README.md index 823f221..38b2215 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@
-

@@ -13,12 +13,12 @@ width=100 align="right"> [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/localdevices/pyorc.git/main?labpath=examples) [![License](https://img.shields.io/github/license/localdevices/pyorc?style=flat)](https://github.com/localdevices/pyorc/blob/main/LICENSE) -**pyorc**, short for "pyOpenRiverCam" is a fully Open Source library for performing image-based river flow analysis. It is the underlying library for +**pyorc**, short for "pyOpenRiverCam" is a fully Open Source library for performing image-based river flow analysis. It is the underlying library for computations on the fully open software stack OpenRiverCam. **pyorc** can only be successful if the underlying methods are made available openly for all. Currently **pyorc** implements Large-scale Particle Image Velocimetry (LSPIV) based -flow analysis using the OpenPIV library and reprojections and image pre-processing with OpenCV. We wish to extend this +flow analysis using the OpenPIV library and reprojections and image pre-processing with OpenCV. We wish to extend this to Large-scale Particle Tracking Velocimetry (LSPTV) and Space-Time Image Velocimetry (STIV) for conditions that are less favourable for LSPIV using open -libraries or extensions to this code. +libraries or extensions to this code. ![example_image](https://raw.githubusercontent.com/localdevices/pyorc/main/docs/ngwerere.jpg) Image: Example of pyorc velocimetry over Ngwerere river at the Zambezi Road crossing - Lusaka, Zambia. @@ -29,15 +29,15 @@ Current capabilities are: * Discharge estimation over provided cross-section * Plotting of velocimetry results and cross-section flows in camera, geographical and orthoprojected perspectives. -We use the well-known **xarray** data models and computation pipelines (with dask) throughout the entire library to -guarantee an easy interoperability with other tools and methods, and allow for lazy computing. +We use the well-known **xarray** data models and computation pipelines (with dask) throughout the entire library to +guarantee an easy interoperability with other tools and methods, and allow for lazy computing. We are seeking funding for the following frequently requested functionalities: -* A command-line interface for processing single or batch videos -* Implementation of better filtering in pre-processing -* Improved efficiency of processing -* Establishing on-site edge computation through a raspberry-pi camera setup +* Exports to simple text formats and GIS-compatible layers +* Exports to augmented reality videos * Implementation of additional processing algorithms (STIV and LSPTV) +* Implementation of several optical methods for reading water levels +* Improved nighttime / poor weather conditions processing through learning approaches If you wish to fund this or other work on features, please contact us at info@rainbowsensing.com. @@ -48,28 +48,60 @@ If you wish to fund this or other work on features, please contact us at info@ra > **_compatibility:_** At this moment **pyorc** works with any video compatible with OpenCV as long as it has proper metadata. ## Installation +You need a python environment. We recommend using the Miniforge project. Download +the latest miniforge installer from https://github.com/conda-forge/miniforge and follow the installation instructions +before continuing installing **pyorc**. -To get started with **pyorc**, we recommend to setup a python virtual environment. -We recommend using a Miniconda or Anaconda environment as this will ease installation, and will allow you to use all -functionalities without any trouble. Especially geographical plotting with `cartopy` can be difficult to get installed. -With a `conda` environment and our `conda-forge` package this is solved. In the subsections below, you can find specific -instructions for different use cases. +### virtual environment +To get started with **pyorc**, we recommend to set up a python virtual environment. This ensures that installed libraries +**pyorc** will not conflict with other libraries or library versions which you may need for other projects. + +Setting up a virtual environment can be done with: +```shell +python -m venv pyorc_env +``` +this creates a new folder `pyorc_env` on your disk which contains your virtual environment. +After activating the environment, any package you install will be installed in this environment only. +Activating in Unix/Linux is done as follows: + +```shell +source pyorc_env/bin/activate +``` +In Windows, the activation script is in a different folder. Type the following to activate the environment. +```shell +pyorc_env\Scripts\activate +``` ### Installation for direct use -If you simply want to add **pyorc** to an existing python installation or virtual environment, then follow these +If you simply want to add **pyorc** to an existing python installation or virtual environment, then follow these instructions. -First activate the environment you want **pyorc** to be installed in (if you don't care about virtual environments, then -simply skip this step). You can simply install pyorc with all its dependencies as follows: +First activate the environment you want **pyorc** to be installed in (if you don't care about virtual environments, then +simply skip this step). See the above sub-section for information. You can simply install pyorc with all its +dependencies as follows: +```shell +pip install pyopenrivercam[extra] ``` -conda activate -conda install -c conda-forge pyopenrivercam -``` +The `[extra]` section ensures that also geographical plotting is supported, which we recommend especially for the +set up of a camera configuration. + +### Upgrading from pypi with pip -If you use mamba as a package mananager, then the steps are the same, except for the installation step, which is: +Did you read about a new version and you want to upgrade? Simply activate your virtual environment, type + +```shell +pip install --upgrade pyopenrivercam[extra] ``` + +and then enjoy the latest features. + +### installation with mamba package manager + +If you use `mamba` as a package manager, then the steps are the same, except for the installation step, which is: + +```shell mamba install pyopenrivercam ``` @@ -85,7 +117,7 @@ git clone https://github.com/localdevices/pyorc.git cd pyorc ``` -Setup a virtual environment with all dependencies as follows: +Set up a virtual environment with all dependencies as follows: ``` conda env create -f envs/pyorc-dev.yml conda activate pyorc-dev @@ -117,34 +149,36 @@ pip install -e . ``` ## Using pyorc -To use **pyorc**, you can use the API for processing. A command-line interface is forthcoming pending funding. +To use **pyorc**, you can use the API for processing. A command-line interface is forthcoming pending funding. A manual is also still in the making. ## Acknowledgement -The first development of pyorc has been supported by the World Meteorological Organisation - HydroHub. +The first development of pyorc has been supported by the World Meteorological Organisation - HydroHub. ## License **pyorc** is licensed under AGPL Version 3 (see [LICENSE](./LICENSE) file). -**pyorc** uses the following libraries and software with said licenses. +**pyorc** uses the following important libraries and software with said licenses. | Package | Version | License | |------------|---------|------------------------------------| -| numpy | 1.23.2 | BSD License | -| opencv2 | 4.6.0 | MIT License | -| openpiv | 0.23.8 | GPLv3 | -| matplotlib | 3.5.3 | Python Software Foundation License | -| geopandas | 0.10.2 | BSD License | - | pandas | 1.4.3 | BSD License | +| ffpiv | 0.1.2 | AGPLv3 | +| numpy | 1.26.4 | BSD License | +| opencv2 | 4.10.0 | MIT License | +| openpiv | 0.25.3 | GPLv3 | +| matplotlib | 3.9.2 | Python Software Foundation License | +| geopandas | 1.0.1 | BSD License | +| pandas | 2.2.2 | BSD License | Project organisation -------------------- . - ├── README.md - ├── LICENSE - ├── TRADEMARK.md - ├── setup.py <- setup script compatible with pip + ├── CHANGELOG.md <- Version-based changelog documentation + ├── README.md <- This file + ├── LICENSE <- License file containing AGPLv3.0 license terms + ├── TRADEMARK.md <- Trademark guidelines + ├── pyproject.toml <- setup pipeline compatible with pip ├── environment.yml <- YML-file for setting up a conda environment with dependencies ├── docs <- Sphinx documentation source code ├── ... <- Sphinx source code files @@ -154,4 +188,3 @@ Project organisation ├── ... <- pyorc functions and API files ├── tests <- pytest suite ├── ... <- pytest functions on API level - diff --git a/docs/_images/GCPs_interactive.jpg b/docs/_images/GCPs_interactive.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1305dd7103cf28e82214833943f35a41c7a7f446 GIT binary patch literal 293987 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

n*xsC!sSm043@=v} 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

mLpF!W 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%0AgS}ce9|+_ZCi|?$3>jC5fTvwW@MU5Fl1H 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 literal 0 HcmV?d00001 diff --git a/docs/_images/bbox_interactive.jpg b/docs/_images/bbox_interactive.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b494d831e7ab8f34634a47bd189f4a27826a56e3 GIT binary patch literal 271261 zcmeFYRa6~Kw=Uecy9W>M7Th7YySux)ESx|HF2R%F?(V@oxGW$93BfHmEY5oO{>MM| z?YY?BI2Ui#7;AJ_b;+7N=kv^2RsFj9x(#3}$|}eLFfhP>r&ll_4Zy+vlm7XIgC=-H z_yjfR2-E&abtul)cHGOQe2FB}XG0E+_yhXeCE1dsy&3<3-^{eSZX0C)fv4gnDc z2^j@it%nW3!a|3Jg@=cOLxqQdA%TH~gU107a1rsS-*VwgYFHp~dxR6vq##RuC8p)k z)U!-)7?>yYjF^*7{dGY^_wDkX)&dIsd#lDlIj_i!CS9AfqVLd-$zTAue}?@Z1OL-A z0wNMJw3Z(_Ls%Gi009;r5e|T67yt$q2M!*WnhOE%t)vFN1p&853Zj%|_}2!SxeFfY zfp=P#NU!SvI`m2CgE)XVaBo)LnH6%>Gw*U-?k9L|oZs;-wbkPmZWXKkvLXRr=WU6g z3YdlW{YMG3|6s<|tFzp=T&jRin`S{s6!_63Olb~WsfJ}qI#5(DDJ9q z{qha~gKgregfG1rV6wnM0HMH^p8l@p)F^;e5XL5caoYQn{Uo?=Y5Wx^2xAZAxfHH_ z1u*s-uvE@*mlR@2%-tzO4z3ZzV4jj{zxnTqO~xol7g1MH83O;=ycG&}BRf4Op0G)} zv?*h~0_OX)h2~p=I{ls3IW78z5iF;ozWB-EPSOK zI#epX^R!bdbVDCnDHu4L!}vInCMAeM-29&SPst@0g>@bt9a)}4G}{S$6NcN>_`WAc z#nw{@tP4LEGwU;_$}_wH>efKGeND=_uYmq5KzL~SIk0{}womoWw=|;rh7j@o^Xe#k zB7=j0e0sSvN36yf%$_L1eVm^4Gt0BmAK|AgOU$n&Dz}f{ut%IUHlt^((NaF7T&5)j z2M7VzY{371HuQc@DVeVeGeI_f@rLQ@&?>Q7Uk(&L+vVHVLDNff)!%`KnA72=dR&Q! zyfnic80Do*hT46IDCrrUm7plRSL;2^RW^#8?HX>GwsPjJ+z5>6j|u&&973(1@U4AD zyyxx*(DxC%ywdfP(7_dF>lNUtFjZnQs%OZj(V&T~5+Qo@5J_fMQe35uWl*I%%3e$pnY3`|** z0mVtRVWN7^pTt|to)C_H-s`*qT@q;j-v29)fA!)28GAr}1+3IgwSy`9RjXftXtSqg zpl@v9Ne5JKTJt~eUx9xM{*}l7uO9!Z!~d>%#NP5kmdy7;;e70A4lX8N0pBnb(8GBpSJvz+pz{UhzwGsYybu^x%GIYQgJs%*dxE9I!eCu9@fY1NLH=72 z$TA;k9<;fM>A|@H=;A%V6-I`drJJNZnLG%Ezu9)(sPZhc&Jy^+&()8Wf6bNw*wxLE-! zhnrL(E}jfGP79Ov1$|U1R3sEPl);VL`xTJz+1l)N#Xg;LotM<^!mpx9*RzxWt~5&& z_K*kQBuIOIJ^q24J_;4_?mfM47DovT%%5K0z*eCD6fC5$sVpc=;7htP-X7Rn4E_Fge_-Q;j8tvv^O`xQF1 zycJ171Y$IcuRevN*KA)}Bx8L7I7UDt?CH;F&q5o}t^>!bMajFOJeDi-PK+98;Ny|A zo@P!YC_BUu!$gG2ZbzTh4>1-jdtScuHK`uohs^b;_`bn!yX+ne*2uB?p!-)IPI4@n z=SmDSOsxDYTwNwj9+nOhD$N_!-S}Z@g5Pu=l1OI4-qrQIb-Oqb&E((}WJlrI zhWAz#c)FfF{eqe_G&|&4_{{K!?fjCoa^0f&gurmWcb4K;f)zDfV~m>^qGw2qDq^`8liv2|5JQ4_GoMJ z=-?9Hu%P5*BoJee{jr|Pf*M48<^B$42Nc~0o;lyqQ}aGI8oj6N(mSkyuuaSkEp2{l zb8QLa9wpDtsr=T&oUKz|+@L-LD~pV@L~458<`!h5a$w(sF~R>uiMLv6BUL|Nnx%qb zI|BI!jOc7{7?Icc7le(cKQMk`kATU)1^+pDpxf=J8J&qzJ`>LoNNp6%<)5UMYodCo zf%jmTO^P(~$T0Qc{{U=Rmo|5OgH(JBanpr!3vDuim+<~t|oz9g|B*$rp zN|4XkiHG+p)TLw?cmwo2vmVv9Y}_HN3C;W4HL;KC1){e^;p&~w3RP=X=6RkL2aJeH zLiB$iZt=a$YHDRkiBekJJRn@WnJremPNI#${Bv%2#o_7 z(_Siq&u2^-NnMO&ZMeUa6@24mIBZ~F zSs!67gy4MBZ84w6%l%We`bKM%Z(aLHHeG%s69vzC9$DlWH_Yw1+vzaHlxJLR0yW>?pVl1-d9#gZu=8U~~TNGXZj zHAzCi-79eFa4)@B_(?n}*6L4ghWU}pN57)QT*g)pQ>XO(Gg|J#)b_oO2V5wu+d>w_ zAOHz#3&mr_Q5;Yw_{heFcne zjyGFuUmU@+3LD_#m9Puch#)RllHgwi-wWgxb|r}V*0V0vpfrm1XB711%zKJlr{h#h zV?DQ=U!X!au3!r0fL;ndzeHpLE){8ZH7t01-Yg;nquqyoQ|a>j$?K%>Lq43Q&k>7> zuv0*s=GimE=8PiLu?ka(B4mbBBo*c^>;0K1O#9zX{b!!0Mzw}_jkmeBTsb}8AJUTC z77E^{C1w9W%6J8w3%(W2_r-#Vv|M#6)+$)|!I?Kq?DPAh=}0@1WBW}Z*|SrWRl3bP%1HaU-*tEwr?@5tag)Ip zM42HM5-=6_4GS%gv)+FS3J(QIy{p>fLM6#EwsB<}r1Vm3$uu-|)K7OGT#?$6(bgUp z96IiUuy%rbcs&<=TJJW^%PkYuWw;6?1v%9f(+)CG^A6qsHD)7QpCCN#&P@tyq$Z3f zGxPG{*;|bJ`ZOO!ibHWnPefN?@&SXT%`#ZxUDP z3uLis|GOUuSQ-#v?-fOZ2+>`K#uTG<*>ltPIfQ`LP$+UQ%UYu8Y?>HgE( zzAjW1&_PcAP3V@=wJcQ0V;XeA`CZK6=T0>8Chfjd!3qsYg|!^UTv zzT3z@#VJb5Z5u#1#D&^i%<9U2?xtP5Tr8KP|LEsBQE^REjiYeUg@7fKD)2J(-<4)+ zS=(NrV%`bmWAF5Dzu_ac~G&VKXlOrEP~F|5#ScEZ44ruA;Xi z0!7E_7M&;TYd7ZXE$(}Y^ zc8QU-M9FT-R0KBoIKU=~rc*6KNkP0BNy$BrwRfevDuhZ24O%%jNP<~HVR#J@uQP#T;e_k9qBkRozRB@tC>NQ>VtOh1?wX4?A zP%3PZ9dQbMm_m@itx(;Nci#$R8lR5N0bc9b|4=ClY_yu$A17 zq0aLwa8eRU^E>j}vnjZYO1jb2(-T$Fa2{uGI{*dBZh1#$@rOk0pc9eoI!iZ5yv~yY z2ZVgHeN3O>p*q{LV+<~~Z~|1?^z0=43fzMF9vLRH`b9tqM(@A4ub=N#i4#UIUc$q= z>j_N4JRL%KzJgu~&mobMX}2uo6-%Cx>5#WzQ1AhXn7g{&_Z%djXwLkklH!6<>!d z#d8uNBJg%y`YTeuv9a?vSUO zUM!KYzsf*B{E$}MttbBq6u!hPV@N+qcxN7ys>3tJl) zO*krybI^mTbwhdE+?qJ$qbvajt!}y(PSU=@k=F@Q(YQEk&=H7W9%S~!GLd^rZ#K$a z;9l$k4%?^xVB1`@ENG*uH88>XqWy_7-a)+XCFAb{d$~*Ds7gehr;45J7Oub^4v}z3 zME9fzDsmEhCNc5dgZ;CX0`%X4RI;{XK&LSCOZ)P4U_aNr?CpFW{`p`og@R{S?>;g66%c=VvtSdfG4dRA z=$%!+=tpsf7`pO(a`r<~dx!|ngQ!`lH>6MPMJ9ya?NFFucUI*+N}BT~fh05WLN2;e`Ij16SI45{7Dmz@!pO;t~IVWs?& zlyGr^i=hl9P{ zEdIzcQ8-}Sw;p?OrIOS83Q&&ruxJdjsy3Ig>gu78Fw*?y9>SveY4{RaaO@6+7(t@j zqGypD{Cqu6ozyFrzNxPksB7-1vI9j3O0dZLVV=BZ{{a0&VLw~nsoTAt)WTe!?Wq$^ zxnH6qA5Mm4}T4>k#1QDdWEJht{S?fg1V)+j}!`|VE2t! z8PS-F6;!59KfkMdpYlFDb@Jt5IPcnB3$Et>5RQqzg^vS^5Meg)RsE@sOy z!keZ8$EwIQrzREqwGF($lf?a#fIP)L$p|lpQMl(GDqH7!t0zMULCy`^N8cy@eR&q~ zfz_efp=h+{K0&I7+sjJBYPAg`{j4Vg2+_C$lQjFUcUP;tR*7uAlT8!IWZKAy!Sxhk zuYh#?^<|&?`cU8c%0;O{aUH=EZnLKn4%c$_QVuU011`;A6x^a7wOVB4uHJ9CJ*IF_ zrrq|+1sL41$;Kwy*2+4u=p3ziFki$K82897Poefn=gazd>}}sOqfhOHTE`5V_2?>? zZ8BvxMvYiiRN`rOwa|q$*~Nn36==!&kw%8!yJB3UNDKs*~sIhlHJm{Jk&wxfQ1 zyd30cHdr$=P$hRC)%Z3Bbj{Q+q1|{zFTz2EMFw%p^r6&9Y%_z?aJHs|O09Qnil3GL zVRC`ySLwt=r9pb)mMlK5!i8Ap_;K^`L;O|Qg^4Z{ioxL+CPjYf6JsgSUj^Bxy3=96 zSMu;l3kDE|VpV7i(pXeB&aR1Hm=wZrvVg@=i;Xg-!*OpYOukcPAp_&I z7yZQ7g)V{j&-^->ShUm*p|Qe?JF3-9NteeZ2i0wr^L@5eBQ}IiE2;Ya2&_i!<=OxY zRD;+&yEPTsP6Q4{8Ctj#IZmzaO}J@BJ!fdG-y>G{H*t;u#8<&inT81-znZ?v)OSL~ z@a0VMlHm9(+Mo5aa7eUy&4Yp#g>0xPuee_9<3BG-&hAMALaMD`IQ$XSf=V$0Mfrn5 zKYF+ztXe(IOxdwJNF8eUSg}vi-o}?GbI!<9G3+jQl~({Rw;tSvLr7@hf7v^2-@4bu z8EVXPlfFKD1riN>ueI}~x`1_BoA|?N^Q- z7wrZVfDo^en@7+Q$Klm8F8^)vpOOe+*@EM>9Jg2n@z~WJ>qon`Cp)l^*@wfv@{;0d z_HX*@&+e-ZiWV)+XCICqVh5%+f_G=|24=@zuomQY-nbpTnX?OdU*7go2EyXI-^qE- zJeCu*i7Tz)Mq)WnC@TzcBG)DH%+70muo{#&e5nGVm&Epwtr&3czRie?s3hL=efFn< zJc6|1g0fFiI3bIav88fJq+wi9cJ!aZDv50rM7sl!v~K+MuCc6pVVPb52a4DY*kF9& zsM7amjD}u&b%g?_2NakkP=m;Nn@Q4V9{KX6Q(2c^49$}hY1IRlhl>ng<{{j+Ec@%F`O7zQk`phTzowFvB|Mi+*dK9DFnhA5JZ6%o=@@%SPHu{0HA zP{A9$Uu%^ANVRq+qv!JpZ6RB*DF|T#9kQOaW2jv-)lxQgFCW~O(50-Q!sFakC1;|f zc&MqX4c!xn>VK0o?CtiC`wWsRe3Wno*;Axfi5f05o++>`#Q$-a&Q|62e+4*Zkop!5 zs-D#p|8YrD*u?Zht%a~gw=x@S90#R69VqzHK{?9!Z_6!*+s)B&&Y%t}_5w)niP|dd zPs}XT(LQQ<^Ss2*5vz{n!k3e!dD=pW3~9AH^`NvzZD@XsC6J@417xY3dj`A zj$Tpf#6Es7d-4l~dG9~INT_{(2d+s1y#iiEGyhaZzXF^GkWI6&3I_WdgaZE=#Gm%B zz$2SpHf3sW5z+V(WRo%+E0J{R_w0gGJLm&_v$2 z3U?!#hryeJwE-p18|+sgOKqE>EJ;IozbP!ey5aH`$FXfFG?e#Df#~+vGkSKsbkDk{ z2*o=#G7zMObcds2_{wtyT7y~o_2ld>MOBTa6+C)#^5-X^Sw2>>_|*es))e$i+XVHm zPnTbTr^L!pD6>Ji7-X093RFNz_*v-ZE8sC-e@$~GCVqPOQdmMIx2UUM=A)y<%+?>j|Yq~s#m~;V<1c&gxi&ktn&&ShSbsKS-lXg$mL_D29G^M zRUr#&+l)WKtyPJJz?{*57TXsB3J zOyL2hJhKX4oQFIoo^svj;?CPt+vQzv7OOxzQ~ww9{#u>z6d0{NJFtN`_5%B!*dQZB z+`IPxyP@qAT=L-qIysZ7cH}iu+g|YX-$e*R2{gLX9VZdpy>z?S4g6Vs_7uMPgnP2w z>eOPGK8fBkiR5Y4N+LggD<$d}z_e(b-MCd28lxn;I~7 za!Fch#Y3vsc-(Aj(mxTo1|8q8`=XZu7grqD+)>3d-KZwEcM)4)U&T5L%Q%8A4w8gP zFb;=^9a_S@(7aHd=8*(OGZaLzP7dbCdHDvVwtktJcbHHoey(u%Qe*N9V1^;O8muCu zeV~K#=0Cc1Qnk_7oOP?WRe;haI_Td(9{7z}L&#OM9Gg+%f&-l;EONQGIw?4<;xPe4 z=bS93{0cZ?om|cd4{wgdyaL^fExKiB}@(N6}}NGq8xKh zDF{qS&##FNSjtM3C2p43oh?qH_(}c3dyUjwoV_Z-Sf`p!ko&zjla{e&?4f_$Qmz+M zbhI}-a=oJqtq-MHBOy$fjkkOFyL2k*(={;?4crWL&%)pKNceUS-?zhn%3~zx{g-_I z)M52dGXYfO>l1GnhC#P%Vy$e(PPyer~ zp05CJ3azp^dIC&gS+BSWRS2HOdaL8R;Wsx&bH&!|)TJi{o}!Ihdr1~I35_wMi zy8j7}sW|-9XoFSdBBKpH5fgQpu;3?k8XQduC?^>h5q&<;@1Rcv@o_{jY_`S+mmBsr zbt$dcC;yi5#MDVgbWWsA+wFfk<{jLdUpUEG9#`^@j=FkgRqYnkN%?A^U`ho&PL{WK zFr%ZE-~{5PD~aob@0n|^4DVK9uEt-B*Uxm&)zh5>NhyxNFed7;zUj0G!dur#rg2e{Q@Pz5M%RrmFu9)2z zjDnpY8E{aDc7CAMfl&+WuT!T_JCxIUA;@&p>DEP$f$Rht>fG@ zEosJ2#=Lrox-gMF`iGsTB%>Zvt7k$iY9sQwr?`nrz*VVtsLI0uVHR`R7FC~s`mw74_E>Iin$%kpA`j1uXsNoJSA`)-!9T>bwKL~qY zrVCnJ<@cg$4Cpz5f8`9mQ(|>*{=^VIyKttXhOHn#>2=1Y(%Dq0wK<8H8n__PgsymvTx6ilU6))Fet_y(L<4`Ihcy*Fr{?7u z|Di?Ev5iTI{}oV%&s8JL8RB^RZR*be_ZyicmLqd_{Qx8rBmM4i0^uYbiCit0t`Mb+ z%z3|>i~5>(KezN3lMUhoF}oWDJ&Xa>T26VUq)j9tO+TE`u+iSE6R+N5f$$G~u=8REg5aKQJY8f$lXOD2yB9V6M3&W| znJ>}+oZ*AVDZzd-M*F$R`zOO<;ZMY5i&^dSiw&$?Qg)wyp%81WN}>^Lk7k;r^WpzC zHbNd=JzJioKX7shnfR-j>(J8eQB8@Vk&)pn?>IhzLTfzDKw+*@#&q9Eapiw z??IQT%6tj3@0~cdeN9}(uCK>Y0L;~zrQQa1KNeNKjjs1-GoDw4Rh49MVoUZWZH*@9 zvOgMJF14jN2c6#UBB~^eZ7jluiRm(>7!-SG%4ca;e=XW+a@4r(I z^zXiTvbGZ(TVmDx*lPEtS4niP=DI?vd6}w(fH|!_X4btyPtIH?(q`28+If#GNpPk$ zAtPUrvr5Lg?aqLop)SB#$f%rFK6(fZJ^|hh47s{?m#TOUD-2Hd4WKbbU1`@zQ*Au^ zuGeBIoCVKD)@}7cftdAABTt~aa8v`@`8Kvs#+PPY(~W7K&}+5Jrg56veaWGEh9ohn z0HjQ>yh}IYCAs<#5|sD)jI1Z;ik)`J*#D%R%CC?S4LCbfS5lI}SAdz02dIiuUREz4I zf-<`~7jl|rdYY4EHWLMDjHjjuHJAwy6cLG+FBO>M=8aFYI^9Z6)D0UH+E4FHxl>DY zVx+Or;Xh1Nj_BB_3-a^r4KmB}2GO0cjTM$vIX{i8X;3;V5xq@xV#5c9$!_Q|bsslT=#TJPrm2uU>#VW5J)J#uxN0t^v@MQI_^C8uHp;Bm(GDz9Y{-8l$GV#e zPlpw``87_SX=&T}({)IipJ&AE#|J_jHYe>Eg>ahNvC)@T>5glFs zr+khS#fqxQP;x);6V9>TXmy5snlXGj<}coxdf}Y4#M2_jftL zRWb$7r*0ali{K&?PAI$;*y0|j}uut<-M7`_>qOLd|)wXX|idBm%bI< zQ)>G%B|lZ*m({@pgU@D|&G_AAZGmW`)Yplr0RaNERFSa)C zm9}k^9nAU)>;$3cGKLbAecas&0>{sxi6nE-2B=-_s#0gymvq$s4eLCZWTI0J%I1n0j6@1QoE{BwX6@~=vemo5l$FT0rkOZPJ;n=Xet~aercGP-T{{w_ zbrRfEo8oL7uQBP2ukEj@9;B}>1~p1X(-=6v)ynr>C;#`B1f zWK@fJUp26n^0Vu0hOQ(%j-*AH!bs~ZT0Tt{ZRV5kyr}g{fL4fV+Of%sc}z&3+XkNk zgj<@;FqtW#I|X^xiJQijkCjBynek2a=S;S)rROBCEamadpZvtF)8lQFI~ubb8ph4b zIZRf)POA;HbE|5q!tB)U$QL}@=m$mt*y%;IJt?!9i^c|8qQtFA@Ba8uoDmlM>TL1r zkgdR#Q`#XEGbRb}$ni~xeqdKX=c@CP`qs##RP0{O?NRLL;2nBt^0Ne#@V%?{Y^2Mu zb_2Nx_e)BVClN03xB89?B-)k3S75L+AuvxXs*m~nsX(<6XQ91qbtM9&)Ml+sfbW4# zkv6e}C{<|WJyo3;tsK3_a11ha?)XfPiCToev&WtzMyK~^((v;*qf4DRDG}8M|8$?j z+U=jp)0Sx?+tp;(cO%`r+Fl72X|6uaT$!nLL)%~Xe+%C6<%#+(bcAh4^a zab^pnW={l-owp`h-(9dg8f$1Bl|S)p-Y&C{$jHQlksE0-(XgWqKif=q3^j&KM6>-o z0=l)iLa0r#Yw$;ci%`SgE-jM1lHPZuU0G_AuEl94Dz$n!zMcVURlWj z#1G`n6g=V8t@T?In{_q($1BHm3Y+%kRjorQ-|f3SSL??HhEgfv!r-g3iTCtq$wjNn z_x#4K=ATZRqS~%i^Gc9_H@U}vv#y0(Gn`kTyJ$*_vjQ2 z={0nt|7D2tPJwT=^m8E_gCJ^THWnv}#o;*ZF{Y-d2yQfX{4MSxA>)>~u^zPh995gz}9m2BnW9j}U13tP-hLAsju|69Gr$NisT;up(zse-? z24J_Mp>x0_6J33|%n$T8QcU8%mN`2aJ_BbI6vS+n<2hE4uBKRL?}_Er@qSNMt56U0 zNCE3yDF|&2&kYOATlr#^LTFl-W5^dbT719j>Dy#|tiqCTg@+iUd$L5vkN_B7it~c_ z#o3)-1D*J-E40dYGtjCrM69{*eFd?$Vful!@o_3EIFVESfd#U}@6JAvx?jmB*bIu| z2qF>XGZ~XFsgr@SH0$s)B(mqfa;kMjcDa!R3&K&t`8jr=5{%8>j1RREv;v7rE>yoS zGp(k(I~+*ArxsE4d#fR#56@^je))N1`jfPV|AQ0CUd?(|mqp31RUR4yYJFzm$_X8b zzj@Y9iFwv(+*;{obieoSvzyh|ku;|}b@TUZ5>ZIZI(s8C6(@duKusL{K=~O^ORLQw zT_}V{C;nr+#S(0{Lx0^qw%5&@TV@r*h5JZtXJ7goX117TZ#z{iuwuu^gzSO4 z=dfU~;pTSPV6Q=$cdROMVxihtr|(I#!Cj6lz-l*Z_RTf7RnAADhJy|oB|p&D_7fMr z)e-l}*?X4&d8ueQdRsX3`|DA%(9!;tytIUhg7~rh@!#Tcxl!Iip34tfWek~nZ+XL& zM^0Bek~HH4FQRw|P`Sd7eJOwyYZ?aHL^fq`)2wgZkiPHf=hJ-YMIz{0YSc8k%bRT1 z0MRCM(8U#qqnv_x{Ia%=UG5X#dFm@r68L>ZX0-RbN2g_@NQTCV6js61dY^TROqQts zG#1?mdd9PpD}J<-TLm{?xZWh~!suHcPR+*AOW!3svs-8=cj=NuWlJLQnf$z6@-_|; zm?33+M(ryl_ISL4ilLAPYk-MT)A-|L3CG{F8$YYA7FYUdCTiS4(*oxexf_-aDXR?B zE4Kb${`rBQZ@3mmy)k@*2uuqk+5WyT8L*IQw14_27s{j~ZG8`qD}s~2@kzOcg2I@C z5?96=Y|~`nl*>6NWRb-kR@+BKhEDbh%<2ov(P+Hy%1|f^y*<#dPWD+*{p=)Qcufsu*pHvR3m`RqG1>Ap8tWjyDe882i6j7TC8L zVV*c9O=Kg&CbYTgpnVXpSdktT5;Dd!CQJ{E^pL9j3Trh>>Pgji)PJC`i#C{0v#&n%=;B|6{4n zRPYT(@nZgSbIWi0rJ0a*u0zP@AMZUpHP?y)wiMb;ywwBvvvlB}$A~G}-aQCqGMmqx zR#ERp?*61PJb$;E!n77q$cgu4zr`GfUO$MRCmm%R;0ho9^3F|qH3HAk=`;ShdRx>P z_pk%WV#s3N!R=hPBl8UVq!&~a^`hYH za}doff(PE^55<*yNY+n=<%8}#KvidazL9s_=2o)MO*;JWsg@31I#B z{&4?u_~dAwgXCh0{#EyU$w1-;2s3c~7OWMxZk6k^ao|6d5@SHIh`gcr?h8{wBCC#C z9>kausViW0yAa9QRi$}#b6>R}(td*m>^!Kts&T2#!w~jeL7ZhmRxYL=iGji}r!h49 znWVO(yjf__{>ZfqTw zVCiJf-<^40VPi^-k+ov#V~@Vszs6bGOYh1Y&|T3m&S~ai#ZBB+*gpXjEtu z;j4nWt#_n@?BIUB*-M|76KP}^fcJC!p}(Vr*EKs7jYXr{(;pS9F&-x<(rX7eQ~f6*bvWC#p8wx1iAy5ijb9+Wmn`UN-Pf8#T}Ww6OcvD^r_K>g}< zMGKSQz~>_H;0b1*_+5p${=U_3ImOz>iNE~Rp!S5j+uGW^WR~m_Nz7d&pN=j#;uB%3 zZ)wWgREp{1&*7Hc?ipua1mK$cM+m&~c!JQ$y=B!anfUF{)dxvWQx)G*q3F|Me{aIJ zrbFe(^u!|`=ofof?ERQ-!>(_Fs?9gHWhiVo=&Gx#V`BOaWn8JLvMF^~{&L$UjMfR4 zuc@uLtSx7nJb#9;i7l*((4Xk{H(pk00(EHs7@#_ka^O^0^*u1%I&C~#x_zv{$e;N1 zIjD|O80Nie9oUQ}Q<7$bY!_~%>)nIqSb25cZ~@W1;iXI;gkW4$_iLw;@17sUpzV7D zb5|~GOhH7pyn`{Z^~X)?eKwZ+B6KqMSue0}eEmlvMsP{1VSyK2m-midK)NUTj2TT* zxs52DJn_n)qJxmoK_a*Dx9=qU)^#{dT`C^55rU>_wrM%?)dDep(_NR{MQ10CuYyTf zJ(46A+?Mzp8-LuJj1YWoLy)I~1tC{fMLRR3?Hx?iQ}E_luzrjnD`Tky?u7=JYXHcFt zW&D(7q71-v#sjQoBn5?*JxVpxYL)BMT{TBaPl6itn6h1l{jk~IB@J_Dm;^C3NAr*!^S<>-{vAD$(n0Gm^3Oy z!|metn;j+FLDJmRH@bDP_kMw?n94OQ06`e)aPB;s0L~t)@UH^S#KjsCf%>>WT>U!T z4SunfK3Xp1yGxOQotucD%{%NyhH6QfkqFA+jNisw-rMJ2Qavn4h5lc-73 z7V^SVkp++x)xiTzU;NulVm;RQXP<2Xs-#_`wB{NdD@RQxb{}d}#tvXE&+zE7d6T9%kvx4LvrmNGE5S?a5iAJ7|61I7|O`#Vs%w($~*g!T@N--ebP z1$mBYd4b;$(@|NwKvKQD_$lvAT3bATYE5wsrn>ndCJo$Tm{VP`V_3l*|&)@ zo%u4zPnEy5Gt?Zn!YP!eNk$o^4VtXI-^p0>nj}$*Wb5^@5qhe=b6P^_9HG(I3um|9 zK7kME4s29R%PSCpu9G*8(wE2b5-I=1m@T(+d@>f5QBYs2HuWd8NU@nD1V)A`uB4fs zyXz+p^jR^;xpM6JT))KlZ#gMv+RE<{(t3KKFxQsXUBjWGjCk!iJSgi*ce?RA4Z^?t zG5cj%;47gRKd|&YWhi`#tO{3+YIJ`O4bQx|+9d?S-E-h6qq)`m{adSq)aYRpfLEYD z{$Rhl%WNaa%q40^F8Zw2_+h_@)eM6myXZ{(q1v_1sx4xYhFkugilfr_KtSj)zBQm@ zy>ZZC zy1G_UBh`g>L6)?>nN0iM^}`=6^t*!znTV*GM2-qz1g0&cXzmbJ&Gc?C{4+ZBtl~k@ zHOJXG0#z~kVJU+6vtq0#oC3R@15Mkh#KoK6z}i@CuG}u9i1QWka0hl0-2vnb!~(D(wdrT8lTF%}$oTVlEiw3vNrIVUGPR9%nSjriqa{ zTZOMhCYfnJ;FEi$Cgi3p*Trz9O23S&h%8z8L(%hYq?n{;IWWnQS0FgPf_{*~j?p#}uTbM` z1doL{xUk4qe(-5H@Ki^6-ZKfyV!uGmm@c(_p8`edC%0-QSx1`DTGT$$Tw2e9@K22! z)n9g=bvn$NpOy=jnnKO%c8F=RKB&c>dL+k4Nn6_?&35c zc_bM>0p~2FvNpGD|OG?A^A}@uNo&5&E*V-im8Vgerx>rDf zJ6h9P<{J7L175;$q52}8#-GznCiBV0x-%^wcwyav7KP@&86gEKJ5GFlZ0k;l#B4vB zL_S>-NbODHGVlK=FhGdy!>R4Y`xq69w&n#sn<_n+=Q?>}n|QHWgeAW#r;Yx)(R!4| zN?M}9)2UrQFEc@;htP3(^)Z#}v?$7kj<)^1-NGaS{}?2)Xo=MNV&ki5Ob0`*23K6M zjZBPI_rF{I=__kOo|E&%(HD1d3C8K z*$H_Ow9#1zsT`LTEI*bwM}Ob``S*6T^W22L-4&%rjaF+p-lV}rwhEu%gZ^P-=9&HN;&;1teH+U6YFW`bEYGIvScbyF<|I+7)Ta;k&xR}G01xnMU9 z*Co~*oF0>^9bs;1O@8?54~e$^1DePp+DHOBsv@na!xS<3jZJQa<%dR%PbIm3En@fz z4ClGOG7~iA!NOj0ePKpMRJNna*KWQnszmuocj`8D*3)E5Ugxw$Ti&wms-hj~N`+(U zI>R~7XPp2%$I>T(k&Nq|klX7-m`PDvalU00JwJtTOf zPJb0A%1_`#=#)qghs`(<=1U5r2QFT=FpSx#7Hw5dTv3CsmgTvcgUSMzd!P>sNF~tUCkz)b`!50Bn&1g9$>L&b4ocs^7|N1pP0`sos-v8b#L zY8-+HI#SN~T0>f^ef(6uH%-;cv=X}+q!8F#{hZWOr{HxDmj|q|Kx`GR$}JozS$=1! zB|$D-mOu5T+f^LjTuYR`=~7pq<&yX3_e(MMf8b*FL~QV{)g4b$o;Emg|H}%>S&6pa zNHkPp&fOsBp`66!aOF3Z9+%=8Lk~JG#i3Id5moBZ>vT0}ZkyMWO?A>p|J0F+=AqtA zx@zu!0W9~LAqrB`f5WUwDG3aUtiG9-_?7U9MK3ulj_R>oV4@HS?%=?8=SRK6GPt#BpHWeXJbOR&pfbOSbXOvf9du^-J zz;w)jIsomvjwBgbmw?TU|3os##amAGiE~j=zI-F_qu18aOxj<_3i}I|$Dx70I1rq)77Hz?Ab6N^7*)_7z3=K}doblqvCm^stb#z6n=HiEh&P7=~; zzysOCkA^M*k;CWw7|iDNHkdvLsit=h=5`a%oU%gjIpRvb7GgyrI0=`GH90CZ9ItWX ztIeb4x%W4*RaO&Z2rwbAxf#dLf`%{_DDb^*E4#)ETD)`jG)XQXUsM!ARuE#p)*9{umtiSe_tF$#anF-O11HpLhW z=;YVzjt`1Fj;zdsRTSNtdiVS2pa&2L;M35sPp=87d?PN-63k<{VU7fmR{u)V1dr`4 zI&i)MZxNf?|7xzsqm&&PP7<>>PPg4T`3dY@e?p?Cg)UJc9oFnJwv7+`1zExMnKX4= z#$X)k!bA`K@P)(rqjsX&WkJkWZl+{BXJBTRGD0Q)Iq4h`pxk&muCoq_Poz*n7Si(; zsZqg=O7OfIqz&;lDY8jus#?(7U@1X~Z{-|zFB1nrf}Pm%eh5(g5z^gQ$T^iKlpJrc zeFqaN$95&|oOZPoplpN|NQ(5GhLr0AC9M2T-ld(^=^+gjP6Wz`-2VY`K#jlctfd-c zwLx(7OA^IoFOgn%hn_#YRE{U# z=d7oZDDZV9VXe|UmyOECaOVpw@ee2L!{7DS3)DZ7);I1}Ug)|gNC2rmFsH_n)pOaR z#TzN7=va#KMj+?UFK_v3{-D#zMO~heAnQhx<@U&T1s;?LpV-CmM$KiAOA8kbPTB0@@O}ea5S40sgBgr6n z*AC}&8%uYETWpjoDOnh2&$cyQpmAny-AaXu$zC^8?ioSTxf#4{qOsC@HL1%aW*@X? z16oFIxgo%4{630gc7j*pFg^VL08gHjvRa~c8qS~Tos)Rz`W+p<+TLqE&wf4D#kjW! z!pMmu7~(~ocGU75f+CU+A0%=*<#VpS2yw1Wp5nHy?t6^8UAb%R`*bWJw<(R-!K*{uYkvs0E@Q{9!Y?Ia@$9EfF* z0Du9M{MhA)^1acf9Fc^nF2MGgH|yOxuOvwjqByYBNY#Z!H+L1@6!d`Y6OES%*yL|68V3?C&dxq4>7Z_W*h9p)hq#iB?SCe=?eZBRIl4yx% zj8&oX*xO!9RI11x)ov|nthR*T4x|rwVkSi(khw8|mH^{bJuYl;-zc<>XQ-6dz#Kbz zNjuxwq}(3-QX0t}iOpyW6f9YXHD^3gk8J=WgC8SNjuV=4g1Y6Id6Nv=6(><%gtV($ zr!VtvnlD~CWM*-IoSUKhw$-*8jTPv|;k8K<8B5ZhQe$$g zS!9Yb0X{~2dyhVGu5H;=eAKw={^N1vQ|`SjOK+N{&2s%3(*ZfTx7%4}W84@VFb{#q z1q12l-$TnOu18j=VCh?1g;rg=akCUM#`Y(YAZM0WKmvjtj{|};$H*Z3hm0wvX7NNL zY@<)7WvprKa871r^+7>9mml0n(v$qrl12&t01q0`H%DHbI7foYO{I5ROS(z3H9J4c zh*-GH7DWoophm0}F_y+dXCue9pJt9LB(09!Zg0^&YWp?%1L4eZ%}~cHBP^#1!IuE> z^30z#9tw~SjtxArF|@&H?7_L)-P7ZY)@CjqI?~U;s8FQ&ToaH<2gkV{MC*~p2|Fxk zv`w|ovGlE|X0VXJ7A`23A?`?77Q<(hO39Y<7|0_ZO>|FBnlO$>7gFo)Y34#rtK|n? zqx@pgu@R>|Ey{Zr9{erdFvdh}3Pj4-W5vlFat1;3jdN#=@J+)arihD-)uuX@%Ld2qav40E2Ri7(8AfTbWQ=z3cx1aK`M>q<*Ss<%WvjnOE!iuyYGNRB6Gn#~t`R>m z=Kz*C0G)lTlh38w4(Q>vj$WhHx})(PjS`aXQtc3^kjf;nXhQ^2$o!)%B7h&5&NvtK zs**hCUm2G}nPjHAI`_s(;!C%6oIOoa*HhC`9R{|)!u!!QHl$V=5wr1h5eCR4;{jXs z7)u1A>PBtRg6i+YOPft;_Qt8VZF`pD^{Y|7cSwb64I-;HVvLzk<&{~0$w`&)M!ifP zA0-INONMi~rs)*BcUARKn9I}~nr(Ksgr~KtERt>&ekM7rJh8$P%18rNR(1tblQ*!| z`LwDS{XDT-EqX$IqWx2Arji=5OHw+mxixf-cXeslV7IB?G4n3u=Bg=Rvl4=QC zAF=3g*6H+{Ze71-?@B_D;Y5-^Pv@3U2{I>vf}w|nnUX6>97In&feh4VVwaJ=bsD z_p#HvoOV*~=RVn5rHb}VWRkp+M)9(@J`$m3f5;n?m13r6vd=EP6sZH=is*G0gx?9A5&Z!#(TI$B%Mhn&D7mSo8(q4 z)|YUpSZ((vc(U?86O8*Qk&;2j#vFifajsQ~wshdQx4b)Vm#H_)GFsU7XwnKhg?sbz zvE02s0M>9vyU5YU8{j8^8#o!p{{TxVrqbbdRPrR!vo*SImp4tbZM9bAnXBD0T4|)Q z!pw2H_YZDN60##aoKy@M>4Zb&=t6GjPic4OTnLnc*8ZXy1M zS*#nbjboKZv8Q=jabI+vY(pH&96tp3uw;~^nDK@vs)T3GAHni9pOA}|N-DausxMc9 zuTQ~x%}d*f>_mv1CSPCkBw*QNpUMFBVF(x;vr7t0k2w~5Bt1>I)!n4qn#;TnuuUCV zQc+?rhmI6v1(Z(1w$dtjELlbf(JeE{FG>^6mu%wfy;lqFGdiU!TYOCn6Y%8m5eoLi zQOn!zN(8EbfZ|$31mlP|9W#$ITqBD%M&AWrL~M6@yJy_rqbEzWw(1q^LsrZ&QjEr+y~=ROz-gTesSo#I*}XY_d#b^m?RUOhzES>x_&5bmo&o zH1Tf~x}R;|I%{#SLS4DrZkunfX2jAJlQO3h2(cqbjmg6DRYsCb6O0XV`EgXxjW*G< z^}QX_Xx%sXJ2F8jrzBSFM6gKFO@WAmnAQ7cMB-ysUxxv`v8$dZj+DPq$JF=(-}+;9 z*(j#rc4_a!dvT|?c4xGlxkS=-9n_vd8pnN{5yatm;n!P5IKy>tYX~(u_cd~Do1y8= zvwPg6vwqch-o`7#8#Amc8oPxo3Kl%QAx|8PkTITlW1Q}BTqC0_l3QPApTK&;w#Qqk zI;*EIQL(+!ncdnc9<)(A8I^yW#Ze<(-vEEUtPV$wZRJT*t_}+VxSOZ(J)?8Ca_-d@ z+hRI(3)X(+xy-SvItD(17>6uI5lSf}k&cL{)f2r2T)Ag)-fCT;wmq$`q?ULi?f(D? zFp|48Qbdb|?!_;2xT?xda#WHAuVP#wzCr23xNV|M$A7D8NjJF{;r9vPWUgHo42XTa zDjYGvJ)%am^4dfe9WT_h&d*M+<5Hvvek(F0Zu2X=YbON-*WU(GtOk9;Dd75ch%X(^+T(-c%a;(fNj;*D#r8MX@O|kGk}WGxg6vJ zh;$$}2DFYjDMiU}%;KHfGP~d5w@u79eZOEb?EOOYj_bZvOH$jb4Hu0}QKf~9td5Z} zk@&L!< zXtpd)Cyqu*Jjy~wGIb=P zM83g8KwFT`TO|4Or?zPxR!1p2MI~+0-r_Cpdo?K&sRcP7ZIx*Weimhj!3-;3B_dK0 zSaTe5$LFnZ&81A3wx1^xqO95J>N}5I?YpyIZNTo0W+-2`C76~(iX@x>&mnmwZ!N&! zAU>8OM;Y-b{{UmAIU(*Yt=;$QmuoFMuo~N4c;cxHOp6Leks_bvhY0Ep6on+I$iW9+ zr1)=#VAbhh<@t^%>t&|O+)B>=>vp_by}CvIIz0IB<>R;G}%n^O6AzpE~97 ztsFczPN9$apCZq!da3R#)-ki~RUY2O{7%H)hkG{?87&@6%EerH@LK@?0Ch6oU3^}7 zOLZeQ+Tn&v)*buxN=4b`?vh=xrNha`hWr75K|l zR;()pSh%1BpkyRO*j_57iRM0J;=49H=c)ILon19s`?l|Hw{|%e8j&=OA8cewC2&HS zc?7@;2n+4!PCbq;nbQr*G1ePy+O{h>ni(TYVi|;BFFqm2_mk90;Cix8jdV3?jle+cwuqJ&Mh(v%1N+CglSysBO%pqm~0Yf>LE1y_XC-d2E5AF-km`PD(^p`qKSf z%eT1h+x+(L$4+mFc%f;Oj$R9~E!$kC9Zw!$E zrRBwN*#$-hGJalthPmeyrNOF~1Da?cytb=YzcllAdy&s7N+OLH{UV%r*d`#Z*QnOs)}>XM})^@*W7t#(e1#jZW1nt*K%7V>FQ03YAgH zI~Oj?81N2ppI4thzOj-vi!Y?PW<`eL3f2J$7i!!_UJO)_0Om5Q#~8sl{dD48na-o! zuWb9gZ5`rj+k}UUxWCWB<+-LmmN}n57#Pm%_!%!jc2%j^QK>9|L_&qDQyt8eoOvHTR_KjL)ll6lNfC~8?AZAY$ z@LvN3sjnGr&e4`jGsbWvl?Xhsk4lrpKwJ!rmZINhbaBe;AK-UsRw@4ggVMV)AX7DK zfeXemc=p_QIXTXCykQopBYuhFza14TEE|U2vME`hG6o3I^wrT@+w7LNP;~1^ zBKTd_@nh=vZUvBJWcfaPXUE%9J z4>uYNC>_+!Ax1mvA{d9bd@QAM`f z_<1e4P3~JYDT?r86?oH!j|YhG$H$Bjs96(qH;l8d_;qiS#klRU+mYXwIOT|=$Kx4^ zz~Xb0?tg7=qVCKjs5;-_>xtuWRaxQB<#r6YUMD2yc2LPtWPD32Auf>D-Dt+Z|Rojj&JVMrBq6`(w^EgVH+T4K-y|t*pcvH%}wn zeKmx!NPW+H=Fp;IJMK7A8P2qdD@9$)w(-ncwvfJ-OWiC#fbrtk(kTH+m>1~%zS#W^4Dk7GcO`eMeJKmXq%b{m(WxQ zkSfO*$ikE4uiIHX@@DH8C9R`w79`xeG6tCN4FL5J0QW54VXg7xlSe*WYRo9Hc|>#B zwPJ*9=#V{^Nec#6X%{{k6Wn&Hyc_R$u@j>axLUHHEoh61fY9jURKd-axf* zg?N+!g6eWdO6k3~?aV%LFKJ1Hf^qV-(@(x)z8?k+cv+&TU|XR8do~b4Z?krqHgbH9c6?f(G$_0bUs`jg>l@B18kO-c7@ zi9D|F5CF0)EzCqO8rH< zw@{6jaFQzZ>Dy@Jvm~HYu~K;?YRFPDdwrD!mCrGeuC?@yMXj~%(VO0z?AFg$cIm#l z+AZz%H|^7Jks_q@?OeUv+t)J*ESrIiYZ>Oep_?o{3WN+Uxjg(?w33wEQ|IIFMzM^R zM3t0XRa>niYf$v#^%U+l#Qp}`bII__ynIaNQ*#G_PA0GVY{lE}arGQ)lfs@Kr(c)1 zy8EwVZA>yOoZr~k^p8);)4SJIy{EAZd*@f$+@M<)=AETdV+iqva;SuJ82}$Z9&j<2 zifR^2*m2`)ZKwW9(_?XjgrZUO;xG6Lw-kTJ}6qN<8J0k zB%cT_s!3*P{OBlBVUOQJ(s!E(kWCEM zcN0tDATTt^FDcAxX)OrMzN8W+P@Yr?DV%g7CMS8 z&MutTWJ-qNK_=p_J6#e+t;T6EAz1_RUOwJ%b#lw6Qc?8NyX)YU8MNO#14**=l)s3u zSc*OE`pj~ykNh?&hNal($q{4PIajQRWA$?~cRZ1;vE{_0=xcAWGK`z%>^pGU zI=XAoZarBh>|m!SO|!*f-x_hku~JRUykWRA5hb$afn_n4UL+D`SusjV4yoOOjN-R) zWcPjF@d5`;nFjl3cYU9DyKb$W#pBzoOBI@*3n~WWh=?8dcGM0Bi;iW6vejUWu*o#5 ziX0{CL|r>GjnwZg{AMNHZfsW|H;FW++rAdEUU^XuY>vuUQXP4p<#zmotuV$h#TfBP z5iiV5(UWxo?6z8zmfpK;cccDH!65kaEpb@UG7|_@J<{Ew+ZFI89K35?vG=MMKE-)TR;L`JTUSQW zjJCTpc58Lad%Sy=;k<84bY1E6saWnTwc3}%QccJCT)4ObmT z)UTj|n)NH;qcgVeTfb9v&28HbvQ(kFY%q3iOpz3MYr6NMje?F?om8@z$&Eod#<_ed z|1`xR6zbw1P6mG&xKL1}JMp|Md|ZEkW}u^osf9~!VHa5Qs#Di+}p zOaulzJ_+<9v1FF~iCS)sW~7$^yUy)Gq?I~iKCNr}{`#A=5J5C|DbHS%un@|7(sx== z!4)Nyi-mEINXf%2Qq;n5OYRC!YfPlwH!E<}rAC(M@YUJ&t*dHI<;f+ks}XT+Ey!G{ z1CTA>%Jz>KaN6urj!s>B*_|^>daR$r>|fY;%N%LHr73Gm6pn(&P{m>{(`11&(^;M( z-`)yA2O6n7Z;1^iioM5u-KC1g&9Iw-JG;5B9JeLqJuS9cu*7Z1^PcW%+RV`jePKC} zIPugcj_OrqdcBPwNA)LK%UT;7h2^Vhw+l7qDKtP&UJahbTGmNZgYg!SOusYTkK4wy zxGoTSyC^oTtEgn#pkxKw zXwBGfjM$-{bKNROdY19L#asBWB+Vk2BC4KGF4(Xe21a74gg>)uJd~#uBYan~P9}mW zE>E}K+~${ft40suHYc}cclhM19J00Yvr2iaZ2+myfe~^iwcr!2ZY$!<8f}wp?PIAo z-G_LqYjU@>L%v+Fl1$Q#t~x)%ZLL;*Ok?(v5a15@kjh+;LD9Y`T&jYabh{+lHht#z zO+|Nm>RWMd^=s`3JS_z9PhM8LT<#VtSe{0Y2D-`^Rsuc>tN_5(Tsz=iqZ~gGI)eWI zQBP-Qr&jjo+em9|oLQRE)|uc8^UTDsQDtVsF=F+Y{JisFnv~w}am%g`L+C!F-#UKU z?R%F~_Y-X1_S%By#zrOGcABPEn{sX^Kg~&@Mm`Q}A09Q*oO_8Jvm>$e*Hc5&eJc$X zx|Q}sw^B)C-R6pD)>ok$yUx-Bz;^6O8I8Ce&&-BhDN2He^r7i^H;PrRRE+Kr9g}h2 zAH0G z=T^qw6>{dyI6xFKNr?a;>!LYuDp70qL~;k#QEWR%>zRey&$e$@ z<7$?syFJk$H7eC!+dPb*iKCh~BQg(39*{M~sLd>x<0!TF`80y29WLF}*SASx+V)Eo z1Y0ipk-}n`ql(m3%5AnHmU&teB&3p}ylNCmQI2)rc$`(y9E0x_Cfe&;dV8WY_6F3D z%KMvHwKQoZ)SN<9yTyC4QF$YW1p`ak!D0?-P@gWZnhuIf{X4r-r&h%Gce;I5V0A6M zroQ1fs5zGFLpQ02He2Fh;AHh+sr=d3K3OlRjnQ#WYd7<5Jwv!uyGn)K*Kyj9@c2Q8 zaCmCjGH%kkS-;X- zC4Jtj+GK)hV67@mUxJeiGPI^3OCa>gBQN*0mZnMLYAq0x_Yc@DZabdu(^Piqa&7wr zGaC1ygW^pefK9!fY=ZNAI%3d>2+|_q*A8&R9Wkg&8t7dCNw`lnou{O?E6qKc`=v8A z&B7~7HtiCa#FDyPEhR%7g*hVs04>anQ}Pj|nI_{!MY1i*?`FL&kdk$|ex~V8b=>X? z(cQaER>Ip5(vm?WPZ;d;HCQQ07)Ak7y6Cu*$=lRgh3d7b^_+1m`&GH-yI*a(E>ycE zmiSXV2`HU{S5OhAAml+YSnc&gaf|!PXfzZE#goBRkV_$GB|MUFqm7a9Xr!0~!ASJrT#cv)NdKF>x@e z#{^-&)jZ1U9VDUTr7F7wTkchQs;cu8`i=IR7B>}zQd=?ZZw4zZR-2FW$^zH>VqYGp z1pWxt>&w0?cNPP>RxYol*4uwj+Z!~ye5=jvUm%{sR)ZZbr6IGF60f6U^vwxgEn+u{~Bax&+* z22+WT)yq-g@yCx0cGtc9k5abeYX1O2<7Ruir%>64Xue>ldQI{;FGnV5#|*vYp(Q|b z5OrqT*cgX%{Wo{cGu6KoRq?mj=ceUeC4hRkup*)T%^LrptffrK?|O zjE@7vu-Xbda}AOXMy<;d`1lmP97vmI+FsN*FVECg+U0uNazlP!h`VL%B=#2db@+Gq zg^oz$t=uq`3y{hHW(7gxlebsMwIpGZNsrFGq>vG8``UBLF# zvz0cpEm;uExjf(d;kBiw!e}irqoexHKDxU-X!^1}yJp%iuGdmi9jo!zo-31lUw;yW zZtP+v%;2YPMKST>K_`O=_^e% z#wKY2ECqPhFdQpnfrBKaH*ylH2r0bgpC1;%eI7=SU)mwkS?o_JQ+qU_gqpYz4&GBxa0?w?l;gm*v zmQuONI_AsER3>@0&(sebn|)ZJxfP!K*LreJ0I4u4!!Lj9@M8xh840`zgAlvEHA%T|_WSNFV0Bl$el{hLZ?fWO5)U%f_&h zcV>$spr3@Mph;pHuH{TJ6@bC{$$KslGwLJwy1)X^uxo<2Q7Qi_0K?5E$qAd;d5x&!@xmv3Q+L4hoW>X&!tt`0VAON2r0U7tl z_0`%rr1&$i)!R~0wbe3NSOHcl004prU(Mtw#z^^}ZBF=@g+aH;Bei;nRn$K+N5 z_{l!rJQXHA0ht$yO75t>UAkL$I+bKI*Dhr$+AHW z=_|$qyUb%Tx@4-1`C-Q%MtmP0+UbO4e2q5C58~Ut<5nKRtTfgYh2o5Z49)IKD-X?< zK1L6LuC0sMy^<^`*NeHqle7p>_&Lc@fIm-f(;A0j*&yp1Z56C%1P3?=#zPUGeEzzW zXrj>+Rpr>+;sD28BkGle!n2{!IiM zSvAaKf(7;-**{V~f7e|9pI_VcE&Negl({u30+xfwBx zC}jjM{{TPhqA;dAL{@r!36eHQQC>6i{GYJN*3BlUd=z)OefeNi%JVGdInN`5>A)i% z{!fwYHH@*^;H4yrx%y6|O)ZMF>#dmwBPoX`k;YDQ?}6|C0KU0pr+u47aWeadO4m_h zRz!YLH!e22AQS!O#!3ATjb$uUjZ;P=d)RL@z3BHvn~Z0f1IhAn>@Y??f8aIbYB*)Z zvlF>Rz1I%S3d<7YmQ^Hyt~*TCGLd&ki}s|%ZS&-Dr$e%3c;#W+kxo8`SxO9cT|z*O zLjp0ZB_2k0+=%=}eTIZ4Rm}po>76qcs4H#TmDntz$&CU^Y*jB@^U)Z-)t+h)Ps_g(a983&sGS~ z7Hml;4onKF-~;~vl>2{OYIOODl1&-HMr0hLBy$K?(tcydj|b*-7i2c7)|HpDD~>=j z0gPwcKOyq>){&JXIY)Cm`{DM_hnH}-4L#liAWB>0rqcRT%+yHUyseK+g z#~Tf?4Twx~+maQrZbn{F@rb;I8RS^eiTuOZ@%asN$$J*@CWvaoU-VTM_K@4w`!3BaD;svI!iM^W zi8*>)ijm~|A6Jj3(f%2yo}(rtxKUO1Y@aewijhrIs3Y<*cTN8a1o=F1lM0r|RpV?6t8-Ju`FK+nvaM%=TNDhPNqd5ki3!{Dc=;@UI^s3@-QTC6)XFS1F~wz`IW z&W`k!SOl=)ppDhIN*oLlm^o}5aU)jzBNQRFQ}tb4e~SMA^p%=T+FTTym*PIfvPDXF z+iq>wpJE%d)#jG7*jh63NLrx*OO|R z)!u~OYuAHntJG#$XRDgDZaXY;fU*;fj;Z0#Gkr!RCP;}G5F5A>r_Nc2zII@=HNt(Ewl^f8&gg73O-ar6& z^88;zgHI(a55I5!08XtW=aY$hdzZV!>$b=??eZ3#tEq}L5P@0!3R979IR&0Tr^ylh zJnP1aY4Un4ZdDU6zV&~^-Lun8ZVNC)9b|g}L`x&QjweH$6;bH`E_q}ekPbQ{2Khv7 zYldYl+1xgmY9`i^Q?Ei6ueb^ zhO$z4Y8}G+1V78JI3UgjK|Qiaz{p>3Q9A9ER!Gtmopu%f0FHM$6k6Or8*;(0VuH8D zwVNpjJinR)5Y9^uF{vW~hm2!beH5j^o64y3?a!?KVmyM+(|Y z78qMm8AMPJE1)EXC3z_aUAS~l5~snTV~<2^^WN!ea~<=nk#i9r+VZ(+%JAn zhL9`eeQFDNE$^>JN^)MO!Ouw&buP@C9>p&6x=FOvu}0+0w?!pmX?D0;ChSs23MGZi z$}&zDfnEfaYC-Zs}E|9(HZSE%h1MHNQ44FWmIL6 zMjc#@EZUU_ylHZ82sF=dPPP;}fi{C;w%H9=D}KBMCy^2sK{;j)LL#%U9RC2itbHe5 z24$7-Z@MiWDc0YM6t_q#o}9O3=u>*l&eAGPUPV~Y5Q0KcOT#CS3Xa?+;?kxWREMoJjrpLq+tk=tUA1pk34`Locr=WOzY`1`enDGB_%}r9gX&f zS6luoS*!2W?IpVGB*f4{BVt5^FJj`>D%2FlbatJ3}&l8K=6P0Z2w_RlZbuWQ(G)PLY`I093Bdf($gV*5J@N7fN_cPB z*-9nXPVC!_ZmrmQGC1Z-zZ&pdf+Tkf%&P%~K1^V#d}qQ)K3UdYRdQDa)oE?*lxj_G zg;}E5=8>#QXILxWwHR1d(=j78lp}zvnIysBIFfV-n`qqX>^r~l3!BaPuTz3}WQH1w zlqZP#g1DVYb>N(PYZ4Cw3_NM3;_V5f`!6<*uUPMIeMKx!GE<`!X{xl)NmdmqoD5}R zSA`VFh0q}+G2%h@bC%?vxuhhbsL5}i#5!+m+d6MxnC=}k)vb-mWs=OPQVB1Z5t2DD z%BRd^hHfH7FX`c|=9{6)NxlsyL_sC>g)2)P-M4BbqcdhThA8XF6wNa#5{rn?wmh5= zF`qd~JDtcA0_y8yaNjqZH@9^%-B7J0TU>sM#hcchycCRv1b8gSS0^NmR8??<=9;3f zZQbPRPN1_w+!d77v1MZ5>dL$gLefnpIF!R-WG4h(%na~ZPfJJrTfj|^*uXsmU;KF-%;c-;27yMxeqr(~pO za`PE`lFJ;Dadl{@x;Gz7JFZSO<9;8P4p$^;XwCI@_0sS~EL{iFa9+DC2=Pm{#L(J~ zSM^H~h&hE+MDxl}l@XZ19-*$xDnt%$ijmhX%g_`|7=QsY z43;HvZeCoe_FxsVZu51Gn;l_CW!$C`%N#FS4^mf>GZQVTJKyNftbS5?jC&OE4p-T% zB+JeBb+yv>Y3)MYIb@p3?Q&PBo!G`>XAw%R9~p9Elb8gBE9W}AQj{c|UnfGA=+ugN zdb*zME6*!M@wB7(MWTbX-%uITu&BIHhgktoK4Xc_LF75xm0<+)bF8UbiyDTy zg-PGbbL3bLJXC;u4JQ(a|7gcoVM)*T5bDg>$mj%i4bh5zq|!w_z7_a zO@d9HTu8_SG=v5jQWOJ?aLJ{~LwAdlbi2(y;bdBR(8*%SQ(A9^VTU#3u_NGFUqN+P zxq6crAnCz*iqOvO+ltwhXr&5~*A^lc;42-bo>3ya(?-&sWCuOJP|hO-eu2|MeG+~Z zT&?_aRDzB6gKvW62iorpiZ#?crePlp%)!uz(5d8qC?RvKHBw6zF3t4oYUI4?uDRTz z>A}BjmnhG3cmeNjb*RA%^(((9)eOw48RNuk-10N+jymUA^G-3vDK@?jPaLsra#82x z$M0J#18tji-DTLfZO%DlYP)@Y>>GTds}>0~QYx|uQYjP=3NHl0j*aPnP*A#aXug z``+n|_LIZ>m5xAO!9-lSL*OxN@CALb=O;q6`8kxGj_QbIw+-5x7T>yUm*A+C;+h#_ zu`0p_L*Z1EVpw@BtT?x;8tTU?k~ZGaqtu93+vsG`b3jwi-Labb{K85$ueMHL*WaAgJBHLh+E#TbfOa=mF&;bn|1f;>se zOtuw(%K||SoPcqyl$$nEvGDKKhTldPp<3mNkVaoVxgzFRJH$uVG1iQTylZts{}8$s4H^<7MgT-{Nn^wt2TdC|Ja-pQ^+;fyjY0G16rt0p-pA2&G9-}-#CT`oy;lVs2=dvUDwU6o{v;6{DJ z4+MX#exFS(@ixbiuE@7Tb(u{;1$f|$qbC(!`xA~TtUU2wI39DHYdIb8oMq5@Q`{Dv z`eKB(W9F2lhO?HFxWfpcN%;Zf`+Iz~336PTqQ`HeedcuPI3@ z10)|98mU@)PF7fM7dl?H?-|{!ux zeBc~vmIj@M##U3N)~8t-vmz&e3iu@d0QL3Kp+!Ot&9>7-*Nd{Tl_k6@u0TIO8cA8y z;Lv57R)d-0Fv6=3#5j251!Bns%JINZK=N37gYD;5v9|dnu^T3B)+@pGiJ{agBHFW<`TiR;(j+QV1Xs>~r_gwTSFAL_|EQa_lq3 z*GiZcFji>gF~*V<{K1TwP(J?veIbTA5Xb`~7WU=f59y!>EHf(jC768u@u7m?M9G|b z0rx&|5AUq@7r7h|OySrVf{$z*=-3;OEY)lm=jaQMIX+H}fw=v3qGR^3^LD zOD4%yLCIEFq#u-{m0bN!J@f!|N}H5Fn%R*+{`ZrtWQSn_M`Oj&v-KlUL$UEMazP$G z+L9!Tda#HHMHnYhDJo`Wt7no-qJOFj5%vQoTr%hj_*Nq%b|s52hUMgCSp7ADN)4+; zr$x2eyPfMBY?mUdx=9O7Rhe3}c;p0}7&jA=pz+3WldNWWnuxUQ(QYk%d-SKdPI0!y zEa|y!G~ckBZy8lp=5yuYAzK*a<;E}+Y2(E#yhJqGXQ_7ICH})o1giyWd!=35xZvbT z9$CltmNh<*c#wH=B#&Y9xnYzSC)4S4v4^Fi&g2!^$)C9@mXJ)QS0e# z@$>Pl==5W!Nl{n1)LHl4!V?@1EG)5^9QqwyL#QkUd1E9GxH{;9qnjjKb`iCI5R7~^ ztIHd5=lqnwkS;=|c#=RKGxW!weP~QqHe3Qy7f{OPM)z-Y&yqd!=ifg)2T260DkCd5 z6y!U6$Zr_`01r9-x&X#^&7OVwmG=Jti6SWL^8p_NBLrX!eFi|rp7eP!iP7nC}bZa|JI z0Aq~f)B9=1;N_kib-4j1k$1cr!H{9dgZM`^y-S}DWiDg@jN*Q>-W?*arBhM1j zmBv`>=_fsYC@D@Vm0MlXIa0+ZNriN`KyKfM@NHc?v+eub6UDaI*`D#cYvM!^ad%id zZo;s4jaZ_v1ON{p0_t-3mV0u=4nFI$;er+Fe3r9xq*X0NPKQc8WT#T(PcfSO&3P`f zJn_xNgUZb_mps&kA&QZWajz8DHr~tr&x21R6?gtZw>r_J+kWA-?EA$X!i{ma6Sdx+ zq>|D{B_jqlR+R&19o!IkVC0Z;#o{{rQj}CJzG|NXmK;)7WHdT|X0_BWyw9|M65K1@ zxpLGMcUuxgR>jC&XMcp`78xb4Fmr%>$Z><@_C0rq!U|G?=j=pq;gp)bht0H7pJBBv zzK?dKb~yH#;NvNksX@!N8sWUEncvi>neqwOE7$8F_c(Oh>GsY3pA?lR?Ol^ylYF~1 zcic9kZgF+@7=*FP@zs@~k~zYu{{Tstr;!4juc+t9)_Ao#+zwQo%jW+8z~zq=()$ox z+b(qHNj}*RO>UR=wfH}S+qWI!)59E<sa=81oe`C9X*RN`{yVKd*=D%sH?eP2~$kNFoNYaE6sn7D&i#Z;YUnC4`mrvoj z^%7|+ubvKxYH?vnx8J}G%CK&%mD%h600g^5FD?3Dv~$PFWDOAjgUAFwGI<}Ku2^NK zym=KfM>yvH0FoS|7u8#q!O}Y@+;?be-{lFG#no1@wb^jX8Y2wJGck!sIV!{GHH>je zPM2Z1Fs`877OzdmV`;S=8~cH*kr4?m5Dl4vxA%aFxbi=gl12tG)rWLvwnlTuxo%w_ zKkpmf$*}JmRXW{KyG>rs-5ioxp=M(Ykq2=pl*Yijq$^!Qg!ew9o=0BHV4FB5;T{-o zPw%!)+3{UNxm&ebp7XX?eYQE;QQi1UTw!I9u)|74CjBW&TZ*3(y_3zk_ zv%QV_&C07B5$&QS5W=v;m|i@LjsYe|1hU|r3LNk@q7NrkTx)QD2C-k8(?y0|r@r#A z1Bh3!>a1ichd3A{<&JVSvc}(LGU%3*+TCSc&{x~+JaabZG`oUD1g_Dl_L|$03q+XZ z+CGp$^yeCh;*4JgaCIwY*Q>gVYm0tq>P1_A>RV7$wLG_Lwl<1VnJafy`*?RTz`eC4 zNM}9{ajse7n}23@tkCHmDK}M5y1x6m?!;GFkSsOo!^J{K;mmT!$S_2WnD+{vZ|d`% z3kKD~CACEs&v;yua-nV|ie0_PfakVsS3Y<%4DtgCOMCv~Q7l)wsi*ekdi)wO) zO~SQQkD?tnU_gExye61Xbp>P47~4h{p*+rXs4RB|$DSN4`0IPPw*7t3lg5Yr9;R zf4LNNc80X*^4Ml!EP@ve97q(jjs%K5Ac3DGV@qU$(V*%3TYvHGsvXPXtliu;M1EBf zcx|sUfbTy)&hBAh*&f}tXETQFC zc}7X}s2TZ%K>(FNYQJP%BQ=P+e{iXK#^Vn6YF*23g|`xc+Gx@FOJz}t@M#zYC&A`D zM*wRk)s=0aJAFUY+n-J*!M9kKcin7Oj%YX>ttgko5hg6!f@x{-hVY=4ezY=mIA!vJyt?SH19fCiOI5{Jc0CDM~3~9C5y3=H*DkHZB!$+wGtm-W+Ud@X5Hx$FU(MR0hF(_; zllLTMZ1Q$!B1CA_yaaKD#=P9vBPpiKR#$%y>+ZL&v}~K6{bOm`No~V*_yZI+9yuIX ziBd2bk>qsbh03bN{BUwckEe`c+&N(S3*P$w0H!WaxK`QsiW{u6SxfTQgV8El2@`WK z6LyOK0Goo2svDZ|3e9okyVufZXfRhl?4{*FKrG~~yLVybu(Bz`6j7{^ZIKppBY;Lb^LHe06t@%2vy5T5G44ju`ohB428>T5 z+J0>uO3%Zy!!f%zg(OUTgMwEh&ajj@+-Rp428sH&d%Yh}Y|XV%-2>R$(hiIUZMc#ji;y<PH~g3J2YdG zUXyrbibe(q;CyQ zIKrDTT}!@iS1d`?8>aob!7~dsY}ok1@jzO;K{7_p2;j=RLJvMi&j(#n!taBYS>V@T zo6Ose`80dYD!JTt$>M_9iCQ^aBS##vO$z0v42sRndUD6u`PT4Kk7qVX#iFQfdu9FV z`gFfdo4gd?j>cZaUi&B$DL^w84>=3+AQcDLYe#J6-iWH-s|MjMIQMB?V|IxeGRKlA zc1bgm&caqFhyap(ursV)J9aJ6EIM|rN^2JGZm5b1u=XRKOe0InF3sl|UOWgR0Q~*6 zq;bhRDYQ}b95LO$oyTaJYiyuFZJJ2ySdcGq6P#ot64_7+kB}$luU7_0#Zxa7l2pPi zS&wztYHqO1sqyk5o;k9@D{+|v6~+h*pc205LG!Kk4Nny#M(uDHwN@K`>sEB0#oHz{ znl*FDT0{912FgZ-^OK(-Y&NJsEXBpFSWjvOEcAcKO*}F|6K1j2wx!jgxWO_UGHI$<9fW6S4^%LxGiI#|P9sc=peqI-fQnBV*Nj@ZT;Ya3B0m%RYap3vZ(QMU5Lw*)1V0i32Ybwa7 zKb8n6-uONS0Uigxoi^PP?FGSBg;>%o*^Wm1#X&s4J_8JRIQk!B<5;%Pn`k8~)v#rl zza?c+8t40m$^9~YzM0i2Uu9y>;;E8<;z;%>?AV9l=C*q=fdL$fCP$yIkC(rL=f(lO%5CmDm%4z~mE;89yL2SKO7u0*h}oVayeyiY7VqsK!s(etOzFjmtV4AiUur zVa&3i1z52sIF&1LWni>KOo?6(_-@VAHl)R@foj zsL{JZtk+?%1bIlqmtb8J-+`-8eyOrxrR>dvDrxrOZP2P~h1dvB67Yqnu3aJ=V#5a;ge2sHzF--|N z8~i@C`oi4n+nISq5SO}poxjYg{1Eu%k4^wS=U!a*B}}z0NUK%2DzuE@p^5!utH?s1 z3OOH{Zx|W>01a{|Ht6bvjrT%Tz9x7#TIX&9i$ya=?9sMxq+`P?9E>i0StIAu91>30 zvQLBAcG{I?cAeQ~kU8ZlS2dKM9-aru1KTMj~vZA`D4!?m)BWtKt)o#BFCk2N6%9xs3pmvtwc)0 zKKR!&lA|K>oo?E?oMuSOe|#T&Yo1b7Kx{g3_9^K{wA!5Qwq;Wa&gD`jK6vAoKUQ(< ztDmm2Ix$Uc+IM#8P48lsceM*Vcnq_!1p?#Ct10yYPs{`M$DL&;wsU6FN?e5g97At< z+`5Kqop?6pxM15OftG3GS3t6(G9VGJf&J$6uOfVsPfnF>0g%DLe$jSg# zMI;QI;0)*7`;TnnUVl9vl4AIw z?v5I#z5J#usz@MUact+o`W&C>t0h6E5!v{J4zi#=pGa(mKF0(Pf2MRA6UR=)qGN?a zGGmrpu0QGY&G zji+VbUAA79+^W^32G7+kzDsy+G0a*7-6pvZf+Pfolero(kf2pAJz2)Ss#>i!EU!_% z?NuIX!;!~r6`NN|?;Cd8a)ct5-MhiCPfl&dJAuacysell)VV29$STPLIeBp4SakrZ zldb;%5WyaI+Hdwm`4fJ_ss0@Gor*n6u-@M&+K+bFY|Rjlabw!vHwK1H%rk#-C3@gQ z+43wl0LGNOS4^amm%l%tzMgdL7d=PO`y5d2RW>?R9vj_31@4~PDm6E*XZQmIhH93F zZb;qH$pa0M+*6+<(s+g(uu_!O`~KlPQol+Ev(c%&&D2p(w{+@T>c9LuxLmhImLTZ> zqw!UTfilO6vpRoumxv@cjW5Ks&DzOTe0-L)`5zlec21S82jWDV<=Lc4P;RvDZPL&b zYl;=(tsH*@$kF^t!dYZ393-O&PI$I;I6PBNJSpUtHOluk%b?8}w+Qj_Q*HeT)SIOZ z`p)b&y}q{hv~9KT#|@g5>(72I$|>h)lB{Y~J{(FE%FQtc4UKOv5Yq7Xqn&B;^+kE$o=vSM(#t=A?+=$5<<@`eo;aMeqo>$8{ z7LzKK#aBPzT}!mx-gcQH*>|Ug&FzkTvMVyAP|IchKAnjbmNYS>W(Z}4oPq{@K;-Ds zYqYS(*4}#W`<0(do>K33ANdp0=~c$S=MOZkrMi2VigRk zym=r4Cpl&0Nbr2?njVQM8pjiqsg^xqvu?5U>+O`IYsOflju8!#Oi{IVWDh9glF}!u zCyN<8f#X-cFDjBX$%;{1VE8-}sXA^-MhK;z8MipXd@V|RqZ1+~4hR@PWk5zw4?G{g zv5D_?j}KE98Btlc?33ApKOK%dG^+d3X5}K`)=iG z8&)Kays)*tXcv-&R>?Tv#X^8NVU7pa>Q|JE+|4gYZSlrov$@Gq&+yw%GfQ3hJZ}oi zA_CrWxN((Jf;@8Zqsl_w&6dlvEp3~4hP+w$l9cMZLdE+c73KlK{`)_W-(Nm8E-L94 z7TJ>DcPq2+HDEpH>uqx^5=M-_$!8f^TnsUhqsAjpeYk=KPMXHYWw%OKt$%T?7gBe2 z>K5#LH7hA7b6!{VLp6f@nZuF+RKWleNaLrqrO49`O|NvDd+IilVN-OSmOB>akGLrY zwO_b{wVrt>=oER*6Z^%EZc2s;y-Bj|6=y}AJ8v92GM&y76s63DS%y?MFl8%{$f`Jx zaG5y)MN?(n1!GToivII=iKJ6+vH)Iw24hr#1b|BSmMe;s~>ZpR-a?snWEdi6=JKhZ9Ov#`+m*1?l4-J z$Uh4LnN|i+2zGMi@O?!>U|^DT^?2<8_M|N3j$m71RDZ(XrFRQZw^O9TWvz0&(pwhT#){>ZY1vs_9i(Xy1XsfU=u@6NYA_>mWsl;P z`A?*6Nx3gXZ5MXoH5b|^LWop@M|BxxjWah2f6S0e^7oO5BVFnO|#id6a~=?=W< zo|oD7&FX){-Gydb)pqxI5LUkxR9qqL@+n=~X(5ai;>-kqp8#v0QyjCjbZKO1e*>y!hK##@S)V(_3jJhkV_c$17`{YSZ% zRSf!P71}(zZl_aj;Am~qm_7!aGf#T4Ylcw?SdbT04Ka)_0Jufs>`Cyt^)WTJne&Zp z?AUaI->cMHJX?icpZ+;{WsT)6-MI~UB{I9lWGftL#JclhSY}c^^^RN)YSZKt(VT+c zNJ(1d3tN`uyjGg5vL(w#J8?(Z0HtV@oIAuG6^=q&IFRFy9P1o-vc?>WQ&egCj;}~B zJNq00n_`4A2D6xJkg>1B#vyDN@RNs-g#p3hGIOkya#_!4i)-08ZQ2dHsch`~Ce=wK zu#i~VZG#nuuvLB?)<<_i$y32q9EZ5)=UF|jm;y@!Z`JmzH179C%>kMW+K{KkL<%bg zK*Y)6u)q<5apS;nl`v*o{{Ro|yPom8OG|0kj>k0JnXB8a+nx)3*iDp{ZU|W#S0fqY z#lbijI`pA8K^Dw+S8Wq?)w=Uf7V}=!i_udR>CqBNYVQ*gENDZd3{)RTc^iv{;xIL$ zm9njd(M`i|-FF&RO^OtD8t}<}q(VV7)?|pc!L)56G{kz3B0(GhRq_U$wzTMRl|D_i zj-b82^j6E%hQYe9Zc8oM$EaF?7xMYjL1x${hldTk~6MP5R+WL;h>A3WLsoHNKYJu33&mwY+XI3hPQKTeBP~6pF@7cGH=U zlL6?@r1&QeD)=0GIniwlbIrHMepsT31)9}fRDxs0utLIEnWHiQ!Tc!4k^#<}!w9{{ zOLnOByPFS8I@I0&0FTMJRH|9-JQj>G+5vLVBS-4uBoUWo$Ob%Q5KgvFdf?`gqZwzb z_YJ-X4eBt!Ek?uP%xNttrdN1`GES-)2zZwc2QrecEb(n~&jX9)n7$0m);EpC7R2@; zwNym5Y|?p_xs>`OLMO;s(Ek7|I<5)kGoLum%Scb7JGk{%Oz)COKJT|C-z=P}ES2E+ zX_-O>>>wynePx`+K+aGx@triClH{5)o17br^lNR^uM1RTmS=akyd<|9H= z8VF)-q7Zjd!So;cujD;!e%K}LmrA-P~5Cy4M!97#FOb!pcqwIYjjx%@9{ z+@+&ROY+*^p<6E?M^<0v0-6EZS6bm*>i5) zDopP-YM9C~^qj;P6=Djx@xOynxMgXTCZ5ZQgpSEGL+dgSR5CLI z;IEG!e0zD$vL#EBZQJ-Qa%@H>mag3r#S|$443c1EIRKQyVL=O={RWfh*LjuOcX?XB z3sL+m-Ny`c zKIH3Y@^;2bf_DnNKd>v_+@^{cn~W80&o6QpV0~gDPGn}v;ILdSKDyOolO@M<;LJY$ zHtW*U+-lgQ^$S;#WmDYd4hyjd1YjKT&)9kJJv95GXN9F@ooQya6>G~HlBpua#E(t@ z8BvUkH@1A8L%}7@9I0{_GeHqZN=bE?c0_WgDM2UPW7&_$5|)QIQwg^GLv*~3CWcYv%cXozQxniimC#%(b0K>lae@;@CUic z`CyZ-wF*?tV|U3VKAo14QS(p3aV&71i)uHD1q_-*}v1L^V6;()989W#fkT6SU zU6^o9$uk!;(X!e$>!#fHE!&0e-gUKRSK9stTk>N8+QXh+6?pOiSdRxe*QpFrY{AKN zX=RBc{#d74sWISBVVYYNk-uPefy@MyYoW=+1rM$uG>^N+GIQh{oP+-W*Vk^#ToXAPt*vZDBgbM++%e}7n3ym>E>3(OxcAA{_!iYn!bPID z8C07wC}KFYjqm++)JY`psgX)CEI-s@1cyEkgP-Vh0V<-Rsh_{xWBFuo!F>G4{{W_d zM8-iABSU^c#N*Q0AHGMQ(^RR5X3jJA)7rp^WS52nzCEy@XZri-+Q4a%m2n|oKEni`-%c* zOA+IbrziFR9RN}8MT0sv5rG7T1Q0bYDVjz`ZvAOpnn>h)FR6IG6pxwn<6If>#!Tpp z+D3PIf+^#eO3@DC3JjpaT(7d0;8)M>`|FBWP)2lOcgl6C%&-~WCzKJ2<~L#U0gK?i zGml9>U32Br++7<-CnW`;5Shc+?G_%A6;)Y>f~0ad`F!={%TG8fX7Q42nwPtG^Hg#%@sO`6PmJ|50<%QB}P=qz~k!3@vIvH zSg(k^M5ALq7-VBe6Rt_ut?%t{V{S&Y8gV1goC_;p;3*s!_+C6lG6#X}ri*zb&sp30 zUuWHIKT-Z6bmb#jhh=L=S9g1r)bbpnlClmFu;QMaw=Zmv4tlUf!byr8$p+EfBHZHL zZfrBw8)OcW#qe@N+M40yhA^NGVL2j}Z(_iIcUtP_=DSC=hiYjt>$RyUNCY7VH~{3IIr@3j(da3~R7)8rg1L$*Y|aElLaQDjISlj2T=D^q0X{%JHM9>K(&ljxD-go}Z|yLj~y=r6{GV9gm4uUN0io zpO`8*^NK_xBay~F7pHd{d~y1e^)p=31Rsg}F6FWAqOVF7wbR>O{o1rkx;#DVPVoN# z44b%#lr|%o+avOPI{}<&KLyiYsj)p&+UO+hokh0wPV3bpZMAaV!MMRr_h8(+Qj{%8 zr(4Fl{{Wmjg6k0r`EVcDmDZR%H%z1Gx@5fbj{%#9QSK4HQ|@#qYJd#Dqmd}rG8qY6=X=LGz#ivh|_W3U!rz~5NVOxF8$A0T8y**2# zr?XOq@l$QxFH?fY2&H=QOxI&)9khx*>UtcPU>N7wPI2&UHb^PsZ=O-rFA~oN@y#wc zWfktbOO`F$t<&*t9|g2j-8P9ynxq?zdzVs}k^7;XoXV~ytswy0{syno?!w_e1B%#TfNLtznotgq_T77Ml>m8D8f35}4W5?_@>^W0{Rmo|(8o#e@AWjcI*ihK#%;T4ue(iB6qVMr zsD!b1B^BEyCn~1{-_9@y*N>~m802djqBOSI$6|o|PB;aR{gG;j(k(25wac$-a zY>SaSAksNU6NtG#29e_gWf@g);}{Hl1Cg!c$(?dmZk;@}rmu3nbhQ5#Gu;0Gvwz`_Pw#twP~F`q&$(_@cK-b;(N(iOcJcQC zA7aEv!<&@_-1y=#q&D~|ZqlD-rBeR$)=L~z*W&8!twb{0$ua)`HDD$#Q7{Cma$Qd4dYboZAE?6$hJ>KrY zZ++VAbdT{#>C?AnXO`7jOgD^C_RC9=%_8+Vj5ZZdGRG&v^W~N{&FlwqyB%sw6l|FQ{Lw^zM=*FJY-1IzPfHxJkFT@OlWkiu+m&f+ z#k$&(+*NN@m7WUMR4;D3z(UA}J{1c@!;-cXyB~iY@N!(3CM}A+J)%mKege+gzr=Y> zRgq$rO0P~h)bS;qV`qdXFuaLn;q}$ZZhx2?bXe`tY?XI6>KZ$>akDgX!Eb4XNoJa) z@UL(}(lHM!$jgo-DFQ-q<5)PQ$(Kc4+fvfrq20DPsKWsGIo2vR<#t4y$$L^b!DExk zT=?Lb#~kQbqdr+tY_RF7^X*sG8N}ZQe}#m)hDcUPkYq&@fsaWqC%M6qhp-@z5?vIT zE!kAQ-_*6OJ%}#fu=bKRDE4WZ(Zwu*2|j<6$)60R51g*FjmL&QfIkxYLf=(VkKtgt z+iV-9jmS?{K*qdj6mh{L6epXifS|5fkb~gsO~mg=^WDz1o15)vYkVlTPO)Cx(=3r# zk}(u1Bl2OHI1gH}87QX!f^^)t7nu`luy0o?ZPfN{!*Z1bwe7_%wAQIva$fY zTZrTvC316}PV`!KYMzT%?SBWWx;3m-rMPW#sjnmmxSFbVf18lfo=qo*A!7%QbUCe{ z?zk_yn`GF!RVnPXEjIUh8u2ZgGR9;gEhQ*W?ocM4mFSM7U*Hnz^x;u9lQs3LJ$q|C6) z$BM`qd3Kp_z##-2G18ND$S^LlyYUs1q@vy$j?)V=QfZ}kisQPOF*7seiacQn^swTi z)CkrD%cC8?ZPUH#vqJDBw9$l*V&v}yh|qeo5$BF40ATugH;iKsz6=|qwEAClY7*SH zu-=nwt2}fqB}y-BF_YGz<6s!_41=Gx8!ARMR6~+z(e><5rTvZ#put|mT&?cNcJdZu z3ge6omToboKarJgBsN?C0qkSZoai`hZj>e4wrXA2(g~wl=`yR#>k(-dGJh+qWZ;qq zjCndlZcN|pFxmV#ST|!!yGGAo8q!G{2qu|Sv6+#>tFiWAqbbA=E9xMn(TAI5*`<=s z=x^f9t8+>4@j0(tE6CoH7JVoOuwY2>=gy0+OhCVb+oN7Ls=KtCWRblkvbCd%cWwJ3#p*e?kc){Xb0uuyxxu^8jk_P28SN)>=n=lYj_s%t;`79{>UJ(tQ^m$n8NW zjVQFuH^GL1I5{204aXpVcPGJO52y9cu#|6ut#Y^zhkH%5*R5}Lh)W+8#E-$;0p)UV zNdpJ%$wqQ32GxNzux!F@CLlo+ZI) zS7x(6k~h%&xTI*S{ut6t#%;5DuX?q+5(3WKTUd_)@-l0&kP<<_W?X_# z&}*t1M5KoW1=((&ht-9p+l&n%f;W|>v+>A<04yU+0;s3L@pJO`8P{C2sk3D)XuGM> zke>VP`zK){f%!tx$l_4L$Dz4+u}dmr)X}KHgk=1$?D~9-WmP_(T)*R!JBY=gEj{rG5MsPgq(7}&y z4H?dHQEeIxuCjoT*fpI`liL;e`h0TmROiRbI`tuedmeMkBHkKss&Gi>2;Y;m3@#7Y zj1#W3xTa+CNs!v4Bu0WTRo}}huiyK?jwjfA=UlmP*(y>_%IhL(bHsw1K`>mQjl=+u zPEP_+Sf2p#IQwhL&xJO681hM=y0aOUIOTa!m=fg%axvfxmLu!q-}-Bt$>iEOk}j$I zKf}db31Ri&OzXs}6XcM`-}cu`F%c}Q*way21PlX3+%gafwg(?#a5f~iq}0rt=|$waE|#7qJD1C0H?`kG}}*R<~CdoFmKU>xV~<3$CK zwD8D*(fIp}Ai+OhEA!DoW8#(wp>`J2EO28oa>udB&z}Gv>!^|`as_HtS&wmJaDXso z^yGYqBhT!011sk;I}9qMM<>;gNh9*;1W{U%c=40N6a>Fn(*rm+S^k zKTmylS(eo7>`e`ty5|f2I`a1+j1_<&pO%x7pbJToDA+HL8s}`6&@)*ja0Zubf;feX z58H+ZkmM=ji~@6vli+(FC+VlLfgQc2q~Tj}l9hV$w}E4DuMc*0Br2|0vkY=L0~t}0 zJ@iF#30b}Aew2@>cg?$I>zV4;+i1qqK^?Y+-);=E8QGbF4nC|%`Qk|8KAqUwvq;6M zCVNfow_~sHmA0CjZHl#{cx$wDk`*ki$s)_#8QDO&(z9XYN zOE_~dW?|W) z23}61DzX~0a%`OP86HkOteACq9I-jwEB#Ig%M4PQk8G+t*3nw->1Sbsr7TpoC6{xt zMruMfiI|mJG9fA3aMFH%48;4Ab&R9p4aG|S#V4obp_jL~p;&gkvM!(8H?6~MTQzD` zwN@i*YKXjiU7dSR91dm)5jYAMfV%4PwYzs;DfDLNg6Si+`nGCIqChA~ExbLPxLC|{;&#iZaOr7Cs($qO%Lc+})*6h88L^rK3I=4C_Uv&j=+K z_pgROsKYtE->2$;x|^zccX+SUok>W#7vsxwrU##WG!9fTodCFJnFVdOm?JPd1fib>lu zY|V9N;s)(&d6J55_FreeRcB?~uA5Ou7+k3kI(FSk9xMV9IFc9l4UsqKcG_E$?pEciwLxM@A}dxj zQ!MGh)Vn!gh)z@aGUOBETf~M`EgL)JF+~M5iquH5_89iWYm5S0@~fUF$FU$|8OE$c zG3}GbYTT9PiJjUx#CcXV+yj|7#p+T>DpY}vBgTLrU7k@Dcx%Gl$mWGBMHHSUu*|W> zi`*QXb6|L!@#KA28tl;N)~7OroiBIrOr0xd(SL#;*-w7!PsNG)Lw@QA_8qTe*p}?~ zHmeX@v2u!OHshouil!k+?cgHqfypf8`dA$W2v`K z!~T-?62zSRxa4gReaiOV(sWPo zN}Ej$?{Q3{JTgeh5N=AZCIf{WhaiPja-f5fboX#G8@%3!c&Rt>9ph?!#L|)7Bc))7 zBakA$^45GHWMByh2pI{%JY_um^e^CcS7;Hq`4rfs%jIHbY9~Z)G%%x zMzos7?(puLH94g>O{pVGa@Q@}jGTp4D(t2(19Rp1zFIWn*c+~ZyB^EZHTTO@XS$mR5z!qe0NF2a88mm#^bW)NmWZu?JuCaFA?WcU)D+Vey=2_&bhLpyzc%OtM z8Ca2yWcXw41O&I=~>Kh4p_Pxt>Q*xbNQ{BFy49#NHQlh&BDv`&RQR4@Z@!;#C z)97}QPqPrE?N1)xU*We2yZ0DjgkcGImQ@ODyq*}NE;z6yy|n2QzAUw}V5c698U9znSdV@XL^aB6=GcYVig>Me~cSG4wM)rw8&ynwT{#oj3Za5zAx9rb1mtwZnZob~H7Ua9G;I*i%JmqD{ zN0w=Z1S!TWdt|aGIQJg5B`wr=lZx8t%5OI%+9cTRZ@1d*h#|PsSgBGurucWBRbYtI z^Nl#VqaHc_SoR}b>l>qjsI-f1yf&baq^Ux9UU;~L7HmwwNRK41kfcgiJ-m-$;~HL5 z5U5d}eX>rY-=Vqj+o!@RBkyp<&f7o2nPigzgwemNi2Uk+f(gd5l1b4m7TX@>uaW$ zWz|kW%L0f%2RWUl5{sa{mMZaX+ZR_)(~<5wWqr*)I;6GH;()Ajd_<4P5a*Jh?gNp} z$pno{RAI_xUdw(Bjt$2BRNJpt+h<$!6oF>9!-I?IU5*&b62v$Br-9SGgby4^-MO-~;yv}O0f5Tw2)2ko(-Fcao(pR2G z=R80vepg{2Z2oM50M4!BZSXQ}w{)krZdE3abFpf^=wt57B#h;ymya0{!6gp@05~ei z$R7hEd~L;1NznzH?M_%}?;~odWJ_CbiVDy0=@3xNjTEor!=twngmI97Mo80spz|VE zQn4=T`-HB`ah}nq39T|s9k>-TB+5JRkzA5IuN-*B2-Yq%iIzmw78h&nd)vNp@o?DlF=x*0&wn#hY9y?bF3c<#rnU|Dd9cVfi`!<+0@$;4jdpig7FqbOB@V7$2@3NZ zye0t{2U=aDMUB4AJTr6$OxupW-_-2;j1jt2+^pAYcOmhFmNY@=10)3PF)9gT#Ek_! zQLYL{eekkx_BT4UUFTVU`e`aa5l|IU(H||%a62ljSH?iV8di)Y7Ly6BBzI=uok{VM zxop~&CE+GqQo)_;Uo_S-e;Y-zXdd!=x{4Y*$K5`+={ zl%!{maCkqLm#4UX8<3bxaXEK zTpSIc+EPVTWXI16My^LhrnpBxANmxc&PvyjulFq;mB(Mi3z&IZ)=-A5I(FOUo^9{F` za)O+N;*EQVz((o@5FrifW&w|ZjAv1|lUO#8k_(&0^E{Tf3ilPIFFMtPw{c|R+!SDt zfcPglz&|~1l6)eR?a@nna*DZ~w*9(zCysO5ig-I^$t)Ry0gM0>8TZe(jbD__lu!e2 z-AMB*Pqsxf7H1DUN=lROgUk$nx<(GFIGSZBCg}jIPVXt)DA{8-{{R{bF~h{$zZTZN%5@JuSJ-W?8p=!i|_aBD`~0 z-Vnqb0vm)eM7&M__ELQNgQ|`OnVXzwv3;(TbYE?+X1zpp1}H1vnIQy`?;65J2=VGi zK78X{3KYyd$cD#CI;xecZSY2AR8tg{gV%h3Ta@wD9j_njfC0vJwMO_2@hqp?qMjI* zOEqVdsAjJH-NGgJ1gxBa$ij>&C;)iYk;lm{ajp)EcBHJ`>K%|5F+9<`ub&_R+axgm z0C=CLw!0&1gkio&>h04rte^cnQBfQDsFh%>q@17Sw2S00$zU>c)8>TdDhP&*b>~^u z=JRgB0LNl=LSqf#laiG_KnE+32Y`Nh=~$EHBPTb}Z(a+MBFoA`O7dkae1G+AhF*!4<9OD(p=pspwNMOl0ZwLwZ`7y!C_WuCuYcC>S1K$=|)FKw= z@cd);?U=$d=iHV)GBvDm*Jf?}8d|>b@PoM#Tq@+21MBo2eq-gSoKj`Qx()TkB7&zL zG3g|E_S8};*%`2jAxYA2SRl%&#SfohjT=yIW6UbCdig3hjPl|~-%`-`3=l@R#Ex_G zAxe+&&-iIjZXOyqPb7rQ%aXpp{{W7P4aZ}(8^1o(v6cXFY;gx3bWv7J{9ZOM61c~< zPL|NzN8EzEEa=PEU(M~*RT-0i~J;gYNh_Is8f zc_tvbOM%C{qZx0?1_AcT{{RhnXQLhvTr$^yv?}h8? zZF61P`f9eqlq;JMEK`XpST8iO9&t$+s3*YmoYEh>8k3X6H4j z@9uD3+hE!v=|-g2ZPJEKz9*HVWLmBZ1_E5h;{*uEU~`dpjwmN~H>H!R4Ba}4p8M6+ z`pb6et1U*o-PTI6N%3+|6?;`@rxjBHkU||9XUg%JL^l+3^meu5>h#5i8DsRG39s@@)~&cQIwMBw*LUJQo&JubWgf| zBgwdKJGJ$v1zS5t;@wBKAmw5wmU@=qjxi^3mK^uh#}UMEVUXAw=-k|7s=q@WuG0

Z` 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%0Dq{Yoi0v-5_*ABl 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 literal 0 HcmV?d00001 diff --git a/docs/api.rst b/docs/api.rst index d47c072..2ebb708 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -9,9 +9,9 @@ API reference **pyorc**'s API consists of several subclasses of the ``xarray.Dataset`` and ``xarray.DataArray`` data models. In a nutshell, xarray_'s data models are meant to store and analyze scientific datasets with multiple dimensions. A ``xarray.DataArray`` contains one variable with possibly several dimensions and coordinates -within those dimensions. A ``xarray.Dataset`` may contain multiple ``xarray.DataArray`` objects, with shared +within those dimensions. A ``xarray.Dataset`` may contain multiple ``xarray.DataArray`` objects, with shared coordinates. In **pyorc** typically the coordinates are ``time`` for time epochs measured in seconds since -the beginning of a video, ``x`` for horizontal grid spacing (in meters), ``y`` for vertical grid spacing +the beginning of a video, ``x`` for horizontal grid spacing (in meters), ``y`` for vertical grid spacing (in meters). Operations you can apply on both data models are very comparable with operations you may already use in pandas_, such as resampling, reindexing, aggregations, and so on. @@ -47,6 +47,7 @@ Setting of properties and attributes CameraConfig.set_bbox_from_corners CameraConfig.set_gcps CameraConfig.set_lens_pars + CameraConfig.set_intrinsic CameraConfig.set_lens_calibration CameraConfig.set_lens_position @@ -57,6 +58,7 @@ Exporting :toctree: _generated CameraConfig.to_dict + CameraConfig.to_dict_str CameraConfig.to_file CameraConfig.to_json @@ -68,8 +70,18 @@ Retrieve geometrical information :toctree: _generated CameraConfig.get_M + CameraConfig.get_bbox + CameraConfig.get_camera_coords + CameraConfig.get_dist_shore + CameraConfig.get_dist_wall CameraConfig.get_depth + CameraConfig.get_z_a + CameraConfig.project_grid + CameraConfig.project_points + CameraConfig.unproject_points CameraConfig.z_to_h + CameraConfig.h_to_z + CameraConfig.estimate_lens_position Plotting methods ---------------- @@ -93,11 +105,27 @@ Class and properties Video Video.camera_config - Video.fps Video.end_frame + Video.fps + Video.frames + Video.freq + Video.h_a + Video.lazy + Video.mask + Video.rotation + Video.stabilize Video.start_frame Video.corners +Setting properties +------------------ + +.. autosummary:: + :toctree: _generated + + Video.set_mask_from_exterior + + Getting frames from video objects --------------------------------- @@ -106,6 +134,8 @@ Getting frames from video objects Video.get_frame Video.get_frames + Video.get_frames_chunk + Video.get_ms .. _frames: @@ -132,9 +162,11 @@ Enhancing frames :toctree: _generated Frames.edge_detect + Frames.minmax Frames.normalize - Frames.time_diff + Frames.reduce_rolling Frames.smooth + Frames.time_diff Projecting frames to planar views --------------------------------- @@ -178,6 +210,7 @@ Class and properties Velocimetry.camera_config Velocimetry.camera_shape Velocimetry.h_a + Velocimetry.is_velocimetry .. _masks: @@ -274,6 +307,10 @@ Derivatives Transect.vector_to_scalar Transect.get_xyz_perspective + Transect.get_depth_perspective + Transect.get_bottom_surface_z_perspective + Transect.get_transect_perspective + Transect.get_wetted_perspective .. _river_flow: diff --git a/docs/index.rst b/docs/index.rst index 37e8663..c46cd5b 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -54,12 +54,10 @@ Support us We are seeking funding for the following frequently requested functionalities: * Exports to simple text formats and GIS-compatible layers -* Compiled windows executables -* Implementation of better filtering in pre-processing -* Improved efficiency of processing (e.g. through GPU/TPU acceleration) -* Establishing on-site edge computation through a raspberry-pi camera setup +* Exports to augmented reality videos * Implementation of additional processing algorithms (STIV and LSPTV) -* Establishment of dashboard environments for several use cases +* Implementation of several optical methods for reading water levels +* Improved nighttime / poor weather conditions processing through learning approaches Please contact us at info@rainbowsensing.com for further information. @@ -72,7 +70,8 @@ Please contact us at info@rainbowsensing.com for further information. .. note:: Acknowledgement: the development of **pyorc** has been funded partly by the World Meteorological Organisation, - Rijkswaterstaat and in-kind contributions of `Rainbow Sensing `_. + Rijkswaterstaat, the European Commission TEMBO Africa project, Grant Agreement No. 101086209 + and in-kind contributions of `Rainbow Sensing `_. .. toctree:: :maxdepth: 1 diff --git a/docs/installation.rst b/docs/installation.rst index ebf532f..36f1b6e 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -11,73 +11,89 @@ User install To install **pyorc**, you will need a package manager in the Anaconda/Miniconda ecosystem such as **conda** or **mamba**. -We recommend using the Mambaforge_ Python distribution. This installs Python and the mamba package manager. +We recommend using the Mambaforge_ Python distribution. This installs Python and the mamba package manager. Miniforge_ and Miniconda_ will install Python and the conda package manager. In general, **mamba** is a lot faster than **conda** and requires less memory. -.. _install_conda-forge: - -Installation from conda-forge package -===================================== -We always recommend working in a dedicated virtual environment for **pyorc**. If you need a new virtual environment, -then you can make and then activate one with the following commands +Making a virtual environment +============================ +To get started with **pyorc**, we recommend to set up a python virtual environment. This ensures that installed libraries +**pyorc** will not conflict with other libraries or library versions which you may need for other projects. +Setting up a virtual environment can be done with: .. code-block:: console - $ conda create --name - $ conda activate + $ python -m venv pyorc_env -Naturally `` should be replaced by a name of your liking for instance `pyorc`. If you already have -a virtual environment, then please skip the first line, and only use the last line to activate the environment you want -to use. - -Once the environment is prepared, install the latest `conda-forge` package, with all dependencies using the following -command: +this creates a new folder `pyorc_env` on your disk which contains your virtual environment. +After activating the environment, any package you install will be installed in this environment only. +Activating in Unix/Linux is done as follows: .. code-block:: console - $ conda install -c conda-forge pyopenrivercam + source pyorc_env/bin/activate -Mamba users will have a faster experience. They can use the following command instead: +In Windows, the activation script is in a different folder. Type the following to activate the environment. .. code-block:: console - $ mamba install -c conda-forge pyopenrivercam + pyorc_env\Scripts\activate +Alternatively, you can make and activate an environment with mamba and python and pip +installations in that environment as follows: + +.. code-block:: console + + mamba create --name pyorc_env + mamba activate pyorc_env + mamba install python pip .. _install_pip: Installation from pypi with pip =============================== - -This may be useful for deployment on servers or Docker environments. +The most straightforward installation is through ``pip``. This also works in a Raspberry Pi 64-bit OS. First activate the environment you want **pyorc** to be installed in (if you don't care about virtual environments, then -simply skip this step). Dependencies **rasterio**, **geopandas** and **cartopy** are known to be difficult to install with -**pip**. Therefore, we highly recommend to use a conda environment that already includes these dependencies before -installation. If you don't have them yet, install them as follows: +simply skip this step). Activation of a virtual environment made with ``venv`` or with mamba is +explained in the section above. .. code-block:: console - $ conda activate - $ conda install -c conda-forge cartopy geopandas rasterio + $ pip install pyopenrivercam[extra] -Then get the pyorc library from pypi using +The ``[extra]`` section ensures that also geographical plotting is supported, which we recommend especially for the +set up of a camera configuration. + +.. _install_conda-forge: + +Upgrading from pypi with pip +============================ +Did you read about a new version and you want to upgrade? Simply activate your virtual environment, type .. code-block:: console - $ pip install pyopenrivercam + $ pip install --upgrade pyopenrivercam[extra] -.. _install_code: +and then enjoy the latest features. -.. note:: +Installation from conda-forge package +===================================== + +Activate your mamba created virtual environment with the activate command as follows + +Once the environment is prepared, install the latest `conda-forge` package, with all dependencies using the following +command: + +.. code-block:: console + + $ mamba install -c conda-forge pyopenrivercam - Since version 0.5.1 we also support installation under the Raspberry Pi platform. Please follow the instructions - for installation from pypi with pip. *pyorc* only works on Raspberry Pi OS 64-bit Operating System. On 32-bit - the package will not be found in the pypi repositories. +.. _install_code: Installation from latest code base ================================== + To install the latest (unreleased) version from github, replace the last command shown in the previous section by: .. code-block:: console @@ -85,9 +101,8 @@ To install the latest (unreleased) version from github, replace the last command $ pip install git+https://github.com/localdevices/pyorc.git .. note:: - You may have to uninstall **pyorc** first to successfully install from github. - + You may have to uninstall **pyorc** first to successfully install from github. .. _Miniconda: https://docs.conda.io/en/latest/miniconda.html .. _Mambaforge: https://github.com/conda-forge/miniforge#mambaforge diff --git a/docs/user-guide/velocimetry/index.rst b/docs/user-guide/velocimetry/index.rst index f96c82a..688df7f 100644 --- a/docs/user-guide/velocimetry/index.rst +++ b/docs/user-guide/velocimetry/index.rst @@ -10,7 +10,7 @@ has implemented one of these methods called "Particle Image Velocimetry". Particle Image Velocimetry -------------------------- -Particle Image Velocimetry uses cross-correlation methods to estimate the most likely position of an observed pattern +Particle Image Velocimetry (PIV) uses cross-correlation methods to estimate the most likely position of an observed pattern from frame to frame. Therefore there is no interdependency over more than 2 frames. To observe patterns, the total area of interest is subdivided into small blocks of pixels with overlap, also called "interrogation windows". Currently the overlap is fixed in *pyorc* on 50% of each block. Say that you have reprojected your data to a 0.02 m resolution @@ -33,6 +33,11 @@ and hence a velocity will be resolved for each 0.2 x 0.2 meters. - retrieved frames from it using ``video.get_frames`` (e.g. into a ``DataArray`` called ``frames``); - orthorectified the frames using ``frames.project`` (e.g. into ``frames_proj``). +We implemented several engines to compute PIV. The default is ``openpiv`` which uses the OpenPIV library to +perform computations. The alternatives are ``numba`` or ``numpy`` which use the numba and numpy libraries for +the computations, as provided in the underlying FF-PIV library. ``numba`` is by far the fastest option, and likely +will become the default in the future. + Naturally, before orthorectification you may decide to apply one or several preprocessing methods as described in :ref:`frames_ug` to improve the visibility of tracers. We highly recommend that in many cases, as shown in the snippets in :ref:`frames_ug`. @@ -50,7 +55,15 @@ in :ref:`frames_ug`. velocimetry: get_piv: - window_size: 10 + window_size: 64 + engine: numba + + Here the ``engine: numba`` ensures that the much faster numba implementation is used. ``window_size: 64`` + overrides any window size provided in the camera configuration and sets it to 64. When using the engine + parameter with ``numba`` or ``numpy``, you can also provide memory safety margins by manually adjusting the + chunk size with the ``chunksize`` parameter. If you notice a memory warning is given, and ``chunksize`` is + set to 5, try manually setting it to e.g. 3 or 2. The default should be reasonably safe, so we hope you never + have to touch this parameter at all :-) unless you process very very large videos with very large objectives. .. note:: @@ -73,7 +86,16 @@ in :ref:`frames_ug`. .. code:: python # ignore the window size in the camera config and set this to 10 pixels - piv = frame_proj.get_piv(window_size=10) + piv = frame_proj.get_piv(window_size=64) + + Use thew ``engine`` parameter to select a much faster computational engine. With ``engine="numba"`` a very fast + numba-based computation will be used. The computation will be chunked into several batches based on available + memory. If you find out your computations crash it is likely due to lack of memory. In this case you can + override automatically computed chunk amounts by setting ``chunksize`` to a smaller or user-defined amount. + You may also set ``memory_factor`` to a higher amount than the default (2). ``memory_factor`` + decides on the fraction of the memory reserved for one entire chunk of computation. E.g. by setting it to 4 only + 1/4th of the available memory is assumed to be available. In practice, for large problems, more temporary + memory storage is needed within the subprocessing. Interrogating and storing PIV results ------------------------------------- @@ -124,24 +146,14 @@ These results can be stored so that they can be interrogated later, by other sof # store results in a file, this will take a while piv.to_netcdf("piv_results.nc") - Only when you store or otherwise retrieve data resulting from ``get_piv``, the computations will actually be performed. - Therefore it is normal that only after calling a command that retrieves data, you will need to wait for a while before - data is returned. This may take several minutes for small problems, but for large areas of interest or large amounts of - time steps (or a slow machine) it can also take half an hour or longer. To keep track of progress you can also first - prepare the storage process and the wrap a ``ProgressBar`` from the ``dask.diagnostics`` library. - Below you can find an example how to store data with such a progress bar. - - .. code:: python - - # import ProgressBar - from dask.diagnostics import ProgressBar - # store results with a progress bar - delayed_obj = piv.to_netcdf("piv_results.nc", compute=False) - with ProgressBar(): - results = delayed_obj.compute() + PIV computations are the longest in time. Therefore it is normal that you will need to wait for a while before + data is returned. This may take a few seconds for small problems, but for large areas of interest or large + amounts of time steps (or a slow machine with little memory) it can also take half an hour or longer. With + the new (>=0.7.0) numba and numpy engines, you can keep track of progress with a progress bar which is + automatically displayed during the processing. - You should then see a progressing bar on your screen while data is stored. If you wish to load your results into - memory after having stored it in a previous session, you can simply use ``xarray`` functionality to do so. + If you wish to load your results into memory after having stored it in a previous session, you can simply + use ``xarray`` functionality to do so. .. code:: python @@ -374,5 +386,3 @@ work. * ``window_nan``: this mask can only be applied on time-reduced results and analyses (instead of time series) values of neighbours in a certain window defined by parameter ``wdw``. If there are too many missings in the window, then the value considered is also removed. This is meant to remove isolated values. Also described in :ref:`spatial masks ` - - diff --git a/examples/02_Process_velocimetry.ipynb b/examples/02_Process_velocimetry.ipynb index 7d2ddc0..e92bda0 100644 --- a/examples/02_Process_velocimetry.ipynb +++ b/examples/02_Process_velocimetry.ipynb @@ -238,9 +238,9 @@ "metadata": {}, "source": [ "### Velocimetry estimates\n", - "Now that we have real-world projected frames, with contrast enhanced, let's do some velocimetry! For Particle Image Velocimetry, this is as simple as calling the `.get_piv` method on the frames. Again a lazy result is returned really fast. If you want to do the computations, you can either extract a single frame, or (as below) store the result in a nice NetCDF file. Note that this file can be loaded back into memory with the `xarray` API without any additional fuss. We use a delayed method for storing, just to see a progress bar. If you are not interested in that, you can also replace the last 3 lines by:\n", + "Now that we have real-world projected frames, with contrast enhanced, let's do some velocimetry! For Particle Image Velocimetry, this is as simple as calling the `.get_piv` method on the frames. We then store the result in a nice NetCDF file. This file can be loaded back into memory with the `xarray` API without any additional fuss. We also use our new `numba` engine to compute PIV (version >= 0.7.0). This is faster than the original `openpiv` engine. If you want to try `openpiv` you can do this by changing the engine.\n", "```python\n", - "piv.to_netcdf(\"ngwerere_piv.nc\")\n", + "piv = da_norm_proj.frames.get_piv(engine=\"openpiv\")\n", "```\n" ] }, @@ -251,15 +251,8 @@ "metadata": {}, "outputs": [], "source": [ - "import time\n", - "t1 = time.time()\n", - "da_norm_proj = da_norm_proj.load()\n", - "piv = da_norm_proj.frames.get_piv()\n", - "delayed_obj = piv.to_netcdf(\"ngwerere_piv.nc\", compute=False)\n", - "with ProgressBar():\n", - " results = delayed_obj.compute()\n", - "t2 = time.time()\n", - "print(f\"write v took {t2-t1} secs.\")" + "piv = da_norm_proj.frames.get_piv(engine=\"numba\")\n", + "piv.to_netcdf(\"ngwerere_piv.nc\")\n" ] }, { diff --git a/pyorc/__init__.py b/pyorc/__init__.py index c8b9bfc..3a12113 100644 --- a/pyorc/__init__.py +++ b/pyorc/__init__.py @@ -1,9 +1,10 @@ """pyorc: free and open-source image-based surface velocity and discharge.""" -__version__ = "0.6.1" +__version__ = "0.7.0" -from .api import * -from .project import * +from .api import CameraConfig, Frames, Transect, Velocimetry, Video, get_camera_config, load_camera_config # noqa +from .project import * # noqa +from . import cli, service # noqa __all__ = [ "CameraConfig", @@ -14,5 +15,5 @@ "Velocimetry", "Transect", "service", - "cli" + "cli", ] diff --git a/pyorc/api/cameraconfig.py b/pyorc/api/cameraconfig.py index 2592736..402ea6e 100644 --- a/pyorc/api/cameraconfig.py +++ b/pyorc/api/cameraconfig.py @@ -606,6 +606,23 @@ def z_to_h(self, z: float) -> float: h = z + h_ref - self.gcps["z_0"] return h + def h_to_z(self, h_a: float) -> float: + """Convert z coordinates of bathymetry to height coordinates in local reference (e.g. staff gauge). + + Parameters + ---------- + h_a : float + measured level in local datum + + Returns + ------- + z : float + level in global datum + + """ + h_ref = 0 if self.gcps["h_ref"] is None else self.gcps["h_ref"] + return h_a - h_ref + self.gcps["z_0"] + def get_M( self, h_a: Optional[float] = None, to_bbox_grid: Optional[bool] = False, reverse: Optional[bool] = False ) -> np.ndarray: @@ -843,17 +860,21 @@ def set_lens_position(self, x: float, y: float, z: float, crs: Optional[Any] = N x, y = helpers.xyz_transform([[x, y]], crs, self.crs)[0] self.lens_position = [x, y, z] - def project_points(self, points: List[List], within_image=False) -> np.ndarray: + def project_points(self, points: List[List], within_image=False, swap_y_coords=False) -> np.ndarray: """Project real world x, y, z coordinates into col, row coordinates on image. - If col, row coordinates are not allowed to go outside of the image frame, then set within_image = True + If col, row coordinates are not allowed to go outside of the image frame, then set `within_image = True`. + Method uses the intrinsics and extrinsics and distortion parameters to perform the projection. Parameters ---------- points : list of lists or array-like list of points [x, y, z] in real world coordinates - within_image : bool + within_image : bool, optional Set coordinates to NaN if these fall outside of the image. + swap_y_coords : bool, optional + If set to True (default: False), y-coordinates will be swapped, in order to match plotting defaults + which return row counting from top to bottom instead of bottom to top. Returns ------- @@ -889,8 +910,44 @@ def project_points(self, points: List[List], within_image=False) -> np.ndarray: points_proj[points_proj[:, 0] > self.width - 1, 0] = self.width - 1 points_proj[points_proj[:, 1] < 0, 1] = 0.0 points_proj[points_proj[:, 1] > self.height - 1, 1] = self.height - 1 + # swap y coords if set + if swap_y_coords: + points_proj[:, 1] = self.height - points_proj[:, 1] return points_proj + def project_grid(self, xs, ys, zs, swap_y_coords=False): + """Project gridded coordinates to col, row coordinates on image. + + Method uses the intrinsics and extrinsics and distortion parameters to perform the projection. + + Parameters + ---------- + xs : np.ndarray + 2d array of real-world x-coordinates + ys : np.ndarray + 2d array of real-world y-coordinates + zs : np.ndarray + 2d array of real-world z-coordinates + swap_y_coords : bool, optional + If set to True (default: False), y-coordinates will be swapped, in order to match plotting defaults + which return row counting from top to bottom instead of bottom to top. + + Returns + ------- + xp : np.ndarray + list of col coordinates of image objective + yp : np.ndarray + list of row coordinates of image objective + + """ + points = list(zip(xs.flatten(), ys.flatten(), zs.flatten(), strict=False)) + points_proj = np.array(self.project_points(points, swap_y_coords=swap_y_coords)) + xp, yp = points_proj[:, 0], points_proj[:, 1] + # reshape back + xp = np.reshape(xp, (len(xs), -1)) + yp = np.reshape(yp, (len(xs), -1)) + return xp, yp + def unproject_points(self, points: List[List], zs: Union[float, List[float]]) -> np.ndarray: """Reverse projects points in [column, row] space to [x, y, z] real world. diff --git a/pyorc/api/frames.py b/pyorc/api/frames.py index 2d5f9a0..9b98fc6 100644 --- a/pyorc/api/frames.py +++ b/pyorc/api/frames.py @@ -7,10 +7,12 @@ import matplotlib.pyplot as plt import numpy as np import xarray as xr +from ffpiv import window from matplotlib.animation import FuncAnimation from tqdm import tqdm -from pyorc import const, cv, helpers, piv_process, project +from pyorc import const, cv, helpers, project +from pyorc.velocimetry import ffpiv, openpiv from .orcbase import ORCBase from .plot import _frames_plot @@ -33,108 +35,165 @@ def __init__(self, xarray_obj): """ super(Frames, self).__init__(xarray_obj) - def get_piv(self, **kwargs): - """Perform PIV computation on projected frames. + def get_piv_coords( + self, window_size: tuple[int, int], search_area_size: tuple[int, int], overlap: tuple[int, int] + ) -> tuple[dict, dict]: + """Get Particle Image Velocimetry (PIV) coordinates and mesh grid projections. - Only a pipeline graph to computation is set up. Call a result to trigger actual computation. The dataset - returned contains velocity information for each interrogation window including "v_x" for x-direction velocity - components, "v_y" for y-direction velocity component, "corr" for the maximum correlation [-] found in the - interrogation window and s2n [-] for the signal to noise ratio. + This function calculates the PIV coordinates and the corresponding mesh grid + projections based on the provided window size, search area size, and overlap. + The results include both projected coordinates (xp, yp) and the respective + longitude and latitude values (if available). Parameters ---------- - **kwargs : keyword arguments to pass to dask_piv, used to control the manner in which openpiv.pyprocess - is called. + window_size : (int, int) + The size of the window for the PIV analysis. + search_area_size : (int, int) + The size of the search area for the PIV analysis. + overlap : (int, int) + The overlap ratio between consecutive windows. Returns ------- - xr.Dataset - PIV results in a lazy dask.array form in DataArrays "v_x", "v_y", "corr" and "s2n". + coords : dict + A dictionary containing the PIV local non-geographical projection coordinates: + - 'y': The y-axis coordinates. + - 'x': The x-axis coordinates. + mesh_coords : dict + A dictionary containing the mesh grid projections and coordinates: + - 'xp': The projected x-coordinates. + - 'yp': The projected y-coordinates. + - 'xs': The x-coordinates in the image space. + - 'ys': The y-coordinates in the image space. + - 'lon': The longitude values (if CRS is provided). + - 'lat': The latitude values (if CRS is provided). """ - camera_config = copy.deepcopy(self.camera_config) - dt = self._obj["time"].diff(dim="time") - - # add a number of kwargs for the piv function - if "window_size" in kwargs: - camera_config.window_size = kwargs["window_size"] - kwargs["search_area_size"] = camera_config.window_size - kwargs["window_size"] = camera_config.window_size - kwargs["res_x"] = camera_config.resolution - kwargs["res_y"] = camera_config.resolution - # set an overlap if not provided in kwargs - if "overlap" not in kwargs: - kwargs["overlap"] = int(round(camera_config.window_size) / 2) - # first get rid of coordinates that need to be recalculated - coords_drop = list(set(self._obj.coords) - set(self._obj.dims)) - obj = self._obj.drop_vars(coords_drop) - # get frames and shifted frames in time - frames1 = obj.shift(time=1)[1:].chunk({"time": 1}) - frames2 = obj[1:].chunk({"time": 1}) + dim_size = self._obj[0].shape # get the cols and rows coordinates of the expected results - cols, rows = piv_process.get_piv_size( - image_size=frames1[0].shape, search_area_size=kwargs["search_area_size"], overlap=kwargs["overlap"] + cols_vector, rows_vector = window.get_rect_coordinates( + dim_size=dim_size, + window_size=window_size, + search_area_size=search_area_size, + overlap=overlap, ) - cols_vector = cols[0].astype(np.int64) - rows_vector = rows[:, 0].astype(np.int64) + cols, rows = np.meshgrid(cols_vector, rows_vector) # retrieve the x and y-axis belonging to the results - x, y = helpers.get_axes(cols_vector, rows_vector, frames1.x.values, frames1.y.values) + x, y = helpers.get_axes(cols_vector, rows_vector, self._obj.x.values, self._obj.y.values) # convert in projected and latlon coordinates xs, ys = helpers.get_xs_ys( cols, rows, - camera_config.transform, + self.camera_config.transform, ) - if hasattr(camera_config, "crs"): - lons, lats = helpers.get_lons_lats(xs, ys, camera_config.crs) + if hasattr(self.camera_config, "crs"): + lons, lats = helpers.get_lons_lats(xs, ys, self.camera_config.crs) else: lons = None lats = None - - # new approach to getting M (from bbox coordinates) - src = camera_config.get_bbox(camera=True, h_a=self.h_a, expand_exterior=False).exterior.coords[0:4] - dst_xy = camera_config.get_bbox(expand_exterior=False).exterior.coords[0:4] - # get geographic coordinates bbox corners - dst = cv.transform_to_bbox(dst_xy, camera_config.bbox, camera_config.resolution) - M = cv.get_M_2D(src, dst, reverse=True) - # TODO: remove when above 4 lines work - # M = camera_config.get_M(self.h_a, to_bbox_grid=True, reverse=True) - # compute row and column position of vectors in original reprojected background image col/row coordinates - xp, yp = helpers.xy_to_perspective(*np.meshgrid(x, np.flipud(y)), self.camera_config.resolution, M) - # ensure y coordinates start at the top in the right orientation (different from order of a CRS) - shape_y, shape_x = self.camera_shape - yp = shape_y - yp + # calculate projected coordinates + z = self.camera_config.h_to_z(self.h_a) + zs = np.ones(xs.shape) * z + xp, yp = self.camera_config.project_grid(xs, ys, zs, swap_y_coords=True) + # package the coordinates coords = {"y": y, "x": x} - # retrieve all data arrays - v_x, v_y, s2n, corr = xr.apply_ufunc( - piv_process.piv, - frames1, - frames2, - dt, - kwargs=kwargs, - input_core_dims=[["y", "x"], ["y", "x"], []], - output_core_dims=[["new_y", "new_x"]] * 4, - dask_gufunc_kwargs={ - "output_sizes": {"new_y": len(y), "new_x": len(x)}, - }, - output_dtypes=[np.float32] * 4, - vectorize=True, - keep_attrs=True, - dask="parallelized", - ) - # merge all DataArrays in one Dataset - ds = xr.merge([v_x.rename("v_x"), v_y.rename("v_y"), s2n.rename("s2n"), corr.rename("corr")]).rename( - {"new_x": "x", "new_y": "y"} - ) - # add y and x-axis values - ds["y"] = y - ds["x"] = x + mesh_coords = {"xp": xp, "yp": yp, "xs": xs, "ys": ys, "lon": lons, "lat": lats} + return coords, mesh_coords - # add all 2D-coordinates - ds = ds.velocimetry.add_xy_coords( - [xp, yp, xs, ys, lons, lats], coords, {**const.PERSPECTIVE_ATTRS, **const.GEOGRAPHICAL_ATTRS} + def get_piv( + self, + window_size: Optional[tuple[int, int]] = None, + overlap: Optional[tuple[int, int]] = None, + engine: str = "openpiv", + **kwargs, + ) -> xr.Dataset: + """Perform PIV computation on projected frames. + + Only a pipeline graph to computation is set up. Call a result to trigger actual computation. The dataset + returned contains velocity information for each interrogation window including "v_x" for x-direction velocity + components, "v_y" for y-direction velocity component, "corr" for the maximum correlation [-] found in the + interrogation window and s2n [-] for the signal to noise ratio. + + Parameters + ---------- + window_size : (int, int), optional + size of interrogation windows in pixels (y, x) + overlap : (int, int), optional + amount of overlap between interrogation windows in pixels (y, x) + engine : str, optional + select the compute engine, can be "openpiv" (default), "numba", or "numpy". "numba" will give the fastest + performance but is still experimental. It can boost performance by almost an order of magnitude compared + to openpiv or numpy. both "numba" and "numpy" use the FF-PIV library as back-end. + **kwargs : dict + keyword arguments to pass to the piv engine. For "numba" and "numpy" the argument `chunks` can be provided + with an integer defining in how many batches of work the total velocimetry problem should be subdivided. + + Returns + ------- + xr.Dataset + PIV results in a lazy dask.array form in DataArrays "v_x", "v_y", "corr" and "s2n". + + See Also + -------- + OpenPIV project: https://github.com/OpenPIV/openpiv-python + FF-PIV project: https://github.com/localdevices/ffpiv + + """ + camera_config = copy.deepcopy(self.camera_config) + dt = self._obj["time"].diff(dim="time") + # Use window_size from camera_config unless provided in the method + if window_size is not None: + camera_config.window_size = window_size + window_size = ( + 2 * (camera_config.window_size,) + if isinstance(camera_config.window_size, int) + else camera_config.window_size ) + # ensure window size is a round number + window_size = window.round_to_even(window_size) + search_area_size = window_size + # set an overlap if not provided in kwargs + if overlap is None: + overlap = 2 * (int(round(camera_config.window_size) / 2),) + + # get all required coordinates for the PIV result + coords, mesh_coords = self.get_piv_coords(window_size, search_area_size, overlap) + # provide kwargs for OpenPIV analysis + if engine == "openpiv": + import warnings + + warnings.warn( + '"openpiv" is currently the default engine, but it will be replaced by "numba" in a future release.', + DeprecationWarning, + stacklevel=2, + ) + kwargs = { + **kwargs, + "search_area_size": search_area_size[0], + "window_size": window_size[0], + "overlap": overlap[0], + "res_x": camera_config.resolution, + "res_y": camera_config.resolution, + } + ds = openpiv.get_openpiv(self._obj, coords["y"], coords["x"], dt, **kwargs) + elif engine in ["numba", "numpy"]: + kwargs = { + **kwargs, + "search_area_size": search_area_size, + "window_size": window_size, + "overlap": overlap, + "res_x": camera_config.resolution, + "res_y": camera_config.resolution, + } + ds = ffpiv.get_ffpiv(self._obj, coords["y"], coords["x"], dt, engine=engine, **kwargs) + else: + raise ValueError(f"Selected PIV engine {engine} does not exist.") + # add all 2D-coordinates + ds = ds.velocimetry.add_xy_coords(mesh_coords, coords, {**const.PERSPECTIVE_ATTRS, **const.GEOGRAPHICAL_ATTRS}) + # ensure all metadata is transferred + ds.attrs = self._obj.attrs # in case window_size was changed, overrule the camera_config attribute ds.attrs.update(camera_config=camera_config.to_json()) # set encoding @@ -207,7 +266,9 @@ def project( da_proj = da_proj.fillna(0.0) # assign coordinates - da_proj = da_proj.frames.add_xy_coords([xs, ys, lons, lats], coords, const.GEOGRAPHICAL_ATTRS) + da_proj = da_proj.frames.add_xy_coords( + {"xs": xs, "ys": ys, "lon": lons, "lat": lats}, coords, const.GEOGRAPHICAL_ATTRS + ) if "rgb" in da_proj.dims and len(da_proj.dims) == 4: # ensure that "rgb" is the last dimension da_proj = da_proj.transpose("time", "y", "x", "rgb") @@ -489,22 +550,40 @@ def animate(i): def to_video(self, fn, video_format=None, fps=None): """Write frames to a video file without any layout. + Frames from the input object are written into a video file. The format and frame + rate can be customized as per user preference or derived automatically from the + input object. + Parameters ---------- fn : str - Path to output file + Path to the output video file. video_format : cv2.VideoWriter_fourcc, optional - A VideoWriter preference, default is cv2.VideoWriter_fourcc(*"mp4v") + The desired video file format codec. If not provided, defaults to + `cv2.VideoWriter_fourcc(*"mp4v")`. fps : float, optional - Frames per second, if not provided, derived from original video + Frames per second for the output video. If not specified, it is estimated + from the time differences in the input frames. """ + # """Write frames to a video file without any layout. + # + # Parameters + # ---------- + # fn : str + # Path to output file + # video_format : cv2.VideoWriter_fourcc, optional + # A VideoWriter preference, default is cv2.VideoWriter_fourcc(*"mp4v") + # fps : float, optional + # Frames per second, if not provided, derived from original video + # + # """ if video_format is None: # set to a default video_format = cv2.VideoWriter_fourcc(*"mp4v") if fps is None: # estimate it from the time differences - fps = 1 / (self._obj["time"][1].values - self._obj["time"][0].values) + fps = 1 / (self._obj["time"].diff(dim="time").values.mean()) h = self._obj.shape[1] w = self._obj.shape[2] out = cv2.VideoWriter(fn, video_format, fps, (w, h)) diff --git a/pyorc/api/orcbase.py b/pyorc/api/orcbase.py index 8dab809..a4ea4c3 100644 --- a/pyorc/api/orcbase.py +++ b/pyorc/api/orcbase.py @@ -1,4 +1,7 @@ +"""ORC base class.""" + import json + import numpy as np import xarray as xr @@ -11,30 +14,21 @@ class ORCBase(object): + """ORC Base class definition.""" + def __init__(self, xarray_obj): + """Initialize base ORC object.""" self._obj = xarray_obj @property def h_a(self): - """Actual water level belonging to the processed video - - Returns - ------- - h : float - deserialized representation of actual water level - """ + """Actual water level belonging to the processed video.""" return json.loads(self._obj.h_a) - @property def camera_config(self): - """Camera configuration belonging to the processed video - - Returns - ------- - obj : pyorc.CameraConfig object - """ - if not(hasattr(self, "_camera_config")): + """Camera configuration belonging to the processed video.""" + if not (hasattr(self, "_camera_config")): # first set the camera config and shape self._set_camera_config() return self._camera_config @@ -42,9 +36,11 @@ def camera_config(self): @camera_config.setter def camera_config(self, cam_config): import warnings + if isinstance(cam_config, str): # convert into a camera_config object from pyorc import get_camera_config + # START DEPRECATION BEHAVIOUR # ===================== # check if cam config contains height/width @@ -52,7 +48,7 @@ def camera_config(self, cam_config): if "height" in cam_config_json and "width" in cam_config_json: self._camera_config = get_camera_config(cam_config) else: - warnings.simplefilter('always', DeprecationWarning) + warnings.simplefilter("always", DeprecationWarning) warnings.warn(depr_warning, DeprecationWarning, stacklevel=2) cam_config_json["height"], cam_config_json["width"] = eval(self._obj.camera_shape) self._camera_config = get_camera_config(json.dumps(cam_config_json)) @@ -65,7 +61,7 @@ def camera_config(self, cam_config): @property def camera_shape(self): - """Shape of the original camera objective of the processed video (e.g. 1080, 1920) + """Shape of the original camera objective of the processed video (e.g. 1080, 1920). Returns ------- @@ -73,13 +69,14 @@ def camera_shape(self): number of rows c : int number of columns + """ return self._camera_shape @camera_shape.setter def camera_shape(self, cam_shape): - self._camera_shape = self._obj.camera_shape if not(isinstance(cam_shape, str)) else np.array( - eval(self._obj.camera_shape) + self._camera_shape = ( + self._obj.camera_shape if not (isinstance(cam_shape, str)) else np.array(eval(self._obj.camera_shape)) ) def _set_camera_config(self): @@ -87,44 +84,36 @@ def _set_camera_config(self): self.camera_config = self._obj.camera_config self.camera_shape = self._obj.camera_shape - - def add_xy_coords( - self, - xy_coord_data, - coords, - attrs_dict - ): + def add_xy_coords(self, xy_coord_data, coords, attrs_dict): """Add coordinate variables with x and y dimensions (2d) to existing xr.Dataset. Parameters ---------- - xy_coord_data: list + xy_coord_data: dict one or several arrays with 2-dimensional coordinates coords: tuple of str the dimensions belonging to the data in xy_coord_data - attrs_dict: list of dict - attributes belonging to xy_coord_data, must have equal length as xy_coord_data. + attrs_dict: dict + attributes belonging to xy_coord_data, must have the same keys as xy_coord_data. If a key is missing + an error will be returned. Returns ------- ds : xr.Dataset same as input, but with added coordinate variables. + """ dims = tuple(coords.keys()) - xy_coord_data = [ - xr.DataArray( - data, - dims=dims, - coords=coords, - attrs=attrs, - name=name - ) for data, (name, attrs) in zip(xy_coord_data, attrs_dict.items()) if data is not None] + xy_coord_data = { + name: xr.DataArray(data, dims=dims, coords=coords, attrs=attrs_dict[name], name=name) + for name, data in xy_coord_data.items() + if data is not None + } + # assign the coordinates - frames_coord = self._obj.assign_coords({ - k: (dims, v.values) for k, v in zip(attrs_dict, xy_coord_data) - }) + frames_coord = self._obj.assign_coords({k: (dims, v.values) for k, v in xy_coord_data.items()}) # add the attributes (not possible with assign_coords - for k, v in zip(attrs_dict, xy_coord_data): + for k, v in xy_coord_data.items(): frames_coord[k].attrs = v.attrs # update the DataArray return frames_coord diff --git a/pyorc/api/transect.py b/pyorc/api/transect.py index df39011..5602d15 100644 --- a/pyorc/api/transect.py +++ b/pyorc/api/transect.py @@ -117,8 +117,7 @@ def get_transect_perspective(self, h=None, within_image=True): z = self._obj.zcoords # retrieve the bottom coordinates points = [[_x, _y, _z] for _x, _y, _z in zip(x, y, z, strict=False)] # ensure that y coordinates are in the right direction - points_proj = self.camera_config.project_points(points, within_image=within_image) - points_proj[:, 1] = self.camera_config.height - points_proj[:, 1] + points_proj = self.camera_config.project_points(points, within_image=within_image, swap_y_coords=True) return points_proj def get_wetted_perspective(self, h, sample_size=1000): diff --git a/pyorc/api/video.py b/pyorc/api/video.py index 71bba55..f8a01da 100644 --- a/pyorc/api/video.py +++ b/pyorc/api/video.py @@ -46,7 +46,7 @@ def __init__( end_frame: Optional[int] = None, freq: Optional[int] = 1, stabilize: Optional[List[List]] = None, - lazy: bool = False, + lazy: bool = True, rotation: Optional[int] = None, fps: Optional[float] = None, ): @@ -78,9 +78,9 @@ def __init__( The mask is used to select region (on land) for rigid point search for stabilization. If not set, then no stabilization will be performed lazy : bool, optional - If set, frames are read lazily. This slows down the processing, but makes interaction with large videos - easier and consuming less memory. For operational processing with short videos, it is recommended to set - this explicitly to False. + By default set to True, making frames read in organised chunks. If set to False, video is read in memory + entirely. Likely, we will deprecate this option in the future as we plan to optimize chunked reading. + Currently if memory size allows, setting lazy to False results in faster processing. rotation : int, optional can be 0, 90, 180, 270. If provided, images will be forced to rotate along the provided angle. fps : float, optional @@ -136,7 +136,7 @@ def __init__( # set a gridded mask based on the roi points self.set_mask_from_exterior(self.stabilize) # set end and start frame - self.frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + self.frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) - 1 if start_frame is not None: if start_frame > self.frame_count > 0: raise ValueError("Start frame is larger than total amount of frames") @@ -376,6 +376,45 @@ def get_frame( cap.release() return img + def get_frames_chunk( + self, n_start: int, n_end: int, method: Optional[Literal["grayscale", "rgb", "hsv", "bgr"]] = "grayscale" + ) -> np.ndarray: + """Retrieve a chunk of frames in one go. + + Parameters + ---------- + n_start : int + frame number to initiate retrieval + n_end : int + last frame number of retrieval + method : str + can be "rgb", "grayscale", or "hsv", default: "grayscale" + + Returns + ------- + frame : np.ndarray + 2d array (grayscale) or 3d (rgb/hsv) with frame + + """ + assert n_start >= 0, "frame number cannot be negative" + assert ( + n_start - self.start_frame <= self.end_frame - self.start_frame + ), "frame number is larger than the difference between the start and end frame " + # assert (method in ["grayscale", "rgb", + # "hsv"]), f'method must be "grayscale", "rgb" or "hsv", method is "{method}"' + if not os.path.isfile(self.fn): + raise IOError(f"Video file {self.fn} does not exist.") + cap = cv2.VideoCapture(self.fn) + cap.set(cv2.CAP_PROP_POS_FRAMES, n_start + self.start_frame) + imgs = [] + for n in range(n_start, n_end): + ret, img = cv.get_frame(cap, rotation=self.rotation, ms=self.ms[n] if self.ms else None, method=method) + self.frame_count = n + 1 + imgs.append(img) + cap.set(cv2.CAP_PROP_POS_FRAMES, 0) + cap.release() + return np.array(imgs) + def get_frames(self, method: Optional[Literal["grayscale", "rgb", "hsv", "bgr"]] = "grayscale") -> xr.DataArray: """Get a xr.DataArray, containing a dask array of frames, from `start_frame` until `end_frame`. @@ -398,15 +437,26 @@ def get_frames(self, method: Optional[Literal["grayscale", "rgb", "hsv", "bgr"]] ), "No camera configuration is set, add it to the video using the .camera_config method" # camera_config may be altered for the frames object, so copy below camera_config = copy.deepcopy(self.camera_config) - + frames_chunk = 20 if self.frames is None: # a specific method for collecting frames is requested or lazy access is requested. - get_frame = dask.delayed(self.get_frame, pure=True) # Lazy version of get_frame + # get_frame = dask.delayed(self.get_frame, pure=True) # Lazy version of get_frame + get_frames_chunk = dask.delayed(self.get_frames_chunk, pure=True) # Lazy version of get_frame # get all listed frames - frames = [get_frame(n=n, method=method) for n, f_number in enumerate(self.frame_number)] - sample = frames[0].compute() - data_array = [da.from_delayed(frame, dtype=sample.dtype, shape=sample.shape) for frame in frames] - da_stack = da.stack(data_array, axis=0) + # frames = [get_frame(n=n, method=method) for n, f_number in enumerate(self.frame_number)] + # derive video shape + sample = get_frames_chunk(n_start=0, n_end=1, method=method).compute()[0] + data_array = [] + for n_start in range(0, len(self.frame_number), frames_chunk): + n_end = np.minimum(n_start + frames_chunk, len(self.frame_number)) + frame_chunk = get_frames_chunk(n_start=n_start, n_end=n_end, method=method) + shape = (n_end - n_start, *sample.shape) + data_array.append(da.from_delayed(frame_chunk, dtype=sample.dtype, shape=shape)) + + # sample = frames[0].compute() + # data_array = [da.from_delayed(frame, dtype=sample.dtype, shape=sample.shape) for frame in frames] + # da_stack = da.stack(data_array, axis=0) + da_stack = da.concatenate(data_array, axis=0) else: da_stack = self.frames # apply stabilisation @@ -449,7 +499,7 @@ def get_frames(self, method: Optional[Literal["grayscale", "rgb", "hsv", "bgr"]] if len(sample.shape) == 3: del coords["rgb"] # add coordinate grids (i.e. without time) - frames = frames.frames.add_xy_coords([xp, yp], coords, const.PERSPECTIVE_ATTRS) + frames = frames.frames.add_xy_coords({"xp": xp, "yp": yp}, coords, const.PERSPECTIVE_ATTRS) frames.name = "frames" return frames diff --git a/pyorc/cli/log.py b/pyorc/cli/log.py index a8eb168..208c7ce 100644 --- a/pyorc/cli/log.py +++ b/pyorc/cli/log.py @@ -16,11 +16,12 @@ class CustomFormatter(logging.Formatter): yellow = "\x1b[33;20m" red = "\x1b[31;20m" bold_red = "\x1b[31;1m" + cyan = "\x1b[36;20m" reset = "\x1b[0m" format = FMT FORMATS = { - logging.DEBUG: grey + format + reset, + logging.DEBUG: cyan + format + reset, logging.INFO: grey + format + reset, logging.WARNING: yellow + format + reset, logging.ERROR: red + format + reset, diff --git a/pyorc/cli/main.py b/pyorc/cli/main.py index e6cde42..c9cfac1 100644 --- a/pyorc/cli/main.py +++ b/pyorc/cli/main.py @@ -233,14 +233,14 @@ def camera_config( logger=logger, ) if stabilize: - stabilize = cli_utils.get_stabilize_pol( + stabilize_pol = cli_utils.get_stabilize_pol( videofile, frame_sample=frame_sample, rotation=rotation, logger=logger, ) else: - stabilize = None + stabilize_pol = None service.camera_config( video_file=videofile, cam_config_file=output, @@ -253,7 +253,7 @@ def camera_config( corners=corners, camera_matrix=camera_matrix, dist_coeffs=dist_coeffs, - stabilize=stabilize, + stabilize=stabilize_pol, rotation=rotation, ) logger.info(f"Camera configuration created and stored in {output}") diff --git a/pyorc/cv.py b/pyorc/cv.py index 2e31a18..b6f78d7 100644 --- a/pyorc/cv.py +++ b/pyorc/cv.py @@ -1,52 +1,129 @@ +"""OpenCV functions for pyorc.""" + import copy +import os + import cv2 import numpy as np -import os import rasterio -from . import helpers -from shapely.geometry import Polygon, LineString +from scipy import optimize from shapely.affinity import rotate +from shapely.geometry import LineString, Polygon from tqdm import tqdm -from scipy.cluster.vq import vq, kmeans -from scipy import optimize -import operator + +from . import helpers # default distortion coefficients for no distortion -DIST_COEFFS = [[0.], [0.], [0.], [0.], [0.]] +DIST_COEFFS = [[0.0], [0.0], [0.0], [0.0], [0.0]] # criteria for finding subpix corners criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) +def _check_valid_frames(cap, frame_number): + """Determine last valid index in the frame sequence of a video capture object. + + Determines where at the end of the sequence a frame cannot be retrieved due to some error. + The function iterates backward through the frame numbers and sets the frame position to each one, attempting to + read the frame. If a frame cannot be read, it updates the `last_valid_idx` + to that position. If all frames are invalid, it defaults the index to zero. + + Parameters + ---------- + cap : cv2.VideoCapture + capture object. + frame_number : list[int] + A list representing the sequence of frame numbers to check for validity. + + Returns + ------- + int or None + The last valid index in the frame sequence or `None` if no invalid frames + are found at the end of the sequence. + + """ + # start with None + last_valid_idx = None + ret = False + n = -1 + while ret is False: + cap.set(cv2.CAP_PROP_POS_FRAMES, frame_number[n]) + ret, img = cap.read() + if not (ret): + last_valid_idx = n + n -= 1 + if n == -len(frame_number) - 1: + last_valid_idx = 0 + break + + return last_valid_idx + def _combine_m(m1, m2): + """Combine two 2x3 serial transformation matrices into one. + + Done by extending them to 3x3 matrices for matrix multiplication, compute the product, and return the resulting + 2x3 matrix. + + Parameters + ---------- + m1 : array_like + First matrix to be combined, should be of shape (2, 3). + + m2 : array_like + Second matrix to be combined, should be of shape (2, 3). + + Returns + ------- + np.ndarray + The resulting matrix of shape (2, 3) after matrix + multiplication. + + """ # extend to a 3x3 for matrix multiplication - _m1 = np.append(m1, np.array([[0., 0., 1.]]), axis=0) - _m2 = np.append(m2, np.array([[0., 0., 1.]]), axis=0) + _m1 = np.append(m1, np.array([[0.0, 0.0, 1.0]]), axis=0) + _m2 = np.append(m2, np.array([[0.0, 0.0, 1.0]]), axis=0) m_combi = _m1.dot(_m2)[0:2] return m_combi def _smooth(img, stride): - """ - Internal function to filter on too large differences from spatial mean + """Blur image through gaussian smoothing. Parameters ---------- - img: image - stride: window edge size + img: np.ndarray + Input image. + stride: int + Size of the kernel used for the Gaussian blur. Returns ------- - img + np.ndarray + blurred image. + """ blur = cv2.GaussianBlur(img.astype("float32"), (stride, stride), 0) return blur def _convert_edge(img, stride_1, stride_2): - """ - internal function to do emphasize gradients with a band filter method, see main method + """Enhance image gradients by a band filter. + + Parameters + ---------- + img : np.ndarray + Input image. + stride_1 : int + Size of the kernel used for the first Gaussian blur. + stride_2 : int + Size of the kernel used for the second Gaussian blur. + + Returns + ------- + np.ndarray + Edge enhanced image. + """ blur1 = cv2.GaussianBlur(img.astype("float32"), (stride_1, stride_1), 0) blur2 = cv2.GaussianBlur(img.astype("float32"), (stride_2, stride_2), 0) @@ -55,26 +132,47 @@ def _convert_edge(img, stride_1, stride_2): def _get_dist_coefs(k1): - """ - Establish distortion coefficient matrix for use in cv2.undistort + """Convert barrel distortion parameter into distortion coefficient matrix. + + Parameters + ---------- + k1 : float + barrel lens distortion parameter + + Returns + ------- + np.ndarray + distortion coefficient matrix (4 parameter) - :param k1: barrel lens distortion parameter - :return: distance coefficient matrix (4 parameter) """ # define distortion coefficient vector dist = np.zeros((4, 1), np.float64) dist[0, 0] = k1 return dist + def _get_cam_mtx(height, width, c=2.0, focal_length=None): - """ - Get 3x3 camera matrix from lens parameters + """Compute camera matrix based on the given parameters for height, width, scaling factor, and focal length. + + Parameters + ---------- + height : int + The height of the image or frame from which the camera matrix is derived. + width : int + The width of the image or frame from which the camera matrix is derived. + c : float, optional + The scaling factor used to determine the principal point in the matrix. + Default value is 2.0. + focal_length : float, optional + The focal length to set in the camera matrix. If not provided, defaults + to the width of the image for both the x and y directions. + + Returns + ------- + numpy.ndarray + A 3x3 camera matrix defining the intrinsic parameters of the camera, + including the principal point and focal length. - :param height: height of image from camera - :param width: width of image from camera - :param c: float, optical center (default: 2.) - :param f: float, focal length (optional) - :return: camera matrix, to be used by cv2.undistort """ # define camera matrix mtx = np.eye(3, dtype=np.float32) @@ -90,10 +188,39 @@ def _get_cam_mtx(height, width, c=2.0, focal_length=None): def get_ms_gftt(cap, start_frame=0, end_frame=None, n_pts=None, split=2, mask=None, wdw=4): - # set end_frame to last if not defined - if end_frame is None: - end_frame = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + """Calculate motion smoothing of video frames using Good Features to Track and Lucas-Kanade Optical Flow methods. + + This function processes each frame between `start_frame` and `end_frame` to estimate and smooth affine + transformations, which indicate motions. The function supports frame splitting for detecting features, + applying an optional mask, and defines a smoothing window for the transformations. + + Parameters + ---------- + cap : cv2.VideoCapture + Video capture object to read frames from. + start_frame : int, optional + Index of the starting frame for processing. Defaults to 0. + end_frame : int, optional + Index of the ending frame for processing. If not specified, it is set to the last frame. + n_pts : int, optional + Number of good features to track within each frame. If None, the square root of + the number of pixels in a frame is used. + split : int, optional + Number of segments to split each frame into for feature detection. Defaults to 2. Applied over both x and y + direction. + mask : np.ndarray, optional + Optional mask to specify regions of interest within the frame for feature detection. + wdw : int, optional + Window size for smoothing the affine transformations over time. Defaults to 4. + + Returns + ------- + list of ndarray + A list of affine transformation matrices for each processed frame after smoothing. + """ + # set end_frame to last if not defined + end_frame = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) if end_frame is None else end_frame m = np.eye(3)[0:2] # m2 = np.eye(3)[0:2] ms = [] @@ -145,7 +272,10 @@ def get_ms_gftt(cap, start_frame=0, end_frame=None, n_pts=None, split=2, mask=No def _get_gcps_2_4(src, dst, img_width, img_height): - """ + """Convert 2 points GCPs to 4 points GCPs in the corners of the image frame. + + Function is used in case a nadir video is provided, where it may be assumed that transformation can be done + through scaling and translation. Parameters ---------- @@ -153,8 +283,10 @@ def _get_gcps_2_4(src, dst, img_width, img_height): source control points (list of lists) dst : list or array-like destination control points (list of lists) - img_width : width of original image frame - img_height : height of original image frame + img_width : int + width of original image frame + img_height : int + height of original image frame Returns ------- @@ -162,6 +294,7 @@ def _get_gcps_2_4(src, dst, img_width, img_height): source control points (list of lists) converted to corner points dst : list or array-like destination control points (list of lists) converted to corner points + """ # first reverse the coordinate order of the y-axis _src = [[x, img_height - y] for x, y in src] @@ -170,12 +303,7 @@ def _get_gcps_2_4(src, dst, img_width, img_height): # complete M with a line indicating no perspective M = np.array(M[0].tolist() + [[0, 0, 1]]) # establish corner coordinates - corners = [ - [0, 0], - [img_width, 0], - [img_width, img_height], - [0, img_height] - ] + corners = [[0, 0], [img_width, 0], [img_width, img_height], [0, img_height]] dst = cv2.perspectiveTransform(np.float32([corners]), M)[0].tolist() # now get the corners back transformed to the real image coordinates src = [[x, img_height - y] for x, y in corners] @@ -183,13 +311,26 @@ def _get_gcps_2_4(src, dst, img_width, img_height): def _get_shape(bbox, resolution=0.01, round=1): - """ - defines the number of rows and columns needed in a target raster, to fit a given bounding box. + """Calculate the number of columns and rows based on the dimensions of bounding box and provided resolution. + + Rounding factor can be used to adjust the number of columns and rows to a specified granularity. + + Parameters + ---------- + bbox : shapely.geometry.Polygon + Rectangular bounding box of AOI. + resolution : float, optional + x and y resolution in meters used to define grid + round : int, optional + A rounding factor that allows adjusting the number of columns and rows to be multiples of this factor. + + Returns + ------- + tuple of int + A tuple containing the number of columns and rows (cols, rows) + calculated based on the bounding box dimensions, resolution, and + rounding factor. - :param bbox: shapely Polygon, bounding box - :param resolution: resolution of target raster - :param round: number of pixels to round intended sh ape to - :return: numbers of rows and columns for target raster """ coords = bbox.exterior.coords box_length = LineString(coords[0:2]).length @@ -213,6 +354,7 @@ def _get_transform(bbox, resolution=0.01): Returns ------- affine : rasterio.transform.Affine + """ corners = np.array(bbox.exterior.coords) # estimate the angle of the bounding box @@ -230,10 +372,7 @@ def _get_transform(bbox, resolution=0.01): np.cos(angle + 1.5 * np.pi) * resolution, np.sin(angle + 1.5 * np.pi) * resolution, ) - return rasterio.transform.Affine( - dx_col, dy_col, top_left_x, dx_row, dy_row, top_left_y - ) - + return rasterio.transform.Affine(dx_col, dy_col, top_left_x, dx_row, dy_row, top_left_y) def _gftt_split(img, split, n_pts, mask=None): @@ -244,15 +383,15 @@ def _gftt_split(img, split, n_pts, mask=None): pts = np.zeros((0, 1, 2), np.float32) while v < img.shape[0]: while h < img.shape[1]: - sub_img = img[v:v + ver_split, h:h + hor_split] + sub_img = img[v : v + ver_split, h : h + hor_split] # get points over several quadrants subimg_pts = cv2.goodFeaturesToTrack( sub_img, - mask=mask[v:v + ver_split, h:h + hor_split] if mask is not None else None, - maxCorners=int(n_pts/split**2), + mask=mask[v : v + ver_split, h : h + hor_split] if mask is not None else None, + maxCorners=int(n_pts / split**2), qualityLevel=0.3, minDistance=10, - blockSize=1 + blockSize=1, ) # add offsets for quadrants if subimg_pts is not None: @@ -264,9 +403,11 @@ def _gftt_split(img, split, n_pts, mask=None): v += ver_split return pts + def solvepnp(dst, src, camera_matrix, dist_coeffs): - """ - Short version with preprocessing for cv2.SolvePnP + """Solve p-n-p problem. + + Wrapper for cv2.SolvePnP with pre-processing of the input data and selection of the correct flags. Parameters ---------- @@ -288,6 +429,7 @@ def solvepnp(dst, src, camera_matrix, dist_coeffs): rotation vector tvec : np.array translation vector + """ # set points to float32 _src = np.float32(src) @@ -307,9 +449,9 @@ def solvepnp(dst, src, camera_matrix, dist_coeffs): def transform(img, m): - """ - Affine transforms an image using a specified affine transform matrix. Typically the transformation is derived - for image stabilization purposes. + """Affine-transform image using specified affine transform matrix. + + Typically the transformation is derived for image stabilization purposes. Parameters ---------- @@ -324,7 +466,6 @@ def transform(img, m): Image after affine transform applied """ - h = img.shape[0] w = img.shape[1] # Apply affine wrapping to the given frame @@ -333,18 +474,19 @@ def transform(img, m): def calibrate_camera( - fn, - chessboard_size=(9, 6), - max_imgs=30, - plot=True, - progress_bar=True, - criteria=criteria, - to_file=False, - frame_limit=None, - tolerance=None, + fn, + chessboard_size=(9, 6), + max_imgs=30, + plot=True, + progress_bar=True, + criteria=criteria, + to_file=False, + frame_limit=None, + tolerance=None, ): - """ - Intrinsic matrix calculation and distortion coefficients calculation following + """Calculate intrinsic matrix and distortion coefficients. + + This follows recipe from: https://docs.opencv.org/4.x/dc/dbb/tutorial_py_calibration.html """ dir = os.path.split(os.path.abspath(fn))[0] @@ -355,7 +497,7 @@ def calibrate_camera( # set the expected object points from the chessboard size objp = np.zeros((chessboard_size[0] * chessboard_size[1], 3), np.float32) - objp[:, :2] = np.mgrid[0:chessboard_size[0], 0:chessboard_size[1]].T.reshape(-1, 2) + objp[:, :2] = np.mgrid[0 : chessboard_size[0], 0 : chessboard_size[1]].T.reshape(-1, 2) obj_pts = [] img_pts = [] @@ -406,13 +548,14 @@ def calibrate_camera( # close the plot window if relevant cv2.destroyAllWindows() # do calibration - assert(len(obj_pts) >= 5),\ - f"A minimum of 5 frames with chessboard patterns must be available, only {len(obj_pts)} found. Please check " \ + assert len(obj_pts) >= 5, ( + f"A minimum of 5 frames with chessboard patterns must be available, only {len(obj_pts)} found. Please check " f"if the video contains chessboard patterns of size {chessboard_size} " + ) ret, camera_matrix, dist_coeffs, rvecs, tvecs = cv2.calibrateCamera(obj_pts, img_pts, frame_size, None, None) # remove badly performing images and recalibrate errs = [] - for n, i in enumerate(range(len(obj_pts))): + for i in range(len(obj_pts)): img_pts2, _ = cv2.projectPoints(obj_pts[i], rvecs[i], tvecs[i], camera_matrix, dist_coeffs) errs.append(cv2.norm(img_pts[i], img_pts2, cv2.NORM_L2) / len(img_pts2)) @@ -421,18 +564,17 @@ def calibrate_camera( idx = np.array(errs) < tolerance obj_pts = list(np.array(obj_pts)[idx]) img_pts = list(np.array(img_pts)[idx]) - print(len(img_pts)) # do calibration ret, camera_matrix, dist_coeffs, rvecs, tvecs = cv2.calibrateCamera(obj_pts, img_pts, frame_size, None, None) errs = [] - for n, i in enumerate(range(len(obj_pts))): + for i in range(len(obj_pts)): img_pts2, _ = cv2.projectPoints(obj_pts[i], rvecs[i], tvecs[i], camera_matrix, dist_coeffs) errs.append(cv2.norm(img_pts[i], img_pts2, cv2.NORM_L2) / len(img_pts2)) print(f"Average error on point reconstruction is {np.array(errs).mean()}") return camera_matrix, dist_coeffs -def _Rt_to_M(rvec, tvec, camera_matrix, z=0., reverse=False): +def _Rt_to_M(rvec, tvec, camera_matrix, z=0.0, reverse=False): R = cv2.Rodrigues(rvec)[0] # assume height of projection plane R[:, 2] = R[:, 2] * z @@ -448,10 +590,12 @@ def _Rt_to_M(rvec, tvec, camera_matrix, z=0., reverse=False): # normalize homography before returning return M / M[-1, -1] + def unproject_points(src, z, rvec, tvec, camera_matrix, dist_coeffs): - """ - Reverse projects points from the image to the 3D world. As points on the objective are a ray line in - the real world, a x, y, z coordinate can only be reconstructed if the points have one known coordinate (z). + """Reverse-project points from the image to the 3D world. + + As points on the objective are a ray line in the real world, a x, y, z coordinate can only be reconstructed if + the points have one known coordinate (z). Parameters ---------- @@ -470,26 +614,21 @@ def unproject_points(src, z, rvec, tvec, camera_matrix, dist_coeffs): Returns ------- + np.ndarray + unprojected points (x, y, z) """ src = np.float32(np.atleast_1d(src)) # first undistort points - src = np.float32( - np.array( - undistort_points( - src, - camera_matrix, - dist_coeffs - ) - ) - ) + src = np.float32(np.array(undistort_points(src, camera_matrix, dist_coeffs))) if isinstance(z, (list, np.ndarray)): # zs = np.atleast_1d(zs) z = np.float64(z) dst = [] - assert (len(z) == len( - src)), f"Amount of src points {len(src)} is not equal to amount of vertical levels z {len(z)}" - for pt, _z in zip(src, z): + assert len(z) == len( + src + ), f"Amount of src points {len(src)} is not equal to amount of vertical levels z {len(z)}" + for pt, _z in zip(src, z, strict=False): M = _Rt_to_M(rvec, tvec, camera_matrix, z=_z, reverse=False) x, y = list(cv2.perspectiveTransform(pt[None, None, ...], M)[0][0]) dst.append([x, y, _z]) @@ -507,8 +646,7 @@ def unproject_points(src, z, rvec, tvec, camera_matrix, dist_coeffs): def get_M_2D(src, dst, reverse=False): - """ - Retrieve homography matrix for between (4) src and (4) dst points with only x, y coordinates (no z) + """Retrieve homography matrix for between (4) src and (4) dst points with only x, y coordinates (no z). Parameters ---------- @@ -523,6 +661,7 @@ def get_M_2D(src, dst, reverse=False): ------- M : np.ndarray homography matrix (3x3), used in cv2.warpPerspective + """ # set points to float32 _src = np.float32(src) @@ -535,9 +674,8 @@ def get_M_2D(src, dst, reverse=False): return M -def get_M_3D(src, dst, camera_matrix, dist_coeffs=np.zeros((1, 4)), z=0., reverse=False): - """ - Retrieve homography matrix for between (6+) 2D src and (6+) 3D dst (x, y, z) points +def get_M_3D(src, dst, camera_matrix, dist_coeffs=None, z=0.0, reverse=False): + """Retrieve homography matrix for between (6+) 2D src and (6+) 3D dst (x, y, z) points. Parameters ---------- @@ -567,17 +705,78 @@ def get_M_3D(src, dst, camera_matrix, dist_coeffs=np.zeros((1, 4)), z=0., revers https://www.openearth.nl/flamingo/_modules/flamingo/rectification/rectification.html """ + dist_coeffs = np.zeros((1, 4)) if dist_coeffs is None else dist_coeffs success, rvec, tvec = solvepnp(dst, src, camera_matrix, dist_coeffs) return _Rt_to_M(rvec, tvec, camera_matrix, z=z, reverse=reverse) -def optimize_intrinsic(src, dst, height, width, c=2., lens_position=None): - def error_intrinsic(x, src, dst, height, width, c=2., lens_position=None, dist_coeffs=DIST_COEFFS): - """ - estimate errors in known points using provided control on camera matrix. - returns error in gcps and camera position (if provided) +def optimize_intrinsic(src, dst, height, width, c=2.0, lens_position=None): + """Optimize the intrinsic parameters of a camera model. + + The function finds optimal intrinsic camera parameters, including focal length and distortion coefficients, by + minimizing the reprojection error from 3D source points to 2D destination points. It uses differential evolution + for optimization. Optionally lens position can be provided to include additional geometric constraints. + + Parameters + ---------- + src : array_like + Source points in the original 3D space to be projected. + dst : array_like + Destination points in the 2D image space, serving as the target for + projecting the source points. + height : int + The height of the image in pixels. + width : int + The width of the image in pixels. + c : float, optional + Center parameter of the camera matrix. + lens_position : array_like, optional + The assumed position of the lens in the 3D space. + + Returns + ------- + Tuple[numpy.ndarray, numpy.ndarray, float] + A tuple containing the optimized camera matrix, distortion coefficients, + and the minimized reprojection error. + + """ + + def error_intrinsic(x, src, dst, height, width, c=2.0, lens_position=None, dist_coeffs=DIST_COEFFS): + """Compute the reprojection error for the intrinsic parameters of a camera model. + + This function optimizes for the focal length and first two distortion coefficients based on the source and + destination point correspondences provided. Lens position may be provided as additional geometric constraint. + + Parameters + ---------- + x : array_like + The array containing the optimization parameters, where `x[0]` is used + to compute the focal length and `x[1]` and `x[2]` are used to adjust + the distortion coefficients. + src : array_like + Source points in the original 3D space that need to be projected. + dst : array_like + Destination points in the 2D image space, which are the target for + the projection of the source points. + height : int + The height of the image in pixels. + width : int + The width of the image in pixels. + c : float, optional + center parameter of camera matrix. + lens_position : array_like, optional + The assumed position of the lens in the 3D space. + dist_coeffs : array_like, optional + Distortion coefficients. + + Returns + ------- + float + The computed mean reprojection error, with optional contributions from + the camera position error if the lens position is provided. + """ - f = x[0]*width # only one parameter to optimize for now, can easily be extended! + f = x[0] * width # only one parameter to optimize for now, can easily be extended! dist_coeffs[0][0] = float(x[1]) dist_coeffs[1][0] = float(x[2]) # dist_coeffs[4][0] = float(x[3]) @@ -596,7 +795,7 @@ def error_intrinsic(x, src, dst, height, width, c=2., lens_position=None, dist_c dst_est = unproject_points(src, zs, rvec, tvec, camera_matrix, dist_coeffs) # src_est = np.array([list(point[0]) for point in src_est]) dist_xy = np.array(_dst)[:, 0:2] - np.array(dst_est)[:, 0:2] - dist = (dist_xy ** 2).sum(axis=1) ** 0.5 + dist = (dist_xy**2).sum(axis=1) ** 0.5 gcp_err = dist.mean() if lens_position is not None: rmat = cv2.Rodrigues(rvec)[0] @@ -605,7 +804,7 @@ def error_intrinsic(x, src, dst, height, width, c=2., lens_position=None, dist_c else: cam_err = None # TODO: for now camera errors are weighted with 10% needs further investigation - err = float(0.1*cam_err + gcp_err) if cam_err is not None else gcp_err + err = float(0.1 * cam_err + gcp_err) if cam_err is not None else gcp_err else: err = 100 return err # assuming gcp pixel distance is about 5 cm @@ -623,9 +822,9 @@ def error_intrinsic(x, src, dst, height, width, c=2., lens_position=None, dist_c bounds=[(float(0.25), float(2)), bnds_k1, bnds_k2], # bounds=[(1710./width, 1714./width), bnds_k1, bnds_k2], args=(src, dst, height, width, c, lens_position, DIST_COEFFS), - atol=0.001 # one mm + atol=0.001, # one mm ) - camera_matrix = _get_cam_mtx(height, width, focal_length=opt.x[0]*width) + camera_matrix = _get_cam_mtx(height, width, focal_length=opt.x[0] * width) dist_coeffs = DIST_COEFFS dist_coeffs[0][0] = opt.x[1] dist_coeffs[1][0] = opt.x[2] @@ -637,6 +836,26 @@ def error_intrinsic(x, src, dst, height, width, c=2., lens_position=None, dist_c def color_scale(img, method): + """Transform color space of an image according to the specified method. + + The function offers support for grayscale conversion, RGB transformation + for plotting, and HSV conversion. Images initially are expected to be in + BGR format and will remain unchanged if 'bgr' is specified as the method. + + Parameters + ---------- + img : np.ndarray + Input image in BGR color space [uint8 type). + method : str + The color space conversion to apply to the image. Supported methods are + 'grayscale', 'rgb', 'hsv', and 'bgr'. + + Returns + ------- + np.ndarray + Image transformed into the specified color space. + + """ if method == "grayscale": # apply gray scaling, contrast- and gamma correction # img = _corr_color(img, alpha=None, beta=None, gamma=0.4) @@ -651,18 +870,45 @@ def color_scale(img, method): return img -def get_frame( - cap, - rotation=None, - ms=None, - method="grayscale" -): +def get_frame(cap, rotation=None, ms=None, method="grayscale"): + """Get single frame from video capture. + + The function captures an image frame from the given video capture device + and applies optional rotation, stabilization, and color scaling. + + Parameters + ---------- + cap : VideoCapture + The video capture object from which the frame is to be read. + rotation : int, optional + Specifies the angle for the rotation of the image. If None, no + rotation is applied. + ms : np.ndarray, optional + 2x3 affina transformation parameters. If None, the image will not undergo stabilization. + method : str, optional + Describes the color scaling method to be applied on the image. + Default is "grayscale". + + Returns + ------- + ret : bool + A flag indicating whether a frame was successfully read. + img : ndarray + The image after applying the optional processing steps. + + Raises + ------ + IOError + If the function is unable to read from the capture device, an + IOError is raised indicating a possible issue with the stream. + + """ try: ret, img = cap.read() if rotation is not None: - img = cv2.rotate(img, rotation) - except: - raise IOError(f"Cannot read") + img = cv2.rotate(img, rotation) + except IOError: + raise IOError("Cannot read") if ret: if ms is not None: # apply stabilization on image @@ -672,69 +918,70 @@ def get_frame( def get_time_frames(cap, start_frame, end_frame, lazy=True, fps=None, **kwargs): - """ - Gets a list of valid time stamps and frame numbers for the provided video capture object, starting from start_frame - ending at end_frame + """Obtain valid time stamps and frame numbers from video capture object. + + Valid frames may start and end at start_frame and end_frame, respectively. However, certain required frames may + turn out not readable. These will be captured, and resulting set of valid frames returned only. Parameters - ---------- - cap : cv2.VideoCapture - Opened VideoCapture object - start_frame : int - first frame to consider for reading - end_frame : int - last frame to consider for reading - lazy : bool - read frames lazily (default) or not. Set to False for direct reading (faster, but more memory) - fps : float - hard enforced frames per second number (used when metadata of video is incorrect) + ---------- + cap : cv2.VideoCapture + Opened VideoCapture object + start_frame : int + first frame to consider for reading + end_frame : int + last frame to consider for reading + lazy : bool, optional + read frames lazily (default) or not. Set to False for direct reading (faster, but more memory) + fps : float, optional + hard enforced frames per second number (used when metadata of video is incorrect) + **kwargs : dict, optional + additional keyword arguments passed to get_frame() function - Returns - ------- - time : list - list with valid time stamps in milliseconds. each time stamp belongs to the start of the frame in frame number - frame_number : list - list with valid frame numbers + Returns + ------- + time : list + list with valid time stamps in milliseconds. time stamps belongs to the start of the frame in frame number. + frame_number : list + list with valid frame numbers """ - cap.set(cv2.CAP_PROP_POS_FRAMES, start_frame) + cap.set(cv2.CAP_PROP_POS_FRAMES, np.float64(start_frame)) ret, img = get_frame(cap, **kwargs) n = start_frame time = [] frame_number = [] - if lazy: - frames = None - else: - # already collect the frames - frames = [] + frames = None if lazy else [] while ret: if n > end_frame: break if not lazy: frames.append(img) t1 = cap.get(cv2.CAP_PROP_POS_MSEC) - if fps is not None: - time.append(n*1000./fps) - else: - time.append(t1) - # ret, img = cap.read() # read frame 1 + ... - ret, img = get_frame(cap, **kwargs) # read frame 1 + ... + time.append(n * 1000.0 / fps) if fps is not None else time.append(t1) frame_number.append(n) + n += 1 + ret, img = get_frame(cap, **kwargs) # read frame 1 + ... if ret == False: break - # cv2.imwrite("test_{:04d}.jpg".format(n), img) t2 = cap.get(cv2.CAP_PROP_POS_MSEC) - if t2 <= 0.: - # we can no longer estimate time difference in the last frame read, so stop reading and set end_frame to one frame back + if t2 <= 0.0: + # invalid time difference, stop reading. break - n += 1 - # time[0] = 0 + # do a final check if the last frame(s) are readable by direct seek and read. Sometimes this results in not being + # able to r + last_valid_idx = _check_valid_frames(cap, frame_number) + if last_valid_idx is not None: + time = time[:last_valid_idx] + frame_number = frame_number[:last_valid_idx] + if not lazy: + frames = frames[:last_valid_idx] return time, frame_number, frames def transform_to_bbox(coords, bbox, resolution): - """transforms a set of coordinates defined in crs of bbox, into a set of coordinates in cv2 compatible pixels + """Transform coordinates defined in crs of bbox, into cv2 compatible pixel coordinates. Parameters ---------- @@ -755,20 +1002,18 @@ def transform_to_bbox(coords, bbox, resolution): # first assemble x and y coordinates transform = _get_transform(bbox, resolution) if len(coords[0]) == 3: - xs, ys, zs = zip(*coords) + xs, ys, zs = zip(*coords, strict=False) else: - xs, ys = zip(*coords) + xs, ys = zip(*coords, strict=False) rows, cols = rasterio.transform.rowcol(transform, xs, ys, op=float) - return list(zip(cols, rows)) if len(coords[0]) == 2 else list(zip(cols, rows, zs)) - + return list(zip(cols, rows, strict=False)) if len(coords[0]) == 2 else list(zip(cols, rows, zs, strict=False)) def get_ortho(img, M, shape, flags=cv2.INTER_AREA): - """Reproject an image to a given shape using perspective transformation matrix M + """Reproject an image to a given shape using perspective transformation matrix M. Parameters ---------- - img: np.ndarray image to transform M: np.ndarray @@ -782,6 +1027,7 @@ def get_ortho(img, M, shape, flags=cv2.INTER_AREA): ------- img : np.ndarray reprojected data with shape=shape + """ return cv2.warpPerspective(img, M, shape, flags=flags) @@ -791,10 +1037,8 @@ def get_aoi(dst_corners, resolution=None): Parameters ---------- - M : np.ndarray - Homography matrix - src_corners : dict with 4 (x,y) tuples - names "up_left", "down_left", "up_right", "down_right", source corners + dst_corners : np.ndarray + corners of aoi, in order: upstream-left, downstream-left, downstream-right, upstream-right resolution : float resolution of intended reprojection, used to round the bbox to a whole number of intended pixels @@ -802,10 +1046,8 @@ def get_aoi(dst_corners, resolution=None): ------- bbox : shapely.geometry.Polygon bounding box of aoi (with rotated affine) + """ - # prepare a simple temporary np.array of the src_corners - # assert(_src_corners.shape==(4, 2)), f"a list of lists of 4 coordinates must be given, resulting in (4, 2) shape. " \ - # f"Current shape is {src_corners.shape} " polygon = Polygon(dst_corners) coords = np.array(polygon.exterior.coords) # estimate the angle of the bounding box @@ -815,9 +1057,7 @@ def get_aoi(dst_corners, resolution=None): diff = point2 - point1 angle = np.arctan2(diff[1], diff[0]) # rotate the polygon over this angle to get a proper bounding box - polygon_rotate = rotate( - polygon, -angle, origin=tuple(dst_corners[0]), use_radians=True - ) + polygon_rotate = rotate(polygon, -angle, origin=tuple(dst_corners[0]), use_radians=True) xmin, ymin, xmax, ymax = polygon_rotate.bounds if resolution is not None: xmin = helpers.round_to_multiple(xmin, resolution) @@ -833,34 +1073,33 @@ def get_aoi(dst_corners, resolution=None): def undistort_img(img, camera_matrix, dist_coeffs): - """Lens distortion correction of image based on lens characteristics. + """Correct lens distortion of image based on lens characteristics. + Function by Gerben Gerritsen / Sten Schurer, 2019. Parameters ---------- img : np.ndarray 3D array with image - k1: float, optional - barrel lens distortion parameter (default: 0.) - c: float, optional - optical center (default: 2.) - f: float, optional - focal length (default: 1.) + camera_matrix: np.ndarray + Camera matrix + dist_coeffs: np.ndarray + distortion coefficients Returns ------- img: np.ndarray undistorted img - """ + """ # correct image for lens distortion return cv2.undistort(img, np.array(camera_matrix), np.array(dist_coeffs)) def distort_points(points, camera_matrix, dist_coeffs): - """ - Distorts x, y point locations with provided lens parameters, so that points - can be back projected on original (distorted) frame positions. + """Distort x, y point locations with provided lens parameters. + + Points can be back projected on original (distorted) frame positions. Adapted from https://answers.opencv.org/question/148670/re-distorting-a-set-of-points-after-camera-calibration/ @@ -877,35 +1116,26 @@ def distort_points(points, camera_matrix, dist_coeffs): ------- points : list of lists distorted point coordinates [x, y] as floats - """ - points = np.array(points, dtype='float32') + """ + points = np.array(points, dtype="float32") # ptsTemp = np.array([], dtype='float32') # make empty rotation and translation vectors (we are only undistorting) - rtemp = ttemp = np.array([0, 0, 0], dtype='float32') + rtemp = ttemp = np.array([0, 0, 0], dtype="float32") # normalize the points to be independent of the camera matrix using undistortPoints with no distortion matrix ptsOut = cv2.undistortPoints(points, camera_matrix, None) - #convert points to 3d points + # convert points to 3d points ptsTemp = cv2.convertPointsToHomogeneous(ptsOut) # project them back to image space using the distortion matrix return np.int32( - np.round( - cv2.projectPoints( - ptsTemp, - rtemp, - ttemp, - camera_matrix, - dist_coeffs, - ptsOut - )[0][:,0] - ) - ).tolist(); - + np.round(cv2.projectPoints(ptsTemp, rtemp, ttemp, camera_matrix, dist_coeffs, ptsOut)[0][:, 0]) + ).tolist() def undistort_points(points, camera_matrix, dist_coeffs, reverse=False): - """Undistorts x, y point locations with provided lens parameters, so that points - can be undistorted together with images from that lens. + """Undistort x, y point locations with provided lens parameters. + + points can be undistorted together with images from that lens. Parameters ---------- @@ -915,11 +1145,15 @@ def undistort_points(points, camera_matrix, dist_coeffs, reverse=False): camera matrix dist_coeffs : array-like [4] distortion coefficients + reverse : bool, optional + if set, the distortion will be undone, so that points can be back projected on original (distorted) frame + positions. Returns ------- points : list of lists undistorted point coordinates [x, y] as floats + """ camera_matrix = np.array(camera_matrix) dist_coeffs = np.array(dist_coeffs) @@ -927,9 +1161,6 @@ def undistort_points(points, camera_matrix, dist_coeffs, reverse=False): return distort_points(points, camera_matrix, dist_coeffs) points_undistort = cv2.undistortPoints( - np.expand_dims(np.float32(points), axis=1), - camera_matrix, - dist_coeffs, - P=camera_matrix + np.expand_dims(np.float32(points), axis=1), camera_matrix, dist_coeffs, P=camera_matrix ) return points_undistort[:, 0].tolist() diff --git a/pyorc/service/velocimetry.py b/pyorc/service/velocimetry.py index 3ad79ea..b133a0d 100644 --- a/pyorc/service/velocimetry.py +++ b/pyorc/service/velocimetry.py @@ -493,7 +493,7 @@ def plot(self, **plot_recipes): opts = plot_params["frames"] if plot_params["frames"] is not None else {} f = self.video_obj.get_frames(method="rgb") if mode != "camera": - f = f.frames.project(method=self.proj_method)[n] + f = f[n : n + 1].frames.project(method=self.proj_method)[0] else: f = f[n] p = f.frames.plot(ax=ax, mode=mode, **opts) diff --git a/pyorc/velocimetry/__init__.py b/pyorc/velocimetry/__init__.py new file mode 100644 index 0000000..93f1563 --- /dev/null +++ b/pyorc/velocimetry/__init__.py @@ -0,0 +1,6 @@ +"""pyorc velocimetry methods.""" + +from .ffpiv import get_ffpiv +from .openpiv import get_openpiv, piv + +__all__ = ["get_ffpiv", "piv", "get_openpiv"] diff --git a/pyorc/velocimetry/ffpiv.py b/pyorc/velocimetry/ffpiv.py new file mode 100644 index 0000000..69b0f12 --- /dev/null +++ b/pyorc/velocimetry/ffpiv.py @@ -0,0 +1,181 @@ +"""PIV processing wrappers for FF-PIV.""" + +import gc +import warnings + +import numpy as np +import xarray as xr +from ffpiv import cross_corr, u_v_displacement, window +from tqdm import tqdm + + +def load_frame_chunk(da): + """Load frame chunk into memory. If not successful try to reduce size of frame chunk.""" + da_loaded = da.copy(deep=True) + try: + da_loaded = da.load() + except TypeError: + da_loaded = da[:-1] + da_loaded = load_frame_chunk(da_loaded) + return da_loaded + + +def get_ffpiv( + frames, + y, + x, + dt, + window_size, + overlap, + search_area_size, + res_y, + res_x, + chunksize=None, + memory_factor=2, + engine="numba", +): + """Compute time-resolved Particle Image Velocimetry (PIV) using Fast Fourier Transform (FFT) within FF-PIV. + + This function calculates the velocity field from a sequence of image frames using PIV techniques. The process + involves dividing the images into interrogation windows, performing cross-correlation analysis to capture + displacement, and then calculating the velocity components. The function efficiently handles large datasets by + computing PIV per chunk of frames and manages memory usage. + + The method generally is much faster than OpenPIV because it utilizes parallelized functions implemented in numba. + + Parameters + ---------- + frames : xr.DataArray + image frames to be processed (pyorc.Frames compatible). + y : np.ndarray + Array of expected y-coordinates of velocimetry fields. + x : np.ndarray + Array of x-coordinates. + dt : array_like + Array of time intervals between each frame pair. + window_size : [int, int] + Size of the interrogation window. + overlap : [int, int] + Overlap between interrogation windows. + search_area_size : [int, int] + Size of the search area for cross-correlation. + res_y : float + Spatial resolution in the y-direction. + res_x : float + Spatial resolution in the x-direction. + chunksize : int, optional + if provided, the frames will be treated per chunk with `chunksize` as provided, if not, optimal chunk size is + estimated based on available memory. + memory_factor : float, optional + available memory is divided by this factor to estimate the chunk size. Default is 4. + engine : str, optional + ff-piv engine to use, can be "numpy" or "numba". "numba" is generally much faster. + + Returns + ------- + ds : xarray.Dataset + Dataset containing the signal-to-noise ratio (`s2n`), correlation maxima (`corr`), and velocity + components (`v_x`, `v_y`). + + """ + CHUNK_SIZE_ERROR = ( + "Chunk size with selected nr of chunks ({chunks}) is 2 or less. If you manually " + "selected `chunks={chunks}` then consider increasing chunk size to at least 2, and preferrably more. If memory " + "is limited, consider closing memory intensive applications. If pyorc crashes, then this is due to " + " insufficient memory." + ) + CHUNK_SIZE_WARNING = ( + "Memory availability is poor ({avail_mem} GB). Chunk size is automatically set to {chunksize} to avoid " + "memory issues. If pyorc crashes, then this is due to insufficient memory. Consider to manually set a lower " + "chunk size e.g using `get_piv(engine={engine}, chunk=2)` or `get_piv(engine={engine}, chunk=3)` or close " + "memory intensive applications." + ) + # compute memory availability and size of problem to pipe to ffpiv functions + dim_size = frames[0].shape + req_mem = window.required_memory( + n_frames=len(frames), + dim_size=dim_size, + window_size=window_size, + overlap=overlap, + search_area_size=search_area_size, + ) + if chunksize is None: + # estimate chunk size + avail_mem = window.available_memory() / memory_factor + chunks = int((req_mem // avail_mem) + 1) + chunksize = int(np.ceil((len(frames)) / chunks)) + if chunksize <= 5: + warnings.warn( + CHUNK_SIZE_WARNING.format(avail_mem=avail_mem / 1e9, chunksize=chunksize, engine=engine), stacklevel=2 + ) + chunksize = 5 # hard override, try to manage with 5 + chunks = int(np.ceil((len(frames)) / chunksize)) + if chunksize < 2: + raise OverflowError(CHUNK_SIZE_ERROR.format(chunks=chunks)) + frames_chunks = [frames[np.maximum(chunk * chunksize - 1, 0) : (chunk + 1) * chunksize] for chunk in range(chunks)] + # check if there are chunks that are too small in size, needs to be at least 2 frames per chunk + frames_chunks = [frames_chunk for frames_chunk in frames_chunks if len(frames_chunk) >= 2] + n_rows, n_cols = len(y), len(x) + + # make progress bar + pbar = tqdm(range(len(frames_chunks)), position=0, leave=True) + pbar.set_description("Computing PIV per chunk") + + # Loop over list + ds_piv_chunks = [] # datasets with piv results per chunk + for n in pbar: + da = frames_chunks[n] + # get time slice + da = load_frame_chunk(da) + time = da.time[1:] + dt_chunk = dt.sel(time=time) + # check length again, only if ge 2, assess velocities + if len(da) >= 2: + # perform cross correlation analysis yielding correlations for each interrogation window + x_, y_, corr = cross_corr( + da.values, + window_size=window_size, + overlap=overlap, + search_area_size=search_area_size, + normalize=False, + engine=engine, + verbose=False, + ) + frames_chunks[n] = None + del da + gc.collect() + + # get the maximum correlation per interrogation window + corr_max = np.nanmax(corr, axis=(-1, -2)) + + # get signal-to-noise, whilst suppressing nanmean over empty slice warnings + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=RuntimeWarning) + s2n = corr_max / np.nanmean(corr, axis=(-1, -2)) + + # reshape corr / s2n to the amount of expected rows and columns + s2n = (s2n.reshape(-1, n_rows, n_cols)).astype(np.float32) + corr_max = (corr_max.reshape(-1, n_rows, n_cols)).astype(np.float32) + u, v = u_v_displacement(corr, n_rows, n_cols, engine=engine) + # convert into meter per second and store as float32 to save memory / disk space + u = (u * res_x / np.expand_dims(dt_chunk, (1, 2))).astype(np.float32) + v = (v * res_y / np.expand_dims(dt_chunk, (1, 2))).astype(np.float32) + # put s2n, corr_max, u and v in one xarray dataset, with coordinates time, y and x + ds = xr.Dataset( + { + "s2n": (["time", "y", "x"], s2n), + "corr": (["time", "y", "x"], corr_max), + "v_x": (["time", "y", "x"], u), + "v_y": (["time", "y", "x"], v), + }, + coords={ + "time": time, + "y": y, + "x": x, + }, + ) + # u and v to meter per second + ds_piv_chunks.append(ds) + # concatenate all parts in time + ds = xr.concat(ds_piv_chunks, dim="time") + return ds diff --git a/pyorc/piv_process.py b/pyorc/velocimetry/openpiv.py similarity index 59% rename from pyorc/piv_process.py rename to pyorc/velocimetry/openpiv.py index 5b452f6..7c92725 100644 --- a/pyorc/piv_process.py +++ b/pyorc/velocimetry/openpiv.py @@ -1,17 +1,97 @@ -import openpiv.tools -import openpiv.pyprocess +"""PIV processing wrappers for OpenPIV.""" + +from typing import List, Optional, Tuple, Union + import numpy as np +import openpiv.pyprocess +import openpiv.tools import xarray as xr +__all__ = [ + "get_openpiv", + "piv", +] + + +def get_openpiv(frames, y, x, dt, **kwargs): + """Compute time-resolved Particle Image Velocimetry (PIV) using Fast Fourier Transform (FFT) within OpenPIV. + + Calculates velocity using the OpenPIV algorithms by processing sequential frames + from a dataset and returning the velocity components, signal-to-noise ratio, and + correlation values. The function shifts frames in time and applies the PIV algorithm + to compute flow fields over the specified spatial axes. + + Parameters + ---------- + frames : xarray.Dataset + The input dataset containing time-dependent frames with coordinates. + y : array-like + The spatial coordinates along the y-axis where the outputs should be interpolated. + x : array-like + The spatial coordinates along the x-axis where the outputs should be interpolated. + dt : float + The time step between consecutive frames (used to go from per-frame to per-second displacement). + **kwargs : dict + Additional keyword arguments to be passed to the PIV function. + + Returns + ------- + xarray.Dataset + A dataset containing computed velocity components `v_x` and `v_y`, + signal-to-noise ratios `s2n`, and correlation values `corr`. The dataset + includes updated x and y coordinates representing the flow field grid. + + """ + # first get rid of coordinates that need to be recalculated + coords_drop = list(set(frames.coords) - set(frames.dims)) + frames = frames.drop_vars(coords_drop) + # get frames and shifted frames in time + frames1 = frames.shift(time=1)[1:].chunk({"time": 1}) + frames2 = frames[1:].chunk({"time": 1}) + # retrieve all data arrays + v_x, v_y, s2n, corr = xr.apply_ufunc( + piv, + frames1, + frames2, + dt, + kwargs=kwargs, + input_core_dims=[["y", "x"], ["y", "x"], []], + output_core_dims=[["new_y", "new_x"]] * 4, + dask_gufunc_kwargs={ + "output_sizes": {"new_y": len(y), "new_x": len(x)}, + }, + output_dtypes=[np.float32] * 4, + vectorize=True, + keep_attrs=True, + dask="parallelized", + ) + # merge all DataArrays in one Dataset + ds = xr.merge([v_x.rename("v_x"), v_y.rename("v_y"), s2n.rename("s2n"), corr.rename("corr")]).rename( + {"new_x": "x", "new_y": "y"} + ) + # add y and x-axis values + ds["y"] = y + ds["x"] = x + return ds + def piv( - frame_a, frame_b, dt, res_x=0.01, res_y=0.01, search_area_size=30, correlation=True, window_size=None, overlap=None, - **kwargs + frame_a, + frame_b, + dt, + res_x=0.01, + res_y=0.01, + search_area_size=30, + window_size=None, + overlap=None, + **kwargs, ): - """PIV analysis following keyword arguments from openpiv. This function also computes the correlations per - interrogation window, so that poorly correlated values can be filtered out. Furthermore, the resolution is used to convert - pixel per second velocity estimates, into meter per second velocity estimates. The centre of search area columns - and rows are also returned so that a georeferenced grid can be written from the results. + """Perform PIV analysis on two sequential frames following keyword arguments from openpiv. + + This function also computes the correlations per interrogation window, so that poorly correlated values can be + filtered out. Furthermore, the resolution is used to convert pixel per second velocity estimates, into meter per + second velocity estimates. The centre of search area columns and rows are also returned so that a georeferenced + grid can be written from the results. Note: Typical openpiv kwargs are for instance window_size=60, overlap=30, search_area_size=60, dt=1./25 @@ -22,26 +102,25 @@ def piv( first frame frame_b: np.ndarray (2D) second frame + dt : float + time resolution in seconds. res_x: float, optional resolution of x-dir pixels in a user-defined unit per pixel (e.g. m pixel-1) Default: 0.01 res_y: float, optional resolution of y-dir pixels in a user-defined unit per pixel (e.g. m pixel-1) Default: 0.01 search_area_size: int, optional length of subsetted matrix to search for correlations (default: 30) - correlation: bool, optional - if True (default), the best found correlation coefficient is also returned for each interrogation window_size: int, optional - size of interrogation window in amount of pixels. If not set, it is set equal to search_area_size (default: None). + size of interrogation window in amount of pixels. If not set, it is set equal to search_area_size + (default: None). overlap: int, optional - length of overlap between interrogation windows. If not set, this defaults to 50% of the window_size parameter (default: None). - **kwargs: keyword arguments related to openpiv. See openpiv manual for further information + length of overlap between interrogation windows. If not set, this defaults to 50% of the window_size parameter + (default: None). + **kwargs: dict + keyword arguments related to openpiv. See openpiv manual for further information Returns ------- - cols: np.ndarray (1D) - col number of centre of interrogation windows - rows: np.ndarray (1D) - row number of centre of interrogation windows v_x: np.ndarray(2D) raw x-dir velocities [m s-1] in interrogation windows (requires filtering to get valid velocities) v_y: np.ndarray (2D) @@ -51,118 +130,34 @@ def piv( (method="peak2mean") or second to maximum correlation (method="peak2peak") found within search area corr: np.ndarray (2D) correlation values in interrogation windows + """ - # if isinstance(frame_a, xr.core.dataarray.DataArray): - # frame_a = frame_a.values - # if isinstance(frame_b, xr.core.dataarray.DataArray): - # frame_b = frame_b.values window_size = search_area_size if window_size is None else window_size - overlap = int(round(window_size)/2) if overlap is None else overlap - # v_x, v_y, s2n = openpiv.pyprocess.extended_search_area_piv( - # frame_a, frame_b, dt=dt, search_area_size=search_area_size, overlap=overlap, window_size=window_size, **kwargs - # ) + overlap = int(round(window_size) / 2) if overlap is None else overlap # modified version of extended_search_area_piv to accomodate exporting corr v_x, v_y, s2n, corr = extended_search_area_piv( - frame_a, - frame_b, - dt=dt, - search_area_size=search_area_size, - overlap=overlap, - window_size=window_size, - **kwargs + frame_a, frame_b, dt=dt, search_area_size=search_area_size, overlap=overlap, window_size=window_size, **kwargs ) return v_x * res_x, v_y * res_y, s2n, corr -def get_piv_size(**kwargs): - return openpiv.pyprocess.get_coordinates(**kwargs) - - -def piv_corr( - frame_a, - frame_b, - search_area_size, - overlap, - window_size=None, - correlation_method="circular", - normalized_correlation=True, -): - """Estimate the maximum correlation in piv analyses over two frames. Function taken from openpiv library. - This is a temporary fix. If correlation can be exported from openpiv, then this function can be removed. - - Parameters - ---------- - frame_a: np.ndarray (2D) - first frame - frame_b: np.ndarray (2D) - second frame - overlap: int, optional - length of overlap between interrogation windows. If not set, this defaults to 50% of the window_size parameter (default: None). - window_size: int, optional - size of interrogation window in amount of pixels. If not set, it is set equal to search_area_size (default: None). - search_area_size: int, optional - length of subsetted matrix to search for correlations (default: 30) - correlation_method: str, optional - method for correlation used, as openpiv setting (default: "circular") - normalized_correlation: boolean, optional - if True (default) return a normalized correlation number between zero and one, else not normalized - - Returns - ------- - corr : np.ndarray (2D) - maximum correlations found in search areas - """ - # extract the correlation matrix - window_size = search_area_size if window_size is None else window_size - # get field shape - - n_rows, n_cols = openpiv.pyprocess.get_field_shape( - frame_a.shape, search_area_size, overlap - ) - - # We implement the new vectorized code - aa = openpiv.pyprocess.moving_window_array(frame_a, search_area_size, overlap) - bb = openpiv.pyprocess.moving_window_array(frame_b, search_area_size, overlap) - - if search_area_size > window_size: - # before masking with zeros we need to remove - # edges - - aa = openpiv.pyprocess.normalize_intensity(aa) - bb = openpiv.pyprocess.normalize_intensity(bb) - - mask = np.zeros((search_area_size, search_area_size)).astype(aa.dtype) - pad = np.int((search_area_size - window_size) / 2) - mask[slice(pad, search_area_size - pad), slice(pad, search_area_size - pad)] = 1 - mask = np.broadcast_to(mask, aa.shape) - aa *= mask - - corr = openpiv.pyprocess.fft_correlate_images( - aa, - bb, - correlation_method=correlation_method, - normalized_correlation=normalized_correlation, - ) - corr = corr.max(axis=-1).max(axis=-1).reshape((n_rows, n_cols)) - return corr - - def extended_search_area_piv( - frame_a, - frame_b, - window_size, - overlap=0, - dt=1.0, - search_area_size=None, - correlation_method="circular", - subpixel_method="gaussian", - sig2noise_method='peak2mean', - width=2, - normalized_correlation=True, - use_vectorized=False, -): - """Standard PIV cross-correlation algorithm, with an option for - extended area search that increased dynamic range. The search region + frame_a: np.ndarray, + frame_b: np.ndarray, + window_size: int, + overlap: int = 0, + dt: float = 1.0, + search_area_size: Optional[Union[Tuple[int, int], List[int], int]] = None, + correlation_method: str = "circular", + subpixel_method: str = "gaussian", + sig2noise_method: Optional[str] = "peak2mean", + width: int = 2, + normalized_correlation: bool = True, + use_vectorized: bool = False, +) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """Perform PIV cross-correlation analysis. + + Extended area search can be used to increased dynamic range. The search region in the second frame is larger than the interrogation window size in the first frame. For Cython implementation see openpiv.process.extended_search_area_piv @@ -223,6 +218,9 @@ def extended_search_area_piv( the correlation map will be normalized. It's slower but could be more robust + use_vectorized : bool + If set, vectorization is used to speed up analysis. + Returns ------- u : 2d np.ndarray @@ -233,10 +231,12 @@ def extended_search_area_piv( a two dimensional array containing the v velocity component, in pixels/seconds. - sig2noise : 2d np.ndarray, ( optional: only if sig2noise_method != None ) + sig2noise : 2d np.ndarray ( optional: only if sig2noise_method != None ) a two dimensional array the signal to noise ratio for each window pair. + corr : 2d np.ndarray + a two dimensional array with the maximum correlation values found in each interrogation window. The implementation of the one-step direct correlation with different size of the interrogation window and the search area. The increased @@ -265,8 +265,7 @@ def extended_search_area_piv( overlap = [overlap, overlap] # check the inputs for validity - if search_area_size is None: - search_area_size = window_size + search_area_size = window_size if search_area_size is None else search_area_size if overlap[0] >= window_size[0] or overlap[1] >= window_size[1]: raise ValueError("Overlap has to be smaller than the window_size") @@ -301,37 +300,32 @@ def extended_search_area_piv( mask = np.zeros((search_area_size[0], search_area_size[1])).astype(aa.dtype) pady = int((search_area_size[0] - window_size[0]) / 2) padx = int((search_area_size[1] - window_size[1]) / 2) - mask[slice(pady, search_area_size[0] - pady), - slice(padx, search_area_size[1] - padx)] = 1 + mask[slice(pady, search_area_size[0] - pady), slice(padx, search_area_size[1] - padx)] = 1 mask = np.broadcast_to(mask, aa.shape) aa *= mask - corr = openpiv.pyprocess.fft_correlate_images(aa, bb, - correlation_method=correlation_method, - normalized_correlation=normalized_correlation) + corr = openpiv.pyprocess.fft_correlate_images( + aa, bb, correlation_method=correlation_method, normalized_correlation=normalized_correlation + ) if use_vectorized == True: - u, v = openpiv.pyprocess.vectorized_correlation_to_displacements(corr, n_rows, n_cols, - subpixel_method=subpixel_method) + u, v = openpiv.pyprocess.vectorized_correlation_to_displacements( + corr, n_rows, n_cols, subpixel_method=subpixel_method + ) else: - u, v = openpiv.pyprocess.correlation_to_displacement(corr, n_rows, n_cols, - subpixel_method=subpixel_method) + u, v = openpiv.pyprocess.correlation_to_displacement(corr, n_rows, n_cols, subpixel_method=subpixel_method) # return output depending if user wanted sig2noise information + sig2noise = np.zeros_like(u) * np.nan if sig2noise_method is not None: if use_vectorized == True: sig2noise = openpiv.pyprocess.vectorized_sig2noise_ratio( corr, sig2noise_method=sig2noise_method, width=width ) else: - sig2noise = openpiv.pyprocess.sig2noise_ratio( - corr, sig2noise_method=sig2noise_method, width=width - ) - else: - sig2noise = np.zeros_like(u) * np.nan + sig2noise = openpiv.pyprocess.sig2noise_ratio(corr, sig2noise_method=sig2noise_method, width=width) sig2noise = sig2noise.reshape(n_rows, n_cols) # extended code for exporting the maximum found value for corr corr = corr.max(axis=-1).max(axis=-1).reshape((n_rows, n_cols)) return u / dt, v / dt, sig2noise, corr - diff --git a/pyproject.toml b/pyproject.toml index d95b2bd..f17b71d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,7 @@ dependencies = [ "cython; platform_machine == 'armv7l'", "dask", "descartes", + "ffpiv", "flox", "geojson", "geopandas", @@ -56,11 +57,9 @@ classifiers = [ dynamic = ['version', 'description'] [project.optional-dependencies] -io = [ -] extra = [ + "notebook", "cartopy", - "notebook" ] test = [ "pytest", @@ -80,8 +79,7 @@ docs = [ "matplotlib", ] -full = ["pyopenrivercam[io,extra,dev,test,doc]"] -slim = ["pyopenrivercam[io]"] +full = ["pyopenrivercam[extra,test,docs]"] [project.urls] Source = "https://github.com/localdevices/pyorc" diff --git a/tests/conftest.py b/tests/conftest.py index 8a5d86e..0f6103d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,175 +1,171 @@ import functools import json -import numpy as np import os -import pytest -import pandas as pd -import shutil -from shapely import wkt -import pyorc import sys + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import pytest from click.testing import CliRunner +from matplotlib import backend_bases +from shapely import wkt +import pyorc EXAMPLE_DATA_DIR = os.path.join(os.path.split(__file__)[0], "..", "examples") + # fixtures with input and output files and folders -@pytest.fixture +@pytest.fixture() def calib_video(): return os.path.join(EXAMPLE_DATA_DIR, "camera_calib", "camera_calib_720p.mkv") -@pytest.fixture +@pytest.fixture() def cross_section(): fn = os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_cross_section.csv") return pd.read_csv(fn) -@pytest.fixture +@pytest.fixture() def gcps_fn(): fn = os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_gcps.geojson") return fn -@pytest.fixture +@pytest.fixture() def cam_config_fn(): return os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere.json") -@pytest.fixture + +@pytest.fixture() def cam_config_6gcps_fn(): return os.path.join(EXAMPLE_DATA_DIR, "geul", "dk_cam_config.json") -@pytest.fixture +@pytest.fixture() def recipe_yml(): return os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_test.yml") -@pytest.fixture +@pytest.fixture() def cli_output_dir(): dir = os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "outputs") if not os.path.isdir(dir): os.makedirs(dir) - yield dir + return dir # if os.path.isdir(dir): # shutil.rmtree(dir) -@pytest.fixture + +@pytest.fixture() def cli_prefix(): return "test_" -@pytest.fixture + +@pytest.fixture() def cli_recipe_fn(): return os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_test.yml") -@pytest.fixture +@pytest.fixture() def cli_cam_config_output(): cam_config_fn = os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_cli.json") - yield cam_config_fn + return cam_config_fn # remove after test # os.remove(cam_config_fn) -@pytest.fixture -def cli_click_event(mocker): - event_props = { - "xdata": 5, - "ydata": 5, - } +@pytest.fixture() +def cli_click_event(mocker): + # event_props = { + # "xdata": 5, + # "ydata": 5, + # } event = backend_bases.MouseEvent( - name="click", canvas=pyplot.axes(), x=5, y=5, + name="click", + canvas=plt.axes(), + x=5, + y=5, ) - # mocker.patch( # "matplotlib.backend_bases.MouseEvent", # return_value=event_props # ) return event -@pytest.fixture + +@pytest.fixture() def gcps_src(): - return [ - [1421, 1001], - [1251, 460], - [421, 432], - [470, 607] - ] + return [[1421, 1001], [1251, 460], [421, 432], [470, 607]] -@pytest.fixture +@pytest.fixture() def gcps_dst(): return [ [642735.8076, 8304292.1190], # lowest right coordinate [642737.5823, 8304295.593], # highest right coordinate [642732.7864, 8304298.4250], # highest left coordinate - [642732.6705, 8304296.8580] # highest right coordinate + [642732.6705, 8304296.8580], # highest right coordinate ] # sample data, for Ngwerere -@pytest.fixture +@pytest.fixture() def gcps(gcps_src, gcps_dst): - return dict( - src=gcps_src, - dst=gcps_dst, - z_0=1182.2, - h_ref=0. - ) + return dict(src=gcps_src, dst=gcps_dst, z_0=1182.2, h_ref=0.0) -@pytest.fixture +@pytest.fixture() def lens_position(): return [642732.6705, 8304289.010, 1188.5] -@pytest.fixture +@pytest.fixture() def bbox(): - return wkt.loads("POLYGON ((642730.233168765 8304293.351276383, 642731.5013330225 8304302.039208209, 642739.2789120832 8304300.903926767, 642738.0107478257 8304292.215994941, 642730.233168765 8304293.351276383))") + return wkt.loads( + "POLYGON ((642730.233168765 8304293.351276383, 642731.5013330225 8304302.039208209, 642739.2789120832 8304300.903926767, 642738.0107478257 8304292.215994941, 642730.233168765 8304293.351276383))" # noqa: E501 + ) -@pytest.fixture + +@pytest.fixture() def bbox_6gcps(): - return wkt.loads("POLYGON ((192103.06271249574 313152.336519752, 192096.59215064772 313165.9688317118, 192104.64144816675 313169.78942190844, 192111.11201001477 313156.1571099486, 192103.06271249574 313152.336519752))") + return wkt.loads( + "POLYGON ((192103.06271249574 313152.336519752, 192096.59215064772 313165.9688317118, 192104.64144816675 313169.78942190844, 192111.11201001477 313156.1571099486, 192103.06271249574 313152.336519752))" # noqa: E501 + ) -@pytest.fixture +@pytest.fixture() def corners(): return [ [500, 800], [400, 600], [1200, 550], - [1350, 650] + [1350, 650], # [292, 817], # [50, 166], # [1200, 236], # [1600, 834] ] -@pytest.fixture + +@pytest.fixture() def corners_6gcps(): - return [ - [390, 440], - [1060, 160], - [1800, 270], - [1500, 880] - ] + return [[390, 440], [1060, 160], [1800, 270], [1500, 880]] -@pytest.fixture +@pytest.fixture() def lens_pars(): - return { - "k1": 0, - "c": 2.0, - "focal_length": 1550. - } + return {"k1": 0, "c": 2.0, "focal_length": 1550.0} -@pytest.fixture +@pytest.fixture() def camera_matrix(): - return np.array([[1550., 0., 960.], [0., 1550., 540.], [0., 0., 1.]]) + return np.array([[1550.0, 0.0, 960.0], [0.0, 1550.0, 540.0], [0.0, 0.0, 1.0]]) -@pytest.fixture +@pytest.fixture() def cam_config(gcps, lens_position, lens_pars, corners): return pyorc.CameraConfig( height=1080, @@ -180,27 +176,24 @@ def cam_config(gcps, lens_position, lens_pars, corners): corners=corners, window_size=25, resolution=0.01, - crs=32735 - ) + crs=32735, + ) + -@pytest.fixture +@pytest.fixture() def cam_config_6gcps(cam_config_6gcps_fn): # load in memory return pyorc.load_camera_config(cam_config_6gcps_fn) -@pytest.fixture + +@pytest.fixture() def cam_config_without_aoi(lens_position, gcps): return pyorc.CameraConfig( - height=1080, - width=1920, - lens_position=lens_position, - gcps=gcps, - window_size=25, - resolution=0.01, - crs=32735 - ) + height=1080, width=1920, lens_position=lens_position, gcps=gcps, window_size=25, resolution=0.01, crs=32735 + ) -@pytest.fixture + +@pytest.fixture() def cam_config_calib(): return pyorc.CameraConfig( height=720, @@ -208,183 +201,176 @@ def cam_config_calib(): ) -@pytest.fixture +@pytest.fixture() def dist_coeffs(): - return np.array([[0.], [0.], [0.], [0.]]) + return np.array([[0.0], [0.0], [0.0], [0.0]]) -@pytest.fixture +@pytest.fixture() def h_a(): - return 0. + return 0.0 -@pytest.fixture +@pytest.fixture() def cam_config_dict(): - return {'height': 1080, - 'width': 1920, - 'crs': 'PROJCRS["WGS 84 / UTM zone 35S",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["UTM zone 35S",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",27,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",10000000,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["Between 24°E and 30°E, southern hemisphere between 80°S and equator, onshore and offshore. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe."],BBOX[-80,24,0,30]],ID["EPSG",32735]]', - 'resolution': 0.01, - 'lens_position': [642732.6705, 8304289.01, 1188.5], - 'gcps': { - 'src': [[1421, 1001], [1251, 460], [421, 432], [470, 607]], - 'dst': [[642735.8076, 8304292.119], [642737.5823, 8304295.593], [642732.7864, 8304298.425], [642732.6705, 8304296.858]], - 'h_ref': 0.0, - 'z_0': 1182.2 - }, - 'window_size': 25, - 'is_nadir': False - + return { + "height": 1080, + "width": 1920, + "crs": 'PROJCRS["WGS 84 / UTM zone 35S",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["UTM zone 35S",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",27,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",10000000,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["Between 24°E and 30°E, southern hemisphere between 80°S and equator, onshore and offshore. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe."],BBOX[-80,24,0,30]],ID["EPSG",32735]]', # noqa: E501 + "resolution": 0.01, + "lens_position": [642732.6705, 8304289.01, 1188.5], + "gcps": { + "src": [[1421, 1001], [1251, 460], [421, 432], [470, 607]], + "dst": [ + [642735.8076, 8304292.119], + [642737.5823, 8304295.593], + [642732.7864, 8304298.425], + [642732.6705, 8304296.858], + ], + "h_ref": 0.0, + "z_0": 1182.2, + }, + "window_size": 25, + "is_nadir": False, } -@pytest.fixture +@pytest.fixture() def cam_config_str(): - # return '{\n "crs": "PROJCRS[\\"WGS 84 / UTM zone 35S\\",BASEGEOGCRS[\\"WGS 84\\",ENSEMBLE[\\"World Geodetic System 1984 ensemble\\",MEMBER[\\"World Geodetic System 1984 (Transit)\\"],MEMBER[\\"World Geodetic System 1984 (G730)\\"],MEMBER[\\"World Geodetic System 1984 (G873)\\"],MEMBER[\\"World Geodetic System 1984 (G1150)\\"],MEMBER[\\"World Geodetic System 1984 (G1674)\\"],MEMBER[\\"World Geodetic System 1984 (G1762)\\"],MEMBER[\\"World Geodetic System 1984 (G2139)\\"],ELLIPSOID[\\"WGS 84\\",6378137,298.257223563,LENGTHUNIT[\\"metre\\",1]],ENSEMBLEACCURACY[2.0]],PRIMEM[\\"Greenwich\\",0,ANGLEUNIT[\\"degree\\",0.0174532925199433]],ID[\\"EPSG\\",4326]],CONVERSION[\\"UTM zone 35S\\",METHOD[\\"Transverse Mercator\\",ID[\\"EPSG\\",9807]],PARAMETER[\\"Latitude of natural origin\\",0,ANGLEUNIT[\\"degree\\",0.0174532925199433],ID[\\"EPSG\\",8801]],PARAMETER[\\"Longitude of natural origin\\",27,ANGLEUNIT[\\"degree\\",0.0174532925199433],ID[\\"EPSG\\",8802]],PARAMETER[\\"Scale factor at natural origin\\",0.9996,SCALEUNIT[\\"unity\\",1],ID[\\"EPSG\\",8805]],PARAMETER[\\"False easting\\",500000,LENGTHUNIT[\\"metre\\",1],ID[\\"EPSG\\",8806]],PARAMETER[\\"False northing\\",10000000,LENGTHUNIT[\\"metre\\",1],ID[\\"EPSG\\",8807]]],CS[Cartesian,2],AXIS[\\"(E)\\",east,ORDER[1],LENGTHUNIT[\\"metre\\",1]],AXIS[\\"(N)\\",north,ORDER[2],LENGTHUNIT[\\"metre\\",1]],USAGE[SCOPE[\\"Engineering survey, topographic mapping.\\"],AREA[\\"Between 24\\u00b0E and 30\\u00b0E, southern hemisphere between 80\\u00b0S and equator, onshore and offshore. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe.\\"],BBOX[-80,24,0,30]],ID[\\"EPSG\\",32735]]",\n "resolution": 0.01,\n "lens_position": [\n 642732.6705,\n 8304289.01,\n 1188.5\n ],\n "gcps": {\n "src": [\n [\n 1421,\n 1001\n ],\n [\n 1251,\n 460\n ],\n [\n 421,\n 432\n ],\n [\n 470,\n 607\n ]\n ],\n "dst": [\n [\n 642735.8076,\n 8304292.119\n ],\n [\n 642737.5823,\n 8304295.593\n ],\n [\n 642732.7864,\n 8304298.425\n ],\n [\n 642732.6705,\n 8304296.858\n ]\n ],\n "h_ref": 0.0,\n "z_0": 1182.2\n },\n "lens_pars": {\n "k1": 0,\n "c": 2.0,\n "f": 1.0\n },\n "window_size": 25,\n "corners": [\n [\n 292,\n 817\n ],\n [\n 50,\n 166\n ],\n [\n 1200,\n 236\n ],\n [\n 1600,\n 834\n ]\n ]\n}' - return '{\n "height": "1080",\n "width": "1920",\n "crs": "PROJCRS[\\"WGS 84 / UTM zone 35S\\",BASEGEOGCRS[\\"WGS 84\\",ENSEMBLE[\\"World Geodetic System 1984 ensemble\\",MEMBER[\\"World Geodetic System 1984 (Transit)\\"],MEMBER[\\"World Geodetic System 1984 (G730)\\"],MEMBER[\\"World Geodetic System 1984 (G873)\\"],MEMBER[\\"World Geodetic System 1984 (G1150)\\"],MEMBER[\\"World Geodetic System 1984 (G1674)\\"],MEMBER[\\"World Geodetic System 1984 (G1762)\\"],MEMBER[\\"World Geodetic System 1984 (G2139)\\"],ELLIPSOID[\\"WGS 84\\",6378137,298.257223563,LENGTHUNIT[\\"metre\\",1]],ENSEMBLEACCURACY[2.0]],PRIMEM[\\"Greenwich\\",0,ANGLEUNIT[\\"degree\\",0.0174532925199433]],ID[\\"EPSG\\",4326]],CONVERSION[\\"UTM zone 35S\\",METHOD[\\"Transverse Mercator\\",ID[\\"EPSG\\",9807]],PARAMETER[\\"Latitude of natural origin\\",0,ANGLEUNIT[\\"degree\\",0.0174532925199433],ID[\\"EPSG\\",8801]],PARAMETER[\\"Longitude of natural origin\\",27,ANGLEUNIT[\\"degree\\",0.0174532925199433],ID[\\"EPSG\\",8802]],PARAMETER[\\"Scale factor at natural origin\\",0.9996,SCALEUNIT[\\"unity\\",1],ID[\\"EPSG\\",8805]],PARAMETER[\\"False easting\\",500000,LENGTHUNIT[\\"metre\\",1],ID[\\"EPSG\\",8806]],PARAMETER[\\"False northing\\",10000000,LENGTHUNIT[\\"metre\\",1],ID[\\"EPSG\\",8807]]],CS[Cartesian,2],AXIS[\\"(E)\\",east,ORDER[1],LENGTHUNIT[\\"metre\\",1]],AXIS[\\"(N)\\",north,ORDER[2],LENGTHUNIT[\\"metre\\",1]],USAGE[SCOPE[\\"Engineering survey, topographic mapping.\\"],AREA[\\"Between 24\\u00b0E and 30\\u00b0E, southern hemisphere between 80\\u00b0S and equator, onshore and offshore. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe.\\"],BBOX[-80,24,0,30]],ID[\\"EPSG\\",32735]]",\n "resolution": "0.01",\n "lens_position": "[642732.6705, 8304289.01, 1188.5]",\n "gcps": "{\'src\': [[1421, 1001], [1251, 460], [421, 432], [470, 607]], \'dst\': [[642735.8076, 8304292.119], [642737.5823, 8304295.593], [642732.7864, 8304298.425], [642732.6705, 8304296.858]], \'h_ref\': 0.0, \'z_0\': 1182.2}",\n "dist_coeffs": "[[0.]\\n [0.]\\n [0.]\\n [0.]]",\n "camera_matrix": "[[ 1. 0. 960.]\\n [ 0. 1. 540.]\\n [ 0. 0. 1.]]",\n "window_size": "25",\n "bbox": "POLYGON ((642730.15387931 8304292.596551724, 642731.0625 8304303.5, 642739.4004310342 8304302.805172414, 642738.4918103442 8304291.901724137, 642730.15387931 8304292.596551724))"\n}' + return '{\n "height": "1080",\n "width": "1920",\n "crs": "PROJCRS[\\"WGS 84 / UTM zone 35S\\",BASEGEOGCRS[\\"WGS 84\\",ENSEMBLE[\\"World Geodetic System 1984 ensemble\\",MEMBER[\\"World Geodetic System 1984 (Transit)\\"],MEMBER[\\"World Geodetic System 1984 (G730)\\"],MEMBER[\\"World Geodetic System 1984 (G873)\\"],MEMBER[\\"World Geodetic System 1984 (G1150)\\"],MEMBER[\\"World Geodetic System 1984 (G1674)\\"],MEMBER[\\"World Geodetic System 1984 (G1762)\\"],MEMBER[\\"World Geodetic System 1984 (G2139)\\"],ELLIPSOID[\\"WGS 84\\",6378137,298.257223563,LENGTHUNIT[\\"metre\\",1]],ENSEMBLEACCURACY[2.0]],PRIMEM[\\"Greenwich\\",0,ANGLEUNIT[\\"degree\\",0.0174532925199433]],ID[\\"EPSG\\",4326]],CONVERSION[\\"UTM zone 35S\\",METHOD[\\"Transverse Mercator\\",ID[\\"EPSG\\",9807]],PARAMETER[\\"Latitude of natural origin\\",0,ANGLEUNIT[\\"degree\\",0.0174532925199433],ID[\\"EPSG\\",8801]],PARAMETER[\\"Longitude of natural origin\\",27,ANGLEUNIT[\\"degree\\",0.0174532925199433],ID[\\"EPSG\\",8802]],PARAMETER[\\"Scale factor at natural origin\\",0.9996,SCALEUNIT[\\"unity\\",1],ID[\\"EPSG\\",8805]],PARAMETER[\\"False easting\\",500000,LENGTHUNIT[\\"metre\\",1],ID[\\"EPSG\\",8806]],PARAMETER[\\"False northing\\",10000000,LENGTHUNIT[\\"metre\\",1],ID[\\"EPSG\\",8807]]],CS[Cartesian,2],AXIS[\\"(E)\\",east,ORDER[1],LENGTHUNIT[\\"metre\\",1]],AXIS[\\"(N)\\",north,ORDER[2],LENGTHUNIT[\\"metre\\",1]],USAGE[SCOPE[\\"Engineering survey, topographic mapping.\\"],AREA[\\"Between 24\\u00b0E and 30\\u00b0E, southern hemisphere between 80\\u00b0S and equator, onshore and offshore. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe.\\"],BBOX[-80,24,0,30]],ID[\\"EPSG\\",32735]]",\n "resolution": "0.01",\n "lens_position": "[642732.6705, 8304289.01, 1188.5]",\n "gcps": "{\'src\': [[1421, 1001], [1251, 460], [421, 432], [470, 607]], \'dst\': [[642735.8076, 8304292.119], [642737.5823, 8304295.593], [642732.7864, 8304298.425], [642732.6705, 8304296.858]], \'h_ref\': 0.0, \'z_0\': 1182.2}",\n "dist_coeffs": "[[0.]\\n [0.]\\n [0.]\\n [0.]]",\n "camera_matrix": "[[ 1. 0. 960.]\\n [ 0. 1. 540.]\\n [ 0. 0. 1.]]",\n "window_size": "25",\n "bbox": "POLYGON ((642730.15387931 8304292.596551724, 642731.0625 8304303.5, 642739.4004310342 8304302.805172414, 642738.4918103442 8304291.901724137, 642730.15387931 8304292.596551724))"\n}' # noqa: E501 -@pytest.fixture +@pytest.fixture() def vid_file(): return os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_20191103.mp4") -@pytest.fixture +@pytest.fixture() def vid_file_6gcps(): return os.path.join(EXAMPLE_DATA_DIR, "geul", "dk_control.mp4") -@pytest.fixture +@pytest.fixture() def vid(vid_file): vid = pyorc.Video( vid_file, start_frame=0, end_frame=2, ) - yield vid + return vid -@pytest.fixture +@pytest.fixture() def vid_6gcps_cam_config(vid_file_6gcps, cam_config_6gcps): - vid = pyorc.Video( - vid_file_6gcps, - start_frame=0, - end_frame=2, - camera_config=cam_config_6gcps, - h_a=92.36 - ) - yield vid + vid = pyorc.Video(vid_file_6gcps, start_frame=0, end_frame=2, camera_config=cam_config_6gcps, h_a=92.36) + return vid -@pytest.fixture +@pytest.fixture() def vid_cam_config(cam_config): vid = pyorc.Video( os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_20191103.mp4"), start_frame=0, end_frame=2, camera_config=cam_config, - h_a=0. + h_a=0.0, ) - yield vid + return vid -@pytest.fixture + +@pytest.fixture() def vid_cam_config_nonlazy(cam_config): vid = pyorc.Video( os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_20191103.mp4"), start_frame=0, end_frame=2, camera_config=cam_config, - h_a=0., - lazy=False + h_a=0.0, + lazy=False, ) - yield vid + return vid -@pytest.fixture +@pytest.fixture() def vid_cam_config_shift(cam_config): vid = pyorc.Video( os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_20191103.mp4"), start_frame=2, end_frame=4, camera_config=cam_config, - h_a=0. + h_a=0.0, ) - yield vid - + return vid -@pytest.fixture +@pytest.fixture() def vid_cam_config_stabilize(cam_config): vid = pyorc.Video( - os.path.join( - EXAMPLE_DATA_DIR, - "ngwerere", - "ngwerere_20191103.mp4" - ), + os.path.join(EXAMPLE_DATA_DIR, "ngwerere", "ngwerere_20191103.mp4"), start_frame=0, end_frame=20, camera_config=cam_config, - h_a=0., + h_a=0.0, stabilize=[ [400, 1080], [170, 0], [1000, 0], [1750, 1080], - ] # coordinates for which outside area is meant for stabilization + ], # coordinates for which outside area is meant for stabilization ) - yield vid + return vid -@pytest.fixture +@pytest.fixture() def frame_rgb(vid_cam_config): return vid_cam_config.get_frame(0, method="rgb") -@pytest.fixture +@pytest.fixture() def frames_grayscale(vid_cam_config): return vid_cam_config.get_frames() -@pytest.fixture +@pytest.fixture() def frames_grayscale_shift(vid_cam_config_shift): return vid_cam_config_shift.get_frames() - -@pytest.fixture +@pytest.fixture() def frames_rgb_stabilize(vid_cam_config_stabilize): return vid_cam_config_stabilize.get_frames(method="rgb") -@pytest.fixture +@pytest.fixture() def frames_rgb(vid_cam_config): return vid_cam_config.get_frames(method="rgb") -@pytest.fixture +@pytest.fixture() def frames_proj(frames_grayscale): return frames_grayscale.frames.project() -@pytest.fixture +@pytest.fixture() def ani_mp4(): yield "temp.mp4" os.remove("temp.mp4") -@pytest.fixture +@pytest.fixture() def piv(frames_proj): # provide a short piv object return frames_proj.frames.get_piv() -@pytest.fixture +@pytest.fixture() def piv_transect(piv, cross_section): x, y, z = cross_section["x"], cross_section["y"], cross_section["z"] # provide a short piv object return piv.velocimetry.get_transect(x, y, z) -@pytest.fixture +@pytest.fixture() def cli_obj(): """Yield a click.testing.CliRunner to invoke the CLI.""" class_ = CliRunner @@ -396,29 +382,34 @@ def invoke_wrapper(f): failures. """ + @functools.wraps(f) def wrapper(*args, **kwargs): - echo = kwargs.pop('echo', False) + echo = kwargs.pop("echo", False) result = f(*args, **kwargs) if echo is True: sys.stdout.write(result.output) return result + return wrapper + class_.invoke = invoke_wrapper(class_.invoke) cli_runner = class_() - yield cli_runner + return cli_runner -@pytest.fixture +@pytest.fixture() def recipe(recipe_yml): from pyorc.cli import cli_utils + return cli_utils.parse_recipe("a", "b", recipe_yml) -@pytest.fixture +@pytest.fixture() def recipe_geojson(recipe_yml): from pyorc.cli import cli_utils + recipe = cli_utils.parse_recipe("a", "b", recipe_yml) for t in recipe["transect"]: if t != "write": @@ -430,7 +421,6 @@ def recipe_geojson(recipe_yml): return recipe - # @pytest.fixture # def velocity_flow_processor(recipe, vid_file, cam_config_fn, cli_prefix, cli_output_dir): # return pyorc.service.VelocityFlowProcessor( diff --git a/tests/test_frames.py b/tests/test_frames.py index 5a18401..c74c888 100644 --- a/tests/test_frames.py +++ b/tests/test_frames.py @@ -1,9 +1,10 @@ -import pytest -import numpy as np import matplotlib.pyplot as plt +import numpy as np +import pytest + @pytest.mark.parametrize( - "frames, resolution, method, dims, shape, kwargs", + ("frames", "resolution", "method", "dims", "shape", "kwargs"), [ ("frames_grayscale", 0.25, "numpy", 3, (19, 15), {}), ("frames_grayscale", 0.25, "numpy", 3, (19, 15), {"reducer": "mean"}), @@ -13,50 +14,59 @@ ("frames_grayscale", 0.01, "cv", 3, (475, 371), {}), ("frames_grayscale", 0.05, "cv", 3, (95, 74), {}), ("frames_rgb", 0.25, "cv", 4, (19, 15, 3), {}), - ] + ], ) def test_project(frames, resolution, method, dims, shape, kwargs, request): -# import matplotlib -# matplotlib.use('Qt5Agg') frames = request.getfixturevalue(frames) frames_proj = frames.frames.project(resolution=resolution, method=method, **kwargs) # check amount of time steps is equal - assert(len(frames_proj.time) == len(frames.time)) + assert len(frames_proj.time) == len(frames.time) # check if the amount of dims is as expected (different for rgb) - assert(len(frames_proj.dims) == dims), f"Expected nr of dims is {dims}, but {len(frames_proj.dims)} found" + assert len(frames_proj.dims) == dims, f"Expected nr of dims is {dims}, but {len(frames_proj.dims)} found" # check shape of x, y grids - assert(frames_proj.isel(time=0).shape == shape), f"Projected frames shape {frames_proj.isel(time=0).shape} do not have expected shape {shape}" - # import matplotlib.pyplot as plt - # plt.imshow(frames_proj[0]) - # plt.colorbar() - # plt.show() + assert ( + frames_proj.isel(time=0).shape == shape + ), f"Projected frames shape {frames_proj.isel(time=0).shape} do not have expected shape {shape}" @pytest.mark.parametrize( - "frames, samples", + ("frames", "samples"), [ ("frames_grayscale", 2), ("frames_grayscale_shift", 2), ("frames_proj", 2), - ] + ], ) def test_normalize(frames, samples, request): frames = request.getfixturevalue(frames) frames_norm = frames.frames.normalize(samples=samples) - assert(frames_norm[0, 0, 0].values.dtype == "uint8"), f'dtype of result is {frames_norm[0, 0, 0].values.dtype}, expected "uint8"' + assert ( + frames_norm[0, 0, 0].values.dtype == "uint8" + ), f'dtype of result is {frames_norm[0, 0, 0].values.dtype}, expected "uint8"' + + +def test_smooth(frames_grayscale): + frames_smooth = frames_grayscale.frames.smooth() + assert frames_smooth.shape == frames_grayscale.shape + assert ( + frames_smooth[0, 0, 0].values.dtype == "float32" + ), f'dtype of result is {frames_smooth[0, 0, 0].values.dtype}, expected "float32"' + assert np.allclose(frames_smooth.values.flatten()[-4:], [158.125, 153.5, 151.375, 151.0]) def test_edge_detect(frames_proj): frames_edge = frames_proj.frames.edge_detect() - assert(frames_edge.shape == frames_proj.shape) - assert(frames_edge[0, 0, 0].values.dtype == "float32"), f'dtype of result is {frames_edge[0, 0, 0].values.dtype}, expected "float32"' + assert frames_edge.shape == frames_proj.shape + assert ( + frames_edge[0, 0, 0].values.dtype == "float32" + ), f'dtype of result is {frames_edge[0, 0, 0].values.dtype}, expected "float32"' # assert(np.allclose(frames_edge.values.flatten()[-4:], [-1.3828125, -4.3359375, 1.71875 , 7.234375 ])) - assert (np.allclose(frames_edge.values.flatten()[-4:], [-6.0390625, 0.8671875, 6.4765625, 4.40625])) + assert np.allclose(frames_edge.values.flatten()[-4:], [-6.0390625, 0.8671875, 6.4765625, 4.40625]) def test_reduce_rolling(frames_grayscale, samples=1): frames_reduced = frames_grayscale.frames.reduce_rolling(samples=samples) - assert(frames_reduced.shape == frames_grayscale.shape) + assert frames_reduced.shape == frames_grayscale.shape @pytest.mark.parametrize( @@ -64,49 +74,62 @@ def test_reduce_rolling(frames_grayscale, samples=1): [ "frames_grayscale", "frames_rgb", - ] -) -@pytest.mark.parametrize( - "idx", - [0, -1] + ], ) +@pytest.mark.parametrize("idx", [0, -1]) def test_plot(frames, idx, request): frames = request.getfixturevalue(frames) frames[idx].frames.plot() frames[idx].frames.plot(mode="camera") plt.close("all") -@pytest.mark.parametrize( - "idx", - [0, -1] -) + +@pytest.mark.parametrize("idx", [0, -1]) def test_plot_proj(frames_proj, idx): frames_proj[idx].frames.plot() plt.show(block=False) plt.close("all") try: - import cartopy frames_proj[idx].frames.plot(mode="geographical") plt.show(block=False) plt.close("all") - except: + except ImportError: print("Cartopy is missing, skipping cartopy dependent test") - @pytest.mark.parametrize( - "window_size, result", + ("window_size", "engine", "result"), [ # (5, [np.nan, np.nan, np.nan, 0.06877007]), - (10, [0.11740075, 0.09619355, 0.16204849, 0.14154269]), + (10, "openpiv", [0.11740075, 0.09619355, 0.16204849, 0.14154269]), + # (10, "ffpiv", [0.11740075, 0.09619355, 0.16204849, 0.14154269]), # (15, [0.21774408, 0.21398547, 0.25068682, 0.26456946]) - ] + ], ) -def test_get_piv(frames_proj, window_size, result): - piv = frames_proj.frames.get_piv(window_size=window_size) +def test_get_piv(frames_proj, window_size, engine, result): + piv = frames_proj.frames.get_piv(window_size=window_size, engine=engine) + print(piv["v_x"].shape) piv_mean = piv.mean(dim="time", keep_attrs=True) # check if results are stable - assert(np.allclose(piv_mean["v_x"].values.flatten()[-4:], result, equal_nan=True)) + assert np.allclose(piv_mean["v_x"].values.flatten()[-4:], result, equal_nan=True) + + +@pytest.mark.parametrize( + "window_size", + [ + 26, + ], +) +def test_compare_piv(frames_proj, window_size): + frames_proj.load() + piv = frames_proj.frames.get_piv(window_size=window_size, engine="openpiv") + piv.load() + u1, v1 = piv["v_x"].mean(dim="time").values, piv["v_y"].mean(dim="time").values + piv2 = frames_proj.frames.get_piv(window_size=window_size, engine="numba") + piv2.load() + u2, v2 = piv2["v_x"].mean(dim="time").values, piv2["v_y"].mean(dim="time").values + assert np.allclose(u2, u1, atol=1e-5, rtol=1e-4), "too large differences between `u` of openpiv and ffpiv" + assert np.allclose(v2, v1, atol=1e-5, rtol=1e-4), "too large differences between `v` of openpiv and ffpiv" @pytest.mark.parametrize( @@ -115,7 +138,7 @@ def test_get_piv(frames_proj, window_size, result): "frames_grayscale", "frames_rgb", "frames_proj", - ] + ], ) def test_to_ani(frames, ani_mp4, request): frames = request.getfixturevalue(frames) @@ -128,7 +151,7 @@ def test_to_ani(frames, ani_mp4, request): "frames_grayscale", "frames_rgb_stabilize", "frames_proj", - ] + ], ) def test_to_video(frames, ani_mp4, request): frames = request.getfixturevalue(frames) diff --git a/tests/test_transect.py b/tests/test_transect.py index e60249c..22281d0 100644 --- a/tests/test_transect.py +++ b/tests/test_transect.py @@ -8,7 +8,10 @@ def test_get_river_flow(piv_transect): piv_transect.transect.get_river_flow() # we allow for 0.001 m3/s deviation for differences in versions of libs assert np.allclose( - piv_transect.river_flow.values, [0.0821733, 0.08626413, 0.09137767, 0.09649121, 0.10058204], atol=0.001 + # piv_transect.river_flow.values, [0.0821733, 0.08626413, 0.09137767, 0.09649121, 0.10058204], atol=0.001 + piv_transect.river_flow.values, + [0.08729524, 0.08801068, 0.08890499, 0.08979929, 0.09051473], + atol=0.001, ) diff --git a/tests/test_velocimetry.py b/tests/test_velocimetry.py index c0e5747..2730bd6 100644 --- a/tests/test_velocimetry.py +++ b/tests/test_velocimetry.py @@ -1,34 +1,18 @@ -import copy - -import pytest -import numpy as np import matplotlib.pyplot as plt +import numpy as np +import pytest -@pytest.mark.parametrize( - "distance, nr_points", - [ - (None, 39), - (0.1, 50), - (0.3, 17) - ] -) +@pytest.mark.parametrize(("distance", "nr_points"), [(None, 36), (0.1, 50), (0.3, 17)]) def test_get_transect(piv, cross_section, distance, nr_points): - x, y, z = cross_section["x"], cross_section["y"], cross_section["z"] + x, y, z = (cross_section["x"], cross_section["y"], cross_section["z"]) ds_points = piv.velocimetry.get_transect(x, y, z, crs=32735, rolling=4, distance=distance) # check if the angle is computed correctly - assert(np.isclose(ds_points["v_dir"][0].values, -4.41938864)) - assert(len(ds_points.points)) == nr_points + assert np.isclose(ds_points["v_dir"][0].values, -4.41938864) + assert (len(ds_points.points)) == nr_points -@pytest.mark.parametrize( - "mode", - [ - "local", - "camera", - "geographical" - ] -) +@pytest.mark.parametrize("mode", ["local", "camera", "geographical"]) @pytest.mark.parametrize( "method", [ @@ -36,14 +20,14 @@ def test_get_transect(piv, cross_section, distance, nr_points): "pcolormesh", "scatter", "streamplot", - ] + ], ) def test_plot(piv, mode, method): plot = True if mode == "geographical": try: - import cartopy - except: + pass + except ImportError: print("Cartopy is missing, skipping cartopy dependent test") plot = False if method == "streamplot":