The Cell Processor Computer Vision Project.
The CellCV project is a C/C++ computer vision project that aims at obtaining the parallel elaboration of image sequences, either acquired in real time by some dedicated hardware or by reading disk files, using the STI Cell Processor.
The CBEA architecture of the Cell Processor, available also on Sony PlayStation3, allows to split the input images in vertical bands thanks to the PPE Power Processor Element.
Each subimage is then mapped onto the SPE Synergistic Processing Elements' embedded SRAM through opportune MFC Memory Flow Controller commands and is analyzed by computer vision algorithms that satisfy one particular common software interface. These algorithms work identically in parallel on the subimages and return to the PPE a list of bounding boxes (regions of interest) identified on the subimage passed to them.
The resulting processed output subimages, modified by the algorithm, are mapped back to the main memory through MFC commands and are joined into a single output image by the PPE.
The PPE collects also the list of boxes and tracks over time the output image location evolution of these boxes, associating to each of them an unique ID.
Eventually the resulting output image with the regions of interest outlined is dumped on disk.
Since for each Cell core there are eight physical SPEs, if the implemented computer vision algorithm is compute-intensive, a speedup is obtained.
The so achieved parallelism can reduce sensibly the total time of an image elaboration and will evidence some speedup that will be statistically measured, comparing the frames per second of the serial execution of the algorithm with the fps of the parallel one.
The CellCV project consists of the code for realizing all the things above described and is built on a YellowDog 5.0 Linux distribution for PowerPC Processor, that exploits the capabilities of the Cell Processor, with installed the Cell SDK 2.0.