Skip to content

Latest commit

 

History

History
184 lines (115 loc) · 6.49 KB

README.md

File metadata and controls

184 lines (115 loc) · 6.49 KB

Auto-Fluidics

License GitHub top language GitHub issues GitHub pull requests

This repository serves as a comprehensive exploration into the development of an affordable and open-source microfluidics camera equipped with advanced computer vision capabilities. The primary objective is to create a versatile solution capable of real-time particle analysis, alongside a robust control system for analysing particle metrics. Additionally, the project aims to provide a generic API for seamless interfacing with various pumps, including pressure, syringe, or peristaltic pumps.

Key Features:

  • Real-time particle analysis leveraging computer vision techniques
  • Integration with a control system for efficient analysis of particle metrics
  • Generic API facilitating seamless interaction with different types of pumps

Motivation:

The motivation behind this project stems from the need for accessible tools in microfluidics research and experimentation. By combining affordability with open-source principles, I aim to democratise access to advanced microfluidics instrumentation, fostering innovation and collaboration within the scientific community.

The goal is to create a:

  • solution that can perform particle analysis in real-time;
  • control system to analyse the particle metrics (see my PID autotuners); and
  • generic API for interfacing with pressure, syringe, or peristaltic pumps.

Table of Contents

  1. About the Project
  2. Project Status
  3. Getting Started
    1. Requirements
    2. Getting the Source
    3. Building
    4. Testing
    5. Example Usage
    6. Example Output
  4. Documentation
  5. Need Help?
  6. Contributing
  7. Further Reading
  8. Authors
  9. License
  10. Acknowledgments

About the Project

The motivation behind this project is to simplify the process of microfluidics experimentation. By providing an easy-to-use toolkit, we aim to empower researchers and enthusiasts to explore microfluidic phenomena without extensive technical barriers.

This project seeks to democratise access to advanced microfluidics instrumentation, fostering collaboration and innovation in the field.

Real-Time Particle Analysis: The project offers real-time analysis of particles within microfluidic systems, utilising computer vision algorithms.

Control System Integration: It seamlessly integrates with a control system for efficient analysis of particle metrics, enhancing experimental precision and protocol development.

Versatile Pump Interface: The toolkit includes a generic API for interfacing with pressure, syringe, or peristaltic pumps, ensuring compatibility with various experimental setups.

User-Friendly Interface: The project provides an intuitive and easy-to-use toolkit, enabling users to set up and conduct experiments with minimal technical expertise.

Back to top

Project Status

This is an early work in progress, with what little free time I have.

Currently implemented using Python.

The methods of detection and preprocessing are constantly being updated, as more efficient pipelines are developed. Currently only tested using local images / videos, and video streams from an ESP32 device.

Back to top

Getting Started

Requirements

At a minimum you will need:

  • git, version control and source code managment
  • Python, 3.10.12 is recommended

Back to top

Getting the Source

This project is hosted on GitHub. You can clone the project directly using this command:

git clone --recursive [email protected]:finorr/auto-fluidics.git

Back to top

Example Usage

The system is designed to operate either in real-time processing mode, or as a post-processor. The system can detect and analyse particles in images, as well as videos.

####
# Example script: process video using a Wi-Fi enabled microscope.
####
import cv2
import sys
import particle_detector as pdt

# Create an instance of the image processor
proc = pdt.ParticleImageProcessor()

# Create an output window for viewing data
win_name = 'Networked Stream'
cv2.namedWindow(win_name, cv2.WINDOW_NORMAL)

# Escape key exits the stream
while cv2.waitKey(1) != 27:

    # Process live video from a networked camera
    proc.process_stream(stream_ip='192.168.1.34')

    # Display the processed images in the window
    if proc.image['processed'] is not None:
        cv2.imshow(win_name, proc.image['processed'])

    # If no processing performed, just display the source image
    else:
        cv2.imshow(win_name, proc.image['sample'])
    
# Clean up and exit
cv2.destroyWindow(win_name)

Example Output

Back to top

Building

The current design uses Python. When the system is expanded to support C++ (to enable GPU acceleration), then expect this section to be updated.

Back to top

Testing

Unit tests incoming...

Back to top

Documentation

Documentation incoming...

Back to top

Need help?

If you need further assistance or have any questions, please file a GitHub issue or reach out on Linkedin.

Contributing

If you are interested in contributing to this project, please read our contributing guidelines.

Authors

License

See the LICENSE file for licensing details.

Acknowledgments

Make any public acknowledgments here

Back to top