scan conversion
Actual best performances
@gregsadetsky obtained a performance of 31-32 fps with OpenCV implementation
@loic-fejoz obtained a performance of 10-12 fps with hand-made scan conversion algo
Challenge
The signal coming from the transducer, once preprocessed, can be represented by a double array with polar coordinates. We want to turn this array into cartesian coordinates and take into account that this converted array won't match the double "x-y" array consisting of the pixels of the screen of the phone.
You'll find detailed explanation here.
Difficulty (1-5)
3
MISSION
The incoming stream of raw data transmitted by the electronics must be converted into an image stream.
Data are coming in polar coordinates and there do not match the resolution of the screen. When we project these images on the screen with repect to the distances, converted data do not fit perfectly on the screen pixels.
Therefore, it is of importance to interpolate the raw signal to produce the data pixelated on the device screen, as shown in the diagram below.
BEFORE / AFTER
TRADEOFF
techniques already exist and must weigh the optimality of the interpolation with the real-time requirement. The image provided to the radiologist should be in real time.
We will retain the most effective method.
REWARD
- Residency in our Head Quarters located at the very center of Paris, on le Parvis de Notre Dame (hosting and breakfast )
- DevBox USB keys at your name, T-shirts and other Goodies
- Mention on our Hall of fame of open sources dudes
RESSOURCES
- You can find stuff, code and ideas here
- librairies : OpenCV, specific to android lib OpenGL ES, basé sur OpenGL ou autre
- de nombreuses techniques d’interpolations existent : nearest neighboor, interpolation linéaire ou bilinéaire, méthodes assistée par Open GL ...
- clonables/forkables sourcesare hosted on Github
- Simulated data are available here
REPOS
Pull-requests submissions to REPO
Current implementations
For now, several implementations have been tested
On the master branch
- The most effective is obtained through an OpenCV implementation. Indeed, OpenCV comes with a
linearPolar
method that enables polar to cartesian transform + an interpolation, which is precisely the ScanConversion trick. Let's precise that the type of interpolation can be choosen amongst several core implementation? Here, we use cubic interpolation.
- The most effective is obtained through an OpenCV implementation. Indeed, OpenCV comes with a
On the redpitaya_udp_data
- Here, the scanconversion consists in a simple computation of a weight table that is then applied to the image to be converted. The processing time gain comes from the use of
OpenCL
library which is reached from the java app through the JNI.
- Here, the scanconversion consists in a simple computation of a weight table that is then applied to the image to be converted. The processing time gain comes from the use of
SUDOERS
@nowami [email protected]
ECHPERTS
on github aka @gregsadetsky