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.
- 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
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.
- About the Project
- Project Status
- Getting Started
- Documentation
- Need Help?
- Contributing
- Further Reading
- Authors
- License
- Acknowledgments
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.
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.
At a minimum you will need:
git
, version control and source code managmentPython
,3.10.12
is recommended- opencv-python,
4.9.0.80
library
- opencv-python,
This project is hosted on GitHub. You can clone the project directly using this command:
git clone --recursive [email protected]:finorr/auto-fluidics.git
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)
The current design uses Python. When the system is expanded to support C++ (to enable GPU acceleration), then expect this section to be updated.
Unit tests incoming...
Documentation incoming...
If you need further assistance or have any questions, please file a GitHub issue or reach out on Linkedin.
If you are interested in contributing to this project, please read our contributing guidelines.
See the LICENSE file for licensing details.
Make any public acknowledgments here