Metadata-Version: 2.1
Name: scimage
Version: 0.1.3
Summary: Algorithms for data analysis and image processing, including automation of feature extraction and characterization of images.
Home-page: https://github.com/amirchatraee/scimage
Author: Amir Chatraee, Mehrdad Bagheri
Author-email: amirchatraee@yahoo.com, bagheri_mehrdad@hotmail.com
License: GNU GPLv3
Description: 
        # SciCharImage (scimage)
        Algorithms for data analysis and image processing, including automation of feature extraction and characterization of images. 
        
        This library can be also beneficial to the astrophysics society for image processing and data analysis tasks. For example statistical analysis of thickness, length, and aspect ratio (Length/Half-thickness) of each current sheets can be performed. 
        
        Examples of visualizations and results can be seen in a publication in the Journal of Physics of Plasmas: [doi.org/10.1063/5.0040692](https://doi.org/10.1063/5.0040692)
        
        
        ## Contributing
        Pull requests are welcome. [https://github.com/amirchatraee/scimage](https://github.com/amirchatraee/scimage)
        
        For major changes, please open an issue first to discuss what you would like to change.
        
        
        ## Installation
        	pip install scimage
        
        ## Using the library
        See examples ([simple-example.py](https://github.com/amirchatraee/scimage/blob/main/simple-example.py), [example.py](https://github.com/amirchatraee/scimage/blob/main/example.py)) in the github repository, on how to use the library functions. Before running the examples, make sure to download the data files from the *data* folder of github.
        
        ### Simple Example:
        	import numpy as np
        	import scimage.identification as ident # Identification of peaks and regions (image segmentation)
        	import scimage.characterization as char # Characterizing each detected region (e.g. thickness and length)
        	import scimage.plot_functions as scplt # Plotting functions
        	from scimage.file_functions import (load_simulation_image)
        
        	# Prepare a 2D plane image
        	values, nx, ny, lx, ly, coordinates_x, coordinates_y = load_simulation_image('data/data-512-512.npz')
        
        	noise_threshold = 0.1
        	ratio_of_boundary_to_max = 0.5
        	number_of_points_upto_local_boundary = 10
        
        	values_abs = np.abs(values)
        
        	# Detect local maximas
        	good_indexes = ident.remove_noise(values_abs, noise_threshold)
        
        	local_maxima_values, indexes_of_local_maximas, maxima_values = \
        		ident.find_local_maxima_at_selected_indexes(values_abs, good_indexes,
        		                                            number_of_points_upto_local_boundary)
        	# Detect regions surrounding each maxima point (image segmentation)
        	indexes_of_points_of_all_regions, indexes_of_valid_local_maxima = \
        		ident.detect_sheet_regions(values_abs, indexes_of_local_maximas, 
        		                           ratio_of_boundary_to_max)
        
        	# Characterize one of the detected regions -------------------
        	selected_region = 0 # choose one region to process here as an example
        	indexes_of_points_of_one_region = indexes_of_points_of_all_regions[selected_region]
        
        	# first, cut out the selected region as a separate frame from the whole image
        	coordinates_x_in_frame, coordinates_y_in_frame, values_of_frame = \
        		char.build_region_frame(indexes_of_points_of_one_region, 
        		                        coordinates_x, coordinates_y, values)
        
        	# now, estimate thickness of the region
        	min_val = np.max(values_of_frame) * 0.42
        	half_thickness_plus_side, half_thickness_minus_side = \
        		char.characterize_region(values_of_frame, 
        		         	            coordinates_x_in_frame, coordinates_y_in_frame, 
        		         	            min_val)
        
        	# also, find length with the pair-wise comparison method
        	length, p1, p2 = char.find_length_by_pariwise_distance(indexes_of_points_of_one_region, 
        		                                                   coordinates_x, coordinates_y)
        
        
        	# plot one region
        	scplt.plot_region(coordinates_x_in_frame, coordinates_y_in_frame, values_of_frame, p1, p2)
        	scplt.save_region_image(coordinates_x_in_frame, coordinates_y_in_frame, values_of_frame, p1, p2,
        		                    selected_region, 'output/test')
        
        	# plot the whole image plane, together with the detected regions
        	scplt.plot_locations_of_local_maximas(coordinates_x, coordinates_y, values, 
        		                                  noise_threshold, indexes_of_local_maximas)
        
        	scplt.plot_locations_of_region_points(coordinates_x, coordinates_y, values,
        		                                  noise_threshold, indexes_of_points_of_all_regions)
        
        	print()
        	print ("Number of detected maximas:" , len(indexes_of_local_maximas))
        	print ("Number of detected regions:" , len(indexes_of_points_of_all_regions))
        	print("Region", selected_region,", with size", values_of_frame.shape, "characterized:")
        	print("Length:", length)
        	print("Thickness (half plus, half minus):", half_thickness_plus_side, half_thickness_minus_side)
        
        
Platform: UNKNOWN
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Description-Content-Type: text/markdown
