# Planning & Orga: Outreachy Project on transform module and thin-plate splines Links & resources: - [skimage-archive / Outreachy proposal on transform module and thin-plate splines](https://github.com/scikit-image/skimage-archive/blob/3ffb87b3c911e2db624e8f407ee0a46fb48893ff/internships/Outreachy_2023-05/Project_TPS_proposal.md) ## Roadmap *This roadmap is intended as a living document and a guideline. Tasks themselves and their position in the timeline are intended to change depending on progress and new problems.* ### Week 1 (May 29 to Jun 04) - [x] Integrate into the scikit-image community - [x] Set up dev env - [x] Get familiar with contribution workflow ### Week 2 (Jun 05 to Jun 11) - [x] Plan development workflow for two interns working on the same function - [x] Study resources and familarize with existing implementation on TPS warping - Feature request: [2D image warping via thin-plate splines #2429 - github.com](https://github.com/scikit-image/scikit-image/issues/2429) - Paper: [Bookstein, Fred L. "Principal warps: Thin-plate splines and the decomposition of deformations." IEEE Transactions on pattern analysis and machine intelligence 11.6 (1989): 567-585.](http://user.engineering.uiowa.edu/~aip/papers/bookstein-89.pdf) - [Simple implementation from Zachary Pincus - github.com](https://github.com/zpincus/celltool/blob/master/celltool/numerics/image_warp.py) - [image.sc thread](https://forum.image.sc/t/equivalent-for-matlabs-piecewiselineartransformation2d/51035/4) discussing related transforms and Zachary's implementation ### Week 3 (Jun 12 to Jun 18) - [x] Establish the project timeline with mentors (weekly meetings, goals, reports, etc.) - [x] First pull request with draft for new TPS warping function, e.g. based on [Simple implementation from Zachary Pincus - github.com](https://github.com/zpincus/celltool/blob/master/celltool/numerics/image_warp.py) - [x] Play around with examples using the implementation: - Plot in- and ouptut, what impact do the arguments have ### Week 4 (Jun 19 to Jun 25) - [x] Try to add "temporary" docstrings to `_calculate_f`, `_make_warp`, `_make_L_matrix`, etc. ### Week 5 (Jun 26 to Jul 02) - [x] Update existing implementation to API goal (at the time) - ~~e.g. using a Transform class~~ - [x] Complete docstrings including basic examples ### Week 6 (Jul 03 to Jul 09) - [ ] Smaller tasks: - [ ] Check coordinate definition in `scipy..ndimage.map_coordinates`, is the center of a pixel at 0 or at 0.5? - [ ] `tps_transform` as a transform class - [ ] Add simple unit tests that emulate basic geometric transformations with two or three point constraints (from W5) - [ ] translation - [ ] resizing - [ ] rotation - [ ] Expand test suite - [ ] Edge cases - [ ] Error handling and raising ### Week 7 (Jul 10 to Jul 16) - [ ] *Mid-intership break* ### Week 8 (Jul 17 to Jul 23) - [ ] Profile current implementation - [ ] Discuss & plan options to speed up implementation ### Week 9 (Jul 24 to Jul 30) - [ ] Complete test suite ### Week 10 (Jul 31 to Aug 06) - [ ] Start gallery example demonstrating the new TPS warping ### Week 11 (Aug 07 to Aug 13) - [ ] Iterate...? ### Week 12 (Aug 14 to Aug 20) - [ ] Iterate...? ### Week 13 (Aug 21 to Aug 27) - [ ] Complete and evaluate project - [ ] Document journey as an intern (blog posts, etc.)