Hello, I am a master student who for his thesis project tries to use a GE Vscan Extend Ultrasound to perform a real-time 3D reconstruction of a phantom. However, from what I’ve read, I don’t think this type of scanner is supported. Is there a way to use such an ultrasound?
Hi Paolo - sorry for the slow response! I ran into a similar issue when using the GE Vscan Air CL to perform 3D ultrasound reconstructions. The challenge is that the GE VScan products do not have an API that supports realtime streaming as far as I’m aware.
While GE does have some developer resources for interfacing with their ultrasound products (which you can apply to access through the GE Ultrasound Developer Program), they do not currently support the VScan family of products. The only products for which there is an API that supports realtime streaming of image data are the Vivid and EchoPAC systems.
The Vscan Air CL probe that I was using primarily interfaces with an app on a mobile device. A possible workaround I explored was streaming the contents of the mobile device’s screen into Slicer. To test this I made a Slicer extension that can connect with an Android device and streams the contents of the phone screen into Slicer as a scalar volume. It uses a Python version of the Android Debug Bridge (ADB) called python-adb to communicate with the phone and was able to achieve around 5 fps at full resolution with around 1 second of latency. I’m happy to package this extension into a public repository if anyone is interested.
There were several limitations to this approach. Text and graphics on the phone screen appeared as artifacts in the ultrasound images; I was only able to achieve this with a wired connection to the phone; and ultrasound calibration was difficult to maintain due to the probe zoom and overall field of view being altered by the user. We were still able to perform ultrasound calibration and 3D volume reconstruction despite these challenges, but the quality was poor.
The GE Vscan Extend that you’re using comes packaged with its own display, rather than connecting to a user’s phone, which further complicates streaming data from the device. The built-in display does appear to just be a phone running Android, but I suspect GE has put restrictions on modifying properties of the device. Communicating with a phone through Android Debug Bridge requires low-level access to the device which is likely locked in a commercial product.
If you do find you’re able to connect the Android display to a computer via USB and enabling USB debugging mode on the display I can share some more details on how to setup streaming into Slicer. Otherwise unfortunately I’m not aware of any other methods of streaming the data into Slicer from that probe.
I hope this is helpful! Do let me know if I can clarify any details or answer any further questions.
@ColtonBarr Hi Colton, Thank you so much for the detailed explanation. I was able to enable USB debugging mode on the display and connect the Ge Vscan extend to the PC. I would be interested in understanding how you then made the extension and I would like to have more details on how to set up streaming in Slicer.
Hi @ruben99999 - happy to help! That’s great to hear that you were able to get the VScan connected to your PC. This may be a feasible method of getting data off the device.
I’ve created a public GitHub repo where you can access the Slicer extension for streaming from an Android device: StreamAndroidExtension. This extension should enable you select your Android device from a dropdown menu, set some streaming settings, and stream the contents of the Android device’s screen into a Volume node in Slicer. Here is a diagram showing the general setup:
While this diagram covers how I used it to stream from the GE Vscan Air, the same general scheme applies to the Ge Vscan Extend. I’ve included the basic setup instructions and some troubleshooting tips in the ReadMe on GitHub.
Let me know if you run into any issues getting the extension running! Also feel free to submit issues to the GitHub if there are bugs that come up or features you would like added. I think streaming from an Android device into Slicer could be more broadly applicable beyond this specific use-case so I’m happy to continue improving the extension.