diff --git a/README.md b/README.md index 3139159479d5064d0efd11ac791de683d085be70..40d4f63301dcabcaef6b5bc230bc5cbe26e8ea3f 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# eigenpsf-extractor +# EigenPSFExtractor -EigenPSFExtactor allows you to finely characterization of your optical system from images of isolated sources (fluorescent microbeads, guide stars, ...) +EigenPSFExtactor allows you to finely characterize your optical system from images of isolated sources (fluorescent microbeads, guide stars, ...) It based on a set of accuracte routines to detect, register, process and average the diffracted sources images. The plugin is rock solid for 2D images. -Beware: the treatment of 3D images is slow, because this version is based on Java only. Use it at your own risks. +**Beware:** the treatment of 3D images is slow, because this version is based on Java only. Use it at your own risks. ## Citation @@ -20,17 +20,72 @@ https://sites.imagej.net/XXX Once the site has been added, updating Fiji should cause it to download and install the plugin which can be found in "plugins"->"eigenpsf-extractor". -## Visual examples +## How it works? - +### Step 1. Open Fiji +### Step 2. Open *Plugins -> Eigen_PSF -> Eigen_PSF* + + + +### Step 3. **Drag and drop the images** you want to open in the left pane. + + + +### Step 4. **Display the selected images** by clicking on the eye (show) in the left pane. + + + +### Step 5. Click on the parameters button and set the parameters. In particular, pay attention to : + - **Set 2D/3D option**. + - **Set the PSF width**. You can also do it by drawing a square around a PSF and by clicking on get_ROI. + - **Set the number of EigenPSFs** (this can be done afterwards as well). + + + +### Step 6. Click on *Detect beads*. This may take some time. When finished, you can click on the image pane, and ROI should appear around each detected microbead. + + + +### Step 7. The PSFs that are set as *valid* are displayed in green. Those in red are considered as *invalid* because, they are out of the distribution of observed beads. You can change the *valid*/*invalid* status by *ctrl + shift + click* or by clicking on the table at right. Note: the table contains the main beads properties. The lower the bead quality, the more likely it is for it to be a correct bead (i.e. no overlap with other beads, out of distribution features,...). + +### Step 8. Click on Preprocess Patches. This will do a fine PSF registration on the detected patches and remove the background. + + + +### Step 9. Click on Compute EigenPSF. You can also show them. You should get a result like the one below. Here we made a montage with 5 eigenPSFs extracted from the valid microbeads. + + + +### Step 10. Finally, you can display the processed PSFs after registration, background removal and projection on the eigenPSF basis. + + ## Future releases +The current code is based purely on Java. Unfortunately, some operations (convolutions with FFTs) are resource intensive. We plan to: +1. Develop a Pytorch package. +2. Bind the current Java/Fiji interface with this code. +3. Develop a Napari plugin for a better Pytorch integration. + ## Contributing If you want to contribute to this project, do not hesitate to contact the core developing team. -## License +valentin.debarnot@gmail.com + +emmanuel.soubies@irit.fr + +daniel.sage@epfl.ch + +pierre.weiss@cnrs.fr + +## References + +This work heavily relies on the following references. + +V. Debarnot, P. Escande, T. Mangeat and P. Weiss, "Learning Low-Dimensional Models of Microscopes," in IEEE Transactions on Computational Imaging, vol. 7, pp. 178-190, 2021, doi: 10.1109/TCI.2020.3048295. +Debarnot, V., & Weiss, P. (2023). Blind inverse problems with isolated spikes. Information and Inference: A Journal of the IMA, 12(1), 26-71. +Bigot, J., Escande, P., & Weiss, P. (2019). Estimation of linear operators from scattered impulse responses. Applied and Computational Harmonic Analysis, 47(3), 730-758. diff --git a/jar/linux/EigenPSF_Extractor-0.0.3.jar b/jar/linux/EigenPSF_Extractor-0.0.3.jar index 7e266640617c475167ab597baf84a0b5c47cbb4c..c98677b64096579272e067404fcf4ee5f1a00a79 100644 Binary files a/jar/linux/EigenPSF_Extractor-0.0.3.jar and b/jar/linux/EigenPSF_Extractor-0.0.3.jar differ diff --git a/src/src/eigenpsf/stack/PopupMenu.java b/src/src/eigenpsf/stack/PopupMenu.java index 2289fd45ccd2820c0d7b20db3821bcd8cea905d2..2e2535f5ce5141837a52847346589aee88ba6b41 100644 --- a/src/src/eigenpsf/stack/PopupMenu.java +++ b/src/src/eigenpsf/stack/PopupMenu.java @@ -14,7 +14,7 @@ public class PopupMenu extends JPopupMenu implements ActionListener { //private JMenuItem show = new JMenuItem("Show"); //private JMenuItem measure = new JMenuItem("Measure"); - private JMenuItem unselect = new JMenuItem("Mark as unvalid"); + private JMenuItem unselect = new JMenuItem("Mark as invalid"); private JMenuItem select = new JMenuItem("Mark as valid"); private Project project; private PatchesTable table;