Structured Light
These programs generate and decode structured light.
Currently supports
Installation
pip install git+https://github.com/elerac/structuredlight
Usage
import structuredlight as sl
width = 640
height = 480
gray = sl.Gray()
imlist_pattern = gray.generate((width, height))
# Projecting patterns from a projector (or display) and capture images
imlist_captured = imlist_pattern
img_index = gray.decode(imlist_captured, thresh=127)
print(img_index)
# [[ 0 1 2 ... 637 638 639]
# [ 0 1 2 ... 637 638 639]
# ...
# [ 0 1 2 ... 637 638 639]]
Supported structured light
Binary code
binary = sl.Binary()
imlist = binary.generate((width, height))
img_index = binary.decode(imlist, thresh=127)
Gray code
gray = sl.Gray()
imlist = gray.generate((width, height))
img_index = gray.decode(imlist, thresh=127)
XOR code
xor = sl.XOR(index_last=-1)
imlist = xor.generate((width, height))
img_index = xor.decode(imlist, thresh=127)
Ramp code
ramp = sl.Ramp()
imlist = ramp.generate((width, height))
img_index = ramp.decode(imlist)
Phase-Shifting
phaseshifting = sl.PhaseShifting(num=3)
imlist = phaseshifting.generate((width, height))
img_index = phaseshifting.decode(imlist)
Single stripe
stripe = sl.Stripe()
imlist = stripe.generate((width, height))
img_index = stripe.decode(imlist)
Tips
How to binarize a grayscale image
Some of the code (Binary, Gray, XOR, ...) needs to binarize. This program provides three methods. See the wiki for details.
How to display images in full screen
When you use structured light, you'll need a full screen display from a projector or display. Here is a program to display the image in full screen.