one-pix
An open source Python single-pixel imaging kit for educational and research purposes.
Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: ncbi.nlm.nih.gov -
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.7%) to scientific vocabulary
Keywords
Repository
An open source Python single-pixel imaging kit for educational and research purposes.
Basic Info
Statistics
- Stars: 39
- Watchers: 6
- Forks: 7
- Open Issues: 1
- Releases: 1
Topics
Metadata Files
README.md
ONE-PIX kit project
Introduction
The ONE-PIX kit is an hyperspectral camera using single pixel imaging principle to measure hypercubes in the visible region. It can be enhanced towards the infrared region. This modular kit can be used with different spectrometers and optical elements for the collection. To date, it can measure scenes exposed to ambient light, but it has been primarily tested and developed for use in dimly lit indoor environments.
This kit is ideal for getting started with hyperspectral imaging or single pixel imaging. Thus it is a tool for teachers and students to discover non conventional imaging. It is also an economic tool to produce low cost hypercubes of tailored scenes or to reproduce academical results within the robotic vision field. To learn more about single pixel imaging theory used for hyperspectral imaging, you can read our article.
This kit was developed with the primary need in mind to be able to be assembled on a standard fablab with laser cutting. Little wiring (all low voltage) and no soldering is required. You should find a fablab in your neighbourhood capable (and enthusiastic) of helping you build this cool instrument, especially if they can have some fun with it afterwards.
Working principle
The ONE-PIX kit contains a video projector and a fibered spectrometer with superimposed fields of view. Both are connected and controlled by a Raspberry Pi board.
For more information about the single pixel imaging you can go here
ONE-PIX technology involves projecting a series of patterns onto a scene to be imaged. A spectrometer measures the average reflected spectrum of the scene for each projection. An algorithm then reconstructs the hypercube of the scene from all the spectra measured during the acquisition. The Raspberry Pi board ensures the synchronization between patterns projections and the spectrometer measurements.
Architecture of the ONE-PIX kit repository
This repository contains scripts and software embedded on the Raspberry Pi and all the information to install and use it properly.
An other ONE-PIX_hardware repository contains all the files and information to build a case containing all the components of the ONE-PIX kit and their 3D printed attachments.
ONE-PIX software Installation
The installation of the ONE-PIX software is achievable as the hardware installation is fully completed.. To do so, you can follow the hardware building tutorial . You can also buy an already premounted ONE-PIX kit here
the ONE-PIX kit has been tested and is functional in the following environments:
|Tested OS| Tested python version|remark| |---|---|---| |Rasbian bullseye version 11 (32-Bit) |3.9|tested on raspberry pi 4B + with 8 Go RAM| |Windows 11|3.11.6| impossible to carry out HAS measurements and no RGB capture at all |
Here we assume that The ONE-PIX soft was developed to use a raspberry pi with Raspberry Pi OS. However it possible use directly your PC with python for more advanced performance.
This tutorial details all the steps required to install the ONE-PIX software on a Raspberry Pi 4 board.
For troubleshooting in installation you can go to the issue section
Installing ONE-PIX on a raspberry pi
All instructions and tips to configure your raspberry pi board and install the ONE-PIX on it are available here. For other OS just continue to read this readme file.
Download git repository
The first step of this installation is to clone the ONE-PIX directory from Github.
From the Raspberry Pi, open a terminal and go to the desktop with the following command line:
cd Desktop
Download the ONE-PIX software from git
sudo git clone https://github.com/PhotonicsOpenProjects/ONE-PIX.git
ONE-PIX installation
To install ONE-PIX on the raspberry pi board just run the setup.sh for that go in ther install folder with this command :
cd ONE-PIX/install
and run the installation script with this command :
sudo chmod +x ./install.sh
./install.sh
Spectrometer installation
The ONE-PIX kit is compatible with many spectrometers model. All models already tested with ONE-PIX has a concrete implementation in the spectrometers subfolder of plugins. For each of them, Raspberry pi board installation instructions are detailed in each associated README file. For example you can see the OceanInsight or Avantes installation instructions to achieve before measure with your ONE-PIX
If you want to implement a new model of spectrometer you need to see adding a new spectrometer API section.
The installation is now complete. Now you can follow the tutorial measure hyperspectral image to measure your first hyperspectral datacube !
Measuring and analysing hypercubes
The software architecture of the ONE-PIX kit offers different ways to measure, reconstruct and analyze hyperspectral images.
- The fastest way to measure and analyze hyperspectral images without write any line of code is to use the GUI interface
- For more advanced acquisitions,use directly command line interfaces or python script examples and adapt them on your usecase with help in the API.
Contributing
Mounting experience
If you use it from a already assemble kit, and do not found a detail on the manual, tell us ! If you assemble it by yourself and found some simpliest or smartest way to do it, please share ! If you encounter difficulties, have suggestions or even just cheers the developpers, do not hesitate again !
Use Cases
Any questions, pedagogical or in a front of science, very applied or meta-conceptual are interesting for us and other users. A brief description and welcome message on this repository will be greatly apreciated. If we are curious enough we will contact you.
New functions
As you will rapidly catch-it : this simple set-up has an infinity of potential developements, applications and usages. Feel free to play with it once it works at your place. If you find new tricks, feel free to share it with us and the community. We will dedicate ourselves (on the limits of our daily hours) to make the best effort to integrate and promote to the community every contribution with the greater respect to your credits.
Your version
If you tried a new sensors, an other mechanical plan, you can freely create your own forks but if you consider it could be usefull to keep consistency with other develepment and insturmental choice, we can discuss on intgrating also , spectormeter wrappers or even more crazy evolution in the main.
Important remarks
:bulb: Tip: Do not forget to have fun... because we had some making it for you !
Owner
- Login: PhotonicsOpenProjects
- Kind: user
- Repositories: 1
- Profile: https://github.com/PhotonicsOpenProjects
GitHub Events
Total
- Issues event: 2
- Watch event: 12
- Delete event: 3
- Issue comment event: 2
- Push event: 59
- Pull request event: 9
- Fork event: 2
- Create event: 2
Last Year
- Issues event: 2
- Watch event: 12
- Delete event: 3
- Issue comment event: 2
- Push event: 59
- Pull request event: 9
- Fork event: 2
- Create event: 2
Committers
Last synced: about 2 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| PhotonicsOpenProjects | 1****s | 233 |
| maribes | m****s@p****m | 31 |
| PhotonicsOpenProjects | p****p@p****m | 13 |
| garussias | 1****s | 11 |
| LBrechet | b****9@g****m | 7 |
| garussias | g****s@p****m | 7 |
| garussias | g****s@p****m | 6 |
| leo brechet | b****9@g****m | 3 |
| Mickael Pouliquen | m****n@g****m | 3 |
| BRECHET Léo | L****T@a****r | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 2
- Total pull requests: 19
- Average time to close issues: 6 months
- Average time to close pull requests: 1 day
- Total issue authors: 2
- Total pull request authors: 7
- Average comments per issue: 1.5
- Average comments per pull request: 0.05
- Merged pull requests: 12
- Bot issues: 0
- Bot pull requests: 1
Past Year
- Issues: 1
- Pull requests: 3
- Average time to close issues: N/A
- Average time to close pull requests: about 2 hours
- Issue authors: 1
- Pull request authors: 2
- Average comments per issue: 0.0
- Average comments per pull request: 0.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- FluoToine (1)
- lucasbrodo (1)
Pull Request Authors
- LBrechet (5)
- PhotonicsOpenProjects (5)
- eleguen22 (3)
- mpo22 (2)
- Photonics-Bretagne (1)
- dependabot[bot] (1)
- noancloarec (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- actions/setup-python v3 composite
- customtkinter ==5.2.0
- imutils ==0.5.4
- labelme ==5.2.1
- matplotlib ==3.5.1
- numpy ==1.22.3
- opencv-python ==4.5.5.64
- pandas ==2.0.3
- picamera ==1.13
- pyusb ==1.2.1
- scikit-image ==0.19.3
- scikit-learn ==1.0.2
- scipy ==1.8.0
- screeninfo ==0.8.1
- seabreeze ==2.0.2
- spectral ==0.22.4
- spyndex ==0.3.0
- tifffile ==2023.1.23.1
- xarray ==2023.1.0