Discussion, spinning disc as mask concept


I’m posting this into the forum, these are Richard’s comments - we were still kind of figuring out the appropriate place for discussions and I think gitlab ain’t it :slight_smile: so let’s try it here.

This discussion is in reference to:

@rbowman’s comments on the first version of the spinning-mask idea

I think this is potentially a really nice way to produce a single pixel imager. The most common way is to use a DLP chip (essentially a hacked micro projector, though most folk use the TI development board for convenience). This has impressive specs: patterns display at up to 1.4kHz or even 20kHz (depending on budget), timing is really good, and the masks can be arbitrary. However, it costs from £400 up to £20k, which is a bit steep for many applications!

Using a spinning disk has, to my mind, advantages and disadvantages. Good news first:

  • Spinning a disk quickly is easy - can potentially get a very high pattern rate.
  • Can be pretty cheap.
  • Patterns get translated across the image - might be able to use this to improve resolution


  • Patterns translate across the image - motion blur might be a problem for long exposures, or you’d have to stop the disk at each position (tricky to go fast).
  • You’d need to encode the position of the disk very precisely, and account for any wobble in the rotation axis. I think that could be done though.

I am also not sure if simply rotating a mask about its centre would be able to give (enough) independent patterns; it constrains you to have some symmetry between all the patterns, which could be a problem. That can be simulated, though. I’d always assumed we’d use a strip near the edge - which also simplifies the optical design.

Lastly, bear in mind that the optical design needs to have an imaging system between the object and the mask - the one that’s shown in the PDF would work, but only as a pinhole camera - the efficiency would be frighteningly low. Using a lens in front of the mask to image the scene onto the mask should work much better…


Thanks Richard - answers some of my key go / no go questions - is the basic concept feasible… yes, plus caveats. My responses;

  • Is the math of a spinning disc with non-square ‘holes’ significantly harder than square holes? Does that require some more work to be done to make the math work?
  • I’ll update the optics as a requirement - we need something more robust than a pinhole camera for sure. Any suggestions on optics or places to look for them (or selection process) would be super helpful, I’m no expect on traditional optics of that type.
  • I’ll update the description page to include blur evaluation as a testing requirement and potential design flaw, and ‘wobble-free’, all of which would need to be addressed. This depends on the characteristics of the motor and mechanical design, so there will be some back and forth on the ‘we need something to do this’, ‘well I found a motor that does this’, ‘well maybe that’s ok given that’, kind of stuff.
  • it is possible to use two spinning disks (Andriy Herts suggested Nipkow disks for example, though there are many possible designs) to get a wider range of mask types. This is tricker to design, and maybe harder to do the math on and make more wobble free. But if you think this would help significantly, it’s a possible design avenue.

If you are familiar with inkscape, could you add the location and any info about the optical design into the inkscape file and re-save as PDF? I could try but you are more of the expert there.

Also, you suggested we could simulate some of these ideas. I think having a simulation we can run easily would really speed up our initial development so instead of guessing about how much one design is more efficient/faster/better than another, we’ll just know… how hard would it be to set up such a simulation?


I’m interested in working on this as well, seems like a great opportunity to have some backing from the manufacturers of this hardware.
The sensor itself is basically a spectrometer, yeah? It has a refraction mechanism and outputs the spectrum of whatever light is going into it.
Can someone articulate the whole spinning disk thing a little more? Is it a way of getting two dimensional information into the single pixel?


Yes, the mini spec is just that - a really small spectrometer ranging from 350nm - 850nm. It outputs an array of 256 numbers which are the return values from 350 - 850nm. Here is an example output (note! this is actually 12 spectral measurements all stuck together one after another, but you get the idea).


The basic problem to solve with a single pixel camera is how to get enough unique masks (2000 - 3000 based on the literature, with lots of caveats) in order to reconstruct the image. The spinning disc is a cheap, pretty easy-to-manufacture way to get all those masks by collecting data from the spec at each point as the disc spins (each point is a unique mask). The tricky bits (as richard and others have pointed out) is making sure we have enough unique rotations and that they are sufficiently random, ensuring there’s no blurring as the spec collects data, and doing this all in a reasonable speed. You can find the speed calculations and discussion here:

There is nothing to say that the spinning disk idea is the right way to go btw! It’s just the idea we came up with at GOSH that seems plausible. I’d love to see other ideas thrown out there or tested.


Thanks, I get it now.
Is the image/data processing side of things worked out at all? Seems like it could be a serious challenge to get high-ish quality images using this method?
I filled out the application form. I think I could definitely help with the mask design side of things.


It depends entirely on what you mean by “high-ish”. A reasonable-quality single pixel camera image might be 32x32 or 64x64, maybe even 128x128. Much higher, and you start to hit problems, as you need to invert a very large matrix… It’s often possible to cheat though - to use a webcam at the same time as a single pixel camera, and fuse the images so you take IR or spectral data at low resolution, then map it onto a high-res picture. It’s amazing how much better this looks, and how much more useful it is, despite costing basically nothing in terms of hardware improvements.


re: motion blur, do you think it might make sense to use two discs to create some sort of zoetrope arrangement (i.e. you have a slit that scans over each image as it passes, meaning that you effectively “see” a sequence of static images). I’m pretty sure you could do this with two counterrotating discs. The disadvantage of that is that you reduce your transmission substantially (like a factor of 100) so it would only work in very bright light.


Well, we may be able to speed things up quite a bit after talking to some other folks who’ve improved ont he GroupGets code using teensy 3.6 . It’s 192 MHz, and we can up the clock speed to 100ns from 1ms which saves quite a bit of time (from my current estimate of 20 seconds @ 2000 reads to ~8 seconds @ 2000 reads). I’ll post the details here in a bit.

It’s TBD if we have the signal quality to handle low light situations… my guess is we do (the spec seems to be designed for lower light, and clips at high light anyway). Given that many applications are in controlled light situations, we can provide the light source if we want (on the groupgets board) so if we need to, we can cheat :slight_smile: .

The zeotrope would have to go both ways (side to side and up and down), right? Otherwise we couldn’t pixelize the output to an image… or am I misunderstanding?


I think a zoetrope would be able to project a series of (more-or-less) static 2D images using two counterrotating discs. Essentially, what you see is a line scanning over the image (e.g. vertically), which is the slit (on one of the discs). As that slit passes over the image, the other disc is moving in the opposite direction with the 2D image on it (upside-down). If you think about it line-by-line, you end up (accounting for persistence of vision/finite exposure time) with a line-scanned version of the image, the right way up. However, you lose light by a factor of 1/(number of lines in your image) which is a lot!

I think there may be versions of a zoetrope that use a lens for better efficiency, but my knowledge runs out there…


Hi all
I’m catching up with this, so I don’t know if this has been mentioned before. The original Baird TV system used spinning disk masks at the camera and receiver to allow use of a single photodetector. I think he even used three spirals with filters to do a colour system. You might find some useful stuff in the online history of Baird’s system, but most of it is a bit thin on technical content (like the Wikipedia page for example https://en.wikipedia.org/wiki/John_Logie_Baird ). He synchronised the position of the masks so the output and input disks were in the same position. If you encode the position of the input mask you know where the light dot is on your arc-shaped scan. For a 32 “pixel” scan you have 32 holes around the disc each one at a different radius spaced out circumferentially so that each passes through the image without overlap. I’m guessing the disc rotates in the focal plane of the camera lens and acts like a focal plane shutter. You might need some relay optics behind the focal plane depending on the size of the detector.

Regarding non circular apertures, you will get some strange diffraction effects from square holes. I have used triangular apertures on box camera designs with some quite vicious jagged blur. Not particularly nice, but if the resolution is low you may not be bothered by that.