which xmos for image processing

Non-technical related questions should go here.
User avatar
Posts: 11
Joined: Fri Oct 29, 2010 4:31 pm

which xmos for image processing

Post by shashi »


Have been looking at the various options available from XMOS. I have an application wherein about 400 frames of 1024x1024 pixels 14bit size are recorded per second. The total run may last for several minutes. Obviously that requires a large amount of storage. My question is whether any of the xmos options would be suitable to reduce the recorded data in realtime. To start with, can it have a memory allocation for 24 frames where each incoming image would be added starting from position 1 to 24 (and fold back to 1st) until the full run would be over. At the end of the run the 24 frames would be processed further to obtain a final calibrated set of 3 images.

This is for an astronomical imaging instrument with high time resolution.

Looking forward to the comments and suggestions,
Thanks in advance,


User avatar
XCore Legend
Posts: 1274
Joined: Thu Dec 10, 2009 10:20 pm

Post by Folknology »

Although XS1 cores have horse power they have very little memory a mere 64K for code and data (+8k OTP).

Assuming your image cannot be processed as a stream or line of data we need to look at the memory requirements

A single frame 1024*1024 as say 16bit depth = 1024*1024*2 = 2,097,152 or approx 2MB/frame.

if you split this over cores you would need about 32 cores assuming the image processing fits in the 8K OTP of each core.

Obviously if inter-frame processing had to occur (as it looks by your description) even more cores/memory would be required ~2*num of frames MB.

Unfortunately there is not external memory bus to hook up SDRAM, but it is possible to hook it up as an external memory controller via the Ports. Unfortunately the data rates obtainable using this method are fairly low in the 25-30MB/sec region.

If this is enough your application it could possibly be made to work.

Last edited by Folknology on Sun Mar 13, 2011 6:48 pm, edited 1 time in total.
User avatar
Respected Member
Posts: 377
Joined: Thu Dec 10, 2009 6:07 pm

Post by jonathan »

What pre-processing were you intending to apply to your framebuffer to yield 3 "calibrated images" from the e.g. 24-frame wide buffer?
User avatar
Posts: 11
Joined: Fri Oct 29, 2010 4:31 pm

Post by shashi »

Hi Al, Jonathan,

Thanks for the detailed replies. Yes, the memory requirement would be a bottleneck. I think I could live with that 20MB/sec throughput for the transfer through the ports.

This is for a polarimeter. There is a modulating half wave plate rotated by a stepper motor at about 5 to 10hz. The stepper takes 96 steps per rotation. At each step one image is acquired and the motor moves on. The rotation of 96 steps provides a four fold cycle in polarisation. Hence the 24 buffer frames. At each location the image acquired is added to the corresponding buffer. At the end of the run, further analytical fit is applied on the 24 frames to retrieve the I,Q and U components of the polarisation. The fit is a sinusoidal function to be applied to each pixel. This fitting part could be done offline on a parallel processing computer or a GPU.

I envisage one xmos device to take care of each buffer location. One master device could do the direction of the incoming image frame to the corresponding xmos device handling that buffer.

Thanks for your comments,
Best regards,
XCore Addict
Posts: 158
Joined: Thu Mar 20, 2014 8:04 am

Post by srinie »

Hi Shashi,
How are you going with XMOS experimentation?
Recently there are some image processing IPs and there is plan for image sensors slice as well.
Please have a look at

Please do revert back if you any have relevant queries.