The image that the liquid-crystal-panel-based DOLPi takes at “45 degrees” is not strictly that, which is why I state in the paper:
“Bossa Nova’s method is straightforward if laboratory optical-grade components are used. These are very expensive and out of reach for most private enthusiasts. However, I found through experimentation that a welding mask LCP and a polarizer sheet can also give very satisfactory results.”
In reality, the LCP driven half-way acts as a quarter-wave plate, and hence the strict interpretation of the analysis at this level is for circular polarization rather than linear polarization at 45 degrees.
I didn’t want to go into a thorough explanation of polarization optics to keep the project accessible, but based on my experiments, I’m convinced that DOLPi’s “45 degree image” indeed contains a dominant 45 degree component when observing linearly polarized light.
This weekend I decided to build a mechanical filter-wheel-based polarimetric camera to serve as a basis for comparison to the LCP_based DOLPi. This camera is much slower than the LCP-based DOLPi because of the mechanical switching of filters, but it provides the data necessary for complete Stokes imaging (including the fourth Stokes parameter describing circular polarization). The pictures that it produces are of excellent quality!
The camera is also very simple to build, and its operation is simple to understand, so I’ll include it within the next version of the project’s whitepaper, as well as to the next-stage submission for the Hackaday Prize.
By way of a short explanation, a filter wheel (made of cardboard) holds 6 polarizer filters. Four of them are made of linear polarizer film set so to analyze the image at 0, 90, 45, and -45 degrees when the selected filter is placed in front of the Raspberry Pi camera. The other two filters are circular polarizer films taken from RealD 3D glasses. One slot in the filter wheel is left blank to make it possible to take unfiltered snapshots.
The filter wheel is rotated by a standard servo driven from an Adafruit Servo PWM HAT connected to a RasPi2. The Python code (to be published soon) takes 6 images (although only 4 are really required) to produce a complete Stokes and polarization analysis panel.
The picture on the right is a sample image obtained through DOLPi-Mech (linear analysis only, using pictures acquired with analyzer set at 0, 90, and 45 degrees).
The picture on the left is unfiltered (RasPi camera looking through open slot in filter wheel), while the picture on the right is produced by assigning the 0 degree grayscale image to the Red channel, the 90 degree grayscale to Blue, and the 45 degree grayscale to Green.
The sample target is made of polarizing film set at the angles shown. The two bottom squares are circular polarizers. (one LHCP and the other RHCP). We can’t tell the difference between the polarizer films because our vision is not sensitive to polarization (to any practical degree), and neither is the RasPi’s camera sensor.
Please note that colors in the picture of the right have nothing to do with the actual color of the object, but instead encode the Angle of Polarization. Pure gray tones in the polarimetric image mean that light is unpolarized. Some of the coloring pencils and other stuff in the background shows in color because they partially polarize reflected light as a function of their material, texture, and angle of reflection.
Update 9/19/2015: New DOLPi whitepaper version release at: DOLPi_Polarimetric_Camera_D_Prutchi_2015_v2