Skip to main content

Algorithms for data analysis and image processing, including automation of feature extraction and characterization of images.

Project 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

Contributing

Pull requests are welcome. 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, 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)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scimage-0.1.3.tar.gz (11.5 kB view details)

Uploaded Source

File details

Details for the file scimage-0.1.3.tar.gz.

File metadata

  • Download URL: scimage-0.1.3.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for scimage-0.1.3.tar.gz
Algorithm Hash digest
SHA256 13c45170918d17556437072a3c70b4794e3307611ba30bb27e53577b56e3392f
MD5 d3c7ed91c3354cb34275a0571c5696a2
BLAKE2b-256 ea7a1fa725a45dce4c02802f2151ef4ab457a166d12abbdf0edf35b37108fefa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page