Skip to main content

(Semi) Automated Image Processing

Project description

(Semi) Automated Image Processing with pyautocv

PyPI version fury.io DOI Stage Actions Codecov Travis Build license Documentation Status PyPI license PyPI Downloads Month Maintenance GitHub last commit GitHub issues GitHub issues-closed

Project Aims

The goal of pyautocv is to provide a simple computer vision(cv) workflow that enables one to automate or at least reduce the time spent in image (pre)-processing.

Installing the package

From PyPI

pip install pyautocv

From GitHub

pip install git+https://github.com/Nelson-Gon/pyautocv.git
#or
# clone the repo
git clone https://www.github.com/Nelson-Gon/pyautocv.git
cd pyautocv
python3 setup.py install

Example Usage

Note: Although these methods can be run via this script, the script is less flexible and might be useful for quick exploration but not extended analysis.

To run the script at the commandline, we can do the following

# Ensure you have your paths set well
# This assumes that we are inside the package's top level directory

 python scripts/processing.py -d "images/cats" -s "png" -m "binary_inverse" -o "threshold" -mt 250 -t 50

Sample Result

Command Line Script

To perform edge detection

python scripts/processing.py -d "images/biology" -s "jpg" -o "detect_edges" -m "sobel_vertical" -k 3

Bio Script

To smooth images

python scripts/processing.py -d "images/houses" -s "jpg" -o "smooth" -m "gaussian" -k 5 5 --sigma 0.7

Houses Smooth

To get help

python scripts/processing.py -h 

Further exploration is left to the user.


The following section shows how to use the more flexible class/methods approach

  • Image Gra(e)ying

To grey an image directory

from pyautocv.segmentation import *

images_list=Segmentation("images/cats")
show_images(gray_images(images_list.read_images()), images_list.read_images(), number=2)

Grayed

  • Smoothing

To smooth a directory of images, we can use EdgeDetection's smooth method as follows

from pyautocv.segmentation import *

images_list=Segmentation("images/cats")
show_images(images_list.smooth(), images_list.read_images(),number=2)

This will give us

Smooth

The above uses default parameters including an rgb color mode. For biological images which are often in grayscale, one can set color_mode to gray as shown below. All other operations will remain the same.

images_list_gray_mode=Segmentation("images/dic", image_suffix ="tif", color_mode = "gray")
show_images(images_list_gray_mode.read_images(), images_list_gray_mode.threshold_images(), number = 4)

Result

Sample Gray

To use a different filter

images_list = Segmentation("images/cats")
show_images(images_list.read_images(), images_list.smooth(mask="median", kernel_shape=(7, 7)))

Cats-Median-Smooth

  • Edge Detection

To detect edges in a directory of images, we can use Segmentation's detect_edges.

show_images(images_list.read_images(), images_list.detect_edges(operator="roberts", mask="gaussian", sigma=0.8))

The above will give us the following result

Sample_colored

To use a different filter e.g Laplace,

show_images(images_list.read_images(), images_list.detect_edges(operator="laplace", mask="gaussian", sigma=0))

This results in

Laplace

  • Thresholding

To perform thresholding, we can use the method threshold_images.

to_threshold = Segmentation("images/biology")
show_images(to_threshold.read_images(),to_threshold.threshold_images())

Threshold

To use a different thresholding method.

show_images(to_threshold.read_images(),to_threshold.threshold_images(threshold_method="otsu"))

The above gives us:

otsu

For cat lovers, here's thresholding with inverse binary.

show_images(images_list.read_images(),images_list.threshold_images(threshold_method="binary_inverse"))

Result:

Cats

Thresholding applied to images of houses.

images_list=Segmentation("images/houses")
show_images(images_list.read_images(), images_list.threshold_images(threshold_method="thresh_to_zero"))

Threshold-Houses

images_list=Segmentation("images/potholes")
show_images(images_list.read_images(), images_list.threshold_images("binary"))

Potholes

These and more examples are available in example.py. Image sources are shown in sources.md. If you feel attribution was not made, please file an issue and cite the violating image.

Citation

Nelson Gonzabato(2020) pyautocv: (Semi) Automated Image Processing, https://github.com/Nelson-Gon/pyautocv.

@misc {Gonzabato2020,
author = {Gonzabato, N},
title = {pyautocv: (Semi) Automated Image Processing},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/Nelson-Gon/pyautocv}},
commit = {2a5a8c48fd91c719d526ed013b298d560df9b73f}

Thank you very much

“A language that doesn't affect the way you think about programming is not worth knowing.” ― Alan J. Perlis


References

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

pyautocv-0.3.0.tar.gz (16.6 MB view hashes)

Uploaded Source

Supported by

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