Metadata-Version: 2.1
Name: fish-scan
Version: 1.0.8
Summary: Plugin to enhance fish detection and analysis for underwater research
Home-page: https://github.com/ariannaravera/fish-scan
Author: Arianna Ravera
Author-email: ariannaravera22@gmail.com
License: 
        Copyright (c) 2024, Arianna Ravera
        All rights reserved.
        
        Redistribution and use in source and binary forms, with or without
        modification, are permitted provided that the following conditions are met:
        
        * Redistributions of source code must retain the above copyright notice, this
          list of conditions and the following disclaimer.
        
        * Redistributions in binary form must reproduce the above copyright notice,
          this list of conditions and the following disclaimer in the documentation
          and/or other materials provided with the distribution.
        
        * Neither the name of copyright holder nor the names of its
          contributors may be used to endorse or promote products derived from
          this software without specific prior written permission.
        
        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
        AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
        FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
        CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
        OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
        OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        
Project-URL: Bug Tracker, https://github.com/ariannaravera/fish-scan/issues
Project-URL: Documentation, https://github.com/ariannaravera/fish-scan#README.md
Project-URL: Source Code, https://github.com/ariannaravera/fish-scan
Project-URL: User Support, https://github.com/ariannaravera/fish-scan/issues
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Framework :: napari
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Image Processing
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: magicgui
Requires-Dist: qtpy
Requires-Dist: scikit-image
Requires-Dist: opencv-python
Requires-Dist: matplotlib
Requires-Dist: scikit-learn
Provides-Extra: testing
Requires-Dist: tox; extra == "testing"
Requires-Dist: pytest; extra == "testing"
Requires-Dist: pytest-cov; extra == "testing"
Requires-Dist: pytest-qt; extra == "testing"
Requires-Dist: napari; extra == "testing"
Requires-Dist: pyqt5; extra == "testing"

# fish-scan

[![License BSD-3](https://img.shields.io/pypi/l/fish-scan.svg?color=green)](https://github.com/ariannaravera/fish-scan/raw/main/LICENSE)
[![PyPI](https://img.shields.io/pypi/v/fish-scan.svg?color=green)](https://pypi.org/project/fish-scan)
[![Python Version](https://img.shields.io/pypi/pyversions/fish-scan.svg?color=green)](https://python.org)
[![tests](https://github.com/ariannaravera/fish-scan/workflows/tests/badge.svg)](https://github.com/ariannaravera/fish-scan/actions)
[![codecov](https://codecov.io/gh/ariannaravera/fish-scan/branch/main/graph/badge.svg)](https://codecov.io/gh/ariannaravera/fish-scan)
[![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/fish-scan)](https://napari-hub.org/plugins/fish-scan)

Plugin to enhance fish detection and analysis for underwater research

----------------------------------

This [napari] plugin was generated with [Cookiecutter] using [@napari]'s [cookiecutter-napari-plugin] template.

<!--
Don't miss the full getting started guide to set up your new package:
https://github.com/napari/cookiecutter-napari-plugin#getting-started

and review the napari docs for plugin developers:
https://napari.org/stable/plugins/index.html
-->

## Installation

You can install `fish-scan` via [pip]:

    pip install fish-scan



To install latest development version :

    pip install git+https://github.com/ariannaravera/fish-scan.git


## Tutorial

### 1. Color correction

With this tool you can correct colors in your image.

1.	Open your image in napari by grabbing and dropping it or opening from the menu
2.	Click on “Select the area” to select a rectagular area of the color you wanna correct
3.	Draw the rectangle in the area in which you have that color, eg. white area, as in the example below
4.	Select the color name in the dropdown box, eg. in this case white
5.	Click on “Correct color”
6.	If you’re satisfied of the correction made, it is IMPORTANT to select as input “Image”(first box) the name of the new generated image (usually, “Currect_corrected_...)*
7.	Cuntinue your colors corrections re-starting from step 2

#### Nomenclature:
- you MUSH have your original image with its original name (in this case “Group2_FishID_25April…”)
- then, once you start correcting the image, the new generated images will be called as “Current_corrected_*original-name*”
- if you perform the correction more times, your previous corrected image will be named “Previous_corrected_*original-name*” and the new generated always “Current_corrected_*original-name*”.

This allows you to keep as “previous” the result that you already liked and approved, while the “current” you can play and experiment new corrections. 
Be aware that if you select as input image of the correction “previous” this means that you didn’t like the “current” one and it will be overwrite (while the “previous” remain the same), otherwise if you liked the “current” and you use it as input image of the new correction, then the “current” will become “previous” and the new result “current”.
At anytime if you want you can re-start from the original image by selecting it as input image (original image is NEVER changed).
 
### 2. Set Scale
With this tool you can automatically measure your fish if a scale is in the image.

1.	Click on “Select 1 cm” and draw a line on the scale represeting 1cm, as in this example:
 
2.	Click on “Set scale” and your fish will be automaticall measure in your final analysis with this scale
 
### 3. Segmentation & Analysis
With this tool you can segment your fish.

Steps:
1.	Select the “Image” you want to analyse (be aware of the nomenclature*)
2.	Click “Select fish area” button
3.	Start drawing your mask with the brush (yellow arrow below). I suggest to start drwaing the fish contours and then with the paint bucket (red arrow below) fill the inside. Adjust it with the eraser (orange arrow below) if needed
    
4.	Select the output folder you want the results saved in by clicking “Browse”
5.	Finally, click on “Analyse the fish” to generate your analysis

Here is an example of the results you obtain from it:
•	two graphs per image,
o	one representing the percentage of the 3 dominant color you want to study (black, white and orange) 
 
o	one with the composition of the real RGB values found in the image (the ones that are categorized in the 3 main classes you have in graph 1)
 

•	one csv file in which there are the number of black, white and orange pixels, their percentages (same values of graph 1), the length of the fish in pixels (always provided) and the length converted in cm (if a scale was provided).
o	If in the output folder chosen there were already a previously created csv we will append to that the new info, otherwise a new csv is created.
 


## Contributing

Contributions are very welcome. Tests can be run with [tox], please ensure
the coverage at least stays the same before you submit a pull request.

## License

Distributed under the terms of the [BSD-3] license,
"fish-scan" is free and open source software

## Issues

If you encounter any problems, please [file an issue] along with a detailed description.

[napari]: https://github.com/napari/napari
[Cookiecutter]: https://github.com/audreyr/cookiecutter
[@napari]: https://github.com/napari
[MIT]: http://opensource.org/licenses/MIT
[BSD-3]: http://opensource.org/licenses/BSD-3-Clause
[GNU GPL v3.0]: http://www.gnu.org/licenses/gpl-3.0.txt
[GNU LGPL v3.0]: http://www.gnu.org/licenses/lgpl-3.0.txt
[Apache Software License 2.0]: http://www.apache.org/licenses/LICENSE-2.0
[Mozilla Public License 2.0]: https://www.mozilla.org/media/MPL/2.0/index.txt
[cookiecutter-napari-plugin]: https://github.com/napari/cookiecutter-napari-plugin

[file an issue]: https://github.com/ariannaravera/fish-scan/issues

[napari]: https://github.com/napari/napari
[tox]: https://tox.readthedocs.io/en/latest/
[pip]: https://pypi.org/project/pip/
[PyPI]: https://pypi.org/
