Here are the elements I gathered to start experimenting:
- A nice implementation of the color transfer algorithm, easy to install and run on the pi.
- An installation of OpenCV on the pi. It's possible to have a fully optimized OpenCV installation for your pi building it from the source but for this project it's okay to install the library from binaries (this command will do the trick: sudo apt-get install python-opencv).
- A camera stand that I built myself recycling the components of an unused usb fan.
The Python script to acquire and recolor the images turned out to be pretty compact:
from picamera.array import PiRGBArray from picamera import PiCamera from sys import argv # get this with: pip install color_transfer from color_transfer import color_transfer import time import cv2 # init the camera camera = PiCamera() rawCapture = PiRGBArray(camera) # camera to warmup time.sleep(0.1) # capture camera.capture(rawCapture, format="bgr") captured = rawCapture.array # import the color source color_source = cv2.imread(argv[1]) # transfer the color result = color_transfer(color_source, captured, clip=True, preserve_paper=False) cv2.imwrite(argv[2], result)This script captures an image from the camera and reads another image, that will be the color source, from the disk. Then, it recolors the captured image and saves the result. The script takes in input two parameters, the color source and the name of the file in output. Here's an example of how to run the script on the pi:
$ python capture.py color_source.jpg result.jpgHere are some samples pictures that were recolored. In each of the figures below there is the color source on the left, the image from the NoIR camera in the middle and final result on the right.
Here the source has vivid colors and the details are nice and sharp while the image from the NoIR camera is almost monochromatic. In the recolored image the color of the curtain and the wall were recovered, still the image has quite a low contrast.
This time the resulting image is much sharper and the resulting colors are more intense, even more intense than the source.
This result is particularly interesting because the NoIR image shows very nasty colors as there was quite a lot of sunlight when the picture was taken. Recoloring the image I could recover the green of some trees and the blue of the sky, however the walls and the ground got a greenish appearance while some plants look purple.
In conclusion, this turned out to be a fun experiment that also provided some encouraging results. Next step? Recoloring the images with, more modern, Deep Learning techniques.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.