Giter VIP home page Giter VIP logo

ifl-camp / supra Goto Github PK

View Code? Open in Web Editor NEW
183.0 16.0 70.0 1.47 MB

SUPRA: Software Defined Ultrasound Processing for Real-Time Applications - An Open Source 2D and 3D Pipeline from Beamforming to B-Mode

License: GNU Lesser General Public License v2.1

CMake 5.35% Shell 0.03% C++ 83.32% Cuda 10.51% Python 0.53% MATLAB 0.26% M 0.01%
supra cuda pipeline ultrasound-pipeline ultrasound ultrasound-imaging software-defined tum openigtlink 3d

supra's People

Contributors

berndmweber avatar chennersp avatar faraxnak avatar goeblr avatar marcoesposito1988 avatar shekhardw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

supra's Issues

MHD writter Format not readable by SimpleITK or 3D slicer

Background information

written Beamformed (3D) mhd files are not readable by either Simple ITK or 3D Slicer.

File

ObjectType = Image
NDims = 3
DimSize = 256 2000 26        
ElementNumberOfChannels = 1
ElementType = MET_UCHAR
ElementSpacing = 0.02001000500250125005 0.02001000500250125005 1
AnatomicalOrientation = RAI
BinaryData = True
BinaryDataByteOrderMSB = False
CenterOfRotation = 0 0 0
CompressedData = False
TransformMatrix = 1 0 0 0 1 0 0 0 1
UltrasoundImageOrientation = MFA
UltrasoundImageType = BRIGHTNESS
ElementByteOrderMSB = False
Seq_Frame0000_ImageStatus = OK
Seq_Frame0000_Timestamp = 1515760436.051510096
Seq_Frame0001_ImageStatus = OK
Seq_Frame0001_Timestamp = 1515760436.626828194
Seq_Frame0002_ImageStatus = OK
Seq_Frame0002_Timestamp = 1515760437.204338074
Seq_Frame0003_ImageStatus = OK
Seq_Frame0003_Timestamp = 1515760437.782961369
Seq_Frame0004_ImageStatus = OK
Seq_Frame0004_Timestamp = 1515760438.362620831
Seq_Frame0005_ImageStatus = OK
Seq_Frame0005_Timestamp = 1515760438.941310644
Seq_Frame0006_ImageStatus = OK
Seq_Frame0006_Timestamp = 1515760439.531028748
Seq_Frame0007_ImageStatus = OK
Seq_Frame0007_Timestamp = 1515760440.108578205
Seq_Frame0008_ImageStatus = OK
Seq_Frame0008_Timestamp = 1515760440.688335657
Seq_Frame0009_ImageStatus = OK
Seq_Frame0009_Timestamp = 1515760441.269950628
Seq_Frame0010_ImageStatus = OK
Seq_Frame0010_Timestamp = 1515760441.848456621
Seq_Frame0011_ImageStatus = OK
Seq_Frame0011_Timestamp = 1515760442.428308725
Seq_Frame0012_ImageStatus = OK
Seq_Frame0012_Timestamp = 1515760443.006823063
Seq_Frame0013_ImageStatus = OK
Seq_Frame0013_Timestamp = 1515760443.585642338
Seq_Frame0014_ImageStatus = OK
Seq_Frame0014_Timestamp = 1515760444.164233446
Seq_Frame0015_ImageStatus = OK
Seq_Frame0015_Timestamp = 1515760444.742943048
Seq_Frame0016_ImageStatus = OK
Seq_Frame0016_Timestamp = 1515760445.322571278
Seq_Frame0017_ImageStatus = OK
Seq_Frame0017_Timestamp = 1515760445.902441978
Seq_Frame0018_ImageStatus = OK
Seq_Frame0018_Timestamp = 1515760446.479923725
Seq_Frame0019_ImageStatus = OK
Seq_Frame0019_Timestamp = 1515760447.072831154
Seq_Frame0020_ImageStatus = OK
Seq_Frame0020_Timestamp = 1515760447.673601389
Seq_Frame0021_ImageStatus = OK
Seq_Frame0021_Timestamp = 1515760448.252296448
Seq_Frame0022_ImageStatus = OK
Seq_Frame0022_Timestamp = 1515760448.842797518
Seq_Frame0023_ImageStatus = OK
Seq_Frame0023_Timestamp = 1515760449.629186869
Seq_Frame0024_ImageStatus = OK
Seq_Frame0024_Timestamp = 1515760450.214698553
Seq_Frame0025_ImageStatus = OK
Seq_Frame0027_Timestamp = 1515760450.801201105

3D Slicer error log:

File cannot be read: /Volumes/data/MICCAI2018_ENHANCEMENT/scan_converted_ground_truth/With_Protocoll/Guillaume_Zahnd_33_M/Right/Transverse/Thyroid/rawData_19_beamformed.mhd for reading.
Reason: Undefined error: 0


Algorithm vtkITKArchetypeImageSeriesScalarReader(0x130eae5d0) returned failure for request: vtkInformation (0x60400386d580)
  Debug: Off
  Modified Time: 3516961
  Reference Count: 1
  Registered Events: (none)
  Request: REQUEST_INFORMATION
  FORWARD_DIRECTION: 0
  ALGORITHM_AFTER_FORWARD: 1




ReadData: This is not a nrrd file


ReadData: Cannot read file as a volume of type DiffusionTensorVolume[fullName = /Volumes/data/MICCAI2018_ENHANCEMENT/scan_converted_ground_truth/With_Protocoll/Guillaume_Zahnd_33_M/Right/Transverse/Thyroid/rawData_19_beamformed.mhd]
	Number of files listed in the node = 0.
	File reader says it was able to read 1 files.
	File reader used the archetype file name of /Volumes/data/MICCAI2018_ENHANCEMENT/scan_converted_ground_truth/With_Protocoll/Guillaume_Zahnd_33_M/Right/Transverse/Thyroid/rawData_19_beamformed.mhd [reader 0th file name = /Volumes/data/MICCAI2018_ENHANCEMENT/scan_converted_ground_truth/With_Protocoll/Guillaume_Zahnd_33_M/Right/Transverse/Thyroid/rawData_19_beamformed.mhd]
FileFormatError



ReadData: This is not a nrrd file


ReadData: Failed to instantiate a file reader


ReadData: Cannot read file as a volume of type Volume[fullName = /Volumes/data/MICCAI2018_ENHANCEMENT/scan_converted_ground_truth/With_Protocoll/Guillaume_Zahnd_33_M/Right/Transverse/Thyroid/rawData_19_beamformed.mhd]
	Number of files listed in the node = 0.
	File reader says it was able to read 1 files.
	File reader used the archetype file name of /Volumes/data/MICCAI2018_ENHANCEMENT/scan_converted_ground_truth/With_Protocoll/Guillaume_Zahnd_33_M/Right/Transverse/Thyroid/rawData_19_beamformed.mhd [reader 0th file name = /Volumes/data/MICCAI2018_ENHANCEMENT/scan_converted_ground_truth/With_Protocoll/Guillaume_Zahnd_33_M/Right/Transverse/Thyroid/rawData_19_beamformed.mhd]
FileFormatError

Solution:

After a comparison of past .mhd files It would seem the "ElementDataFile" tag is not being written to the end of the MHD. I have manually added the line and the file format can be loaded.

Missing line from example

ElementDataFile = rawData_6_beamformed.raw

[Feature Request] Sequence timer

A Sequence timer would be very helpful for recording standardized acquisitions. I could imagine both time and number of frames being useful parameters. The behavior I can imagine would be setting an expiration time or number of frames before beginning the sequence and a count down over or next to the stop button.

typo

This is small but here there is a typo in "build"

what does runtime for a node mean

Hi Supra team, there is a runtime show in the node box on GUI. What does this mean? Does it is the proccessing time used by the node?
image

Inappropriate block size for ScanConverterNode

I try to change the block size of ScanConverterNode from (1,256) to (16,8) which reach a great performance improvements in my side GTX 1080, 1.2ms to 0.3ms and TX2 25.50ms to 3.16ms.
So this may be common that current block size cause performance drop.

Running on windows?

Are there better step-by-step instructions to run on Windows? Also, is there Visual Studio the latest solution?

[Feature Request] Configuration writer.

It would be useful to be able to modify a given configuration file in the GUI and save the modifications to a new .xml configuration file. This would save tuning parameters in the GUI with a live image and then having to modify the configuration file after the fact.

Nice to have: Keyboard short cuts

it would be nice to have keyboard shortcuts to start and stop a sequence recording. One idea would be the space bar. Another the s key.

Ask for help with a question:How to visualize the models_supra graphically ?

Ask for help with a question:How to visualize the models_supra graphically ?

I am try to undestand the 'AbstractInput.h', in the comments there is a 'Visual Studio models in doc/models_supra.', but I try using vs studio 2022 still cannot visualize it as a graph.

  1. Is it possilble to visualize it ?
  2. if it is a yes, how to do it ?
    Thanks.

Could not find a package configuration file provided by "OpenIGTLink"

CMake Error at src/SupraLib/CMakeLists.txt:111 (find_package):
By not providing "FindOpenIGTLink.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"OpenIGTLink", but CMake did not find one.

Could not find a package configuration file provided by "OpenIGTLink" with
any of the following names:

OpenIGTLinkConfig.cmake
openigtlink-config.cmake

Add the installation prefix of "OpenIGTLink" to CMAKE_PREFIX_PATH or set
"OpenIGTLink_DIR" to a directory containing one of the above files. If
"OpenIGTLink" provides a separate development package or SDK, be sure it
has been installed.

License Question

The SUPRA paper says that it is licensed under LPGL v3, but the LICENSE file says v 2.1. Can you confirm the licensing?

Build failed in Ubuntu 14.04

Hi,
My computer configuration is Ubuntu 14.04 x86_64, cmake 3.4.0, gcc 4.8.4, QT>= 5.5, CUDA 8.0.
After i clone the master code, followed the build process, it comes to errors:
CMake Error at cmake/FindCUDA.cmake:1366 (string):
string does not recognize sub-command APPEND
Call Stack (most recent call first):
cmake/FindCUDA.cmake:1731 (CUDA_WRAP_SRCS)
src/SupraLib/CMakeLists.txt:362 (CUDA_ADD_LIBRARY)

CMake Error at cmake/FindCUDA.cmake:1372 (string):
string does not recognize sub-command APPEND
Call Stack (most recent call first):
cmake/FindCUDA.cmake:1731 (CUDA_WRAP_SRCS)
src/SupraLib/CMakeLists.txt:362 (CUDA_ADD_LIBRARY)

CMake Error at cmake/FindCUDA.cmake:1366 (string):
string does not recognize sub-command APPEND
Call Stack (most recent call first):
cmake/FindCUDA.cmake:1731 (CUDA_WRAP_SRCS)
src/SupraLib/CMakeLists.txt:362 (CUDA_ADD_LIBRARY)

CMake Error at cmake/FindCUDA.cmake:1372 (string):
string does not recognize sub-command APPEND
Call Stack (most recent call first):
cmake/FindCUDA.cmake:1731 (CUDA_WRAP_SRCS)
src/SupraLib/CMakeLists.txt:362 (CUDA_ADD_LIBRARY)

CMake Error at cmake/FindCUDA.cmake:1366 (string):
string does not recognize sub-command APPEND
Call Stack (most recent call first):
cmake/FindCUDA.cmake:1731 (CUDA_WRAP_SRCS)
src/SupraLib/CMakeLists.txt:362 (CUDA_ADD_LIBRARY)

CMake Error at cmake/FindCUDA.cmake:1372 (string):
string does not recognize sub-command APPEND
Call Stack (most recent call first):
cmake/FindCUDA.cmake:1731 (CUDA_WRAP_SRCS)
src/SupraLib/CMakeLists.txt:362 (CUDA_ADD_LIBRARY)

CMake Error at cmake/FindCUDA.cmake:1366 (string):
string does not recognize sub-command APPEND
Call Stack (most recent call first):
cmake/FindCUDA.cmake:1731 (CUDA_WRAP_SRCS)
src/SupraLib/CMakeLists.txt:362 (CUDA_ADD_LIBRARY)

CMake Error at cmake/FindCUDA.cmake:1372 (string):
string does not recognize sub-command APPEND
Call Stack (most recent call first):
cmake/FindCUDA.cmake:1731 (CUDA_WRAP_SRCS)
src/SupraLib/CMakeLists.txt:362 (CUDA_ADD_LIBRARY)

By searching the google, can not find the results. So, please help to solve this problem, thanks.

Build fails with Cephasonics on Ubuntu 18.04

Hi

I am trying to build SUPRA with Cephasonics but have the following error :

/home/cephasonics/git/supra/src/SupraLib/InputOutput/UsIntCephasonicsBtcc.cpp: In member function ‘void supra::UsIntCephasonicsBtcc::putData(uint16_t, uint32_t, size_t, size_t, int16_t*)’:
/home/cephasonics/git/supra/src/SupraLib/InputOutput/UsIntCephasonicsBtcc.cpp:879:60: error: call of overloaded ‘abs(uint32_t&)’ is ambiguous
       uint32_t absVal = m_intensityScaling*(double)(abs(sum)) / numSamples;
                                                            ^
In file included from /usr/include/c++/7/cstdlib:75:0,
                 from /usr/local/include/boost/config/platform/linux.hpp:15,
                 from /usr/local/include/boost/config.hpp:53,
                 from /usr/local/include/boost/thread/detail/platform.hpp:14,
                 from /usr/local/include/boost/thread/mutex.hpp:12,
                 from /usr/local/cusdk/inc/fal/capdmp/DataProcessor.h:29,
                 from /home/cephasonics/git/supra/src/SupraLib/InputOutput/UsIntCephasonicsBtccProc.h:16,
                 from /home/cephasonics/git/supra/src/SupraLib/InputOutput/UsIntCephasonicsBtcc.cpp:12:
/usr/include/stdlib.h:837:12: note: candidate: int abs(int)
 extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
            ^~~
In file included from /usr/include/c++/7/cstdlib:77:0,
                 from /usr/local/include/boost/config/platform/linux.hpp:15,
                 from /usr/local/include/boost/config.hpp:53,
                 from /usr/local/include/boost/thread/detail/platform.hpp:14,
                 from /usr/local/include/boost/thread/mutex.hpp:12,
                 from /usr/local/cusdk/inc/fal/capdmp/DataProcessor.h:29,
                 from /home/cephasonics/git/supra/src/SupraLib/InputOutput/UsIntCephasonicsBtccProc.h:16,
                 from /home/cephasonics/git/supra/src/SupraLib/InputOutput/UsIntCephasonicsBtcc.cpp:12:
/usr/include/c++/7/bits/std_abs.h:56:3: note: candidate: long int std::abs(long int)
   abs(long __i) { return __builtin_labs(__i); }
   ^~~
/usr/include/c++/7/bits/std_abs.h:61:3: note: candidate: long long int std::abs(long long int)
   abs(long long __x) { return __builtin_llabs (__x); }
   ^~~
/usr/include/c++/7/bits/std_abs.h:70:3: note: candidate: constexpr double std::abs(double)
   abs(double __x)
   ^~~
/usr/include/c++/7/bits/std_abs.h:74:3: note: candidate: constexpr float std::abs(float)
   abs(float __x)
   ^~~
/usr/include/c++/7/bits/std_abs.h:78:3: note: candidate: constexpr long double std::abs(long double)
   abs(long double __x)
   ^~~
/usr/include/c++/7/bits/std_abs.h:84:3: note: candidate: constexpr __int128 std::abs(__int128)
   abs(__GLIBCXX_TYPE_INT_N_0 __x) { return __x >= 0 ? __x : -__x; }
   ^~~
/usr/include/c++/7/bits/std_abs.h:102:3: note: candidate: constexpr __float128 std::abs(__float128)
   abs(__float128 __x)
   ^~~
[ 80%] Building CXX object src/SupraLib/CMakeFiles/SUPRA_Lib.dir/InputOutput/MhdSequenceWriter.cpp.o
src/SupraLib/CMakeFiles/SUPRA_Lib.dir/build.make:15573: recipe for target 'src/SupraLib/CMakeFiles/SUPRA_Lib.dir/InputOutput/UsIntCephasonicsBtcc.cpp.o' failed
make[2]: *** [src/SupraLib/CMakeFiles/SUPRA_Lib.dir/InputOutput/UsIntCephasonicsBtcc.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:85: recipe for target 'src/SupraLib/CMakeFiles/SUPRA_Lib.dir/all' failed
make[1]: *** [src/SupraLib/CMakeFiles/SUPRA_Lib.dir/all] Error 2
Makefile:151: recipe for target 'all' failed
make: *** [all] Error 2

This error only happen when I try to build supra with cephasonics. My cusdk version is 2.6.13. Any idea what could cause this ?

Thank you !

Writer Status icon.

The GUI needs a status icon for the writer..... when too many writers are open, the frame-rate drops dramatically

Build library as a DLL

I would like to use the SUPRA library in accordance to LGPL 2.1, but there is no way to build it as a DLL, only static. None of the code contains the necessary __declspec(dllexport) declarations for instance.

Would it be possible to provide this option? Would it make sense for me to provide the required changes as a pull request?

Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.