Git Product home page Git Product logo

recast3d's Introduction

RECAST3D

REConstruction of Arbitrary Slices in Tomography

This project contains a full-stack implementation of a tomographic reconstruction and visualization pipeline.

RECAST3D is visualization software for tomographic imaging based on on-demand reconstruction of arbitrary slices, and is built for use in a distributed, real-time, and online reconstruction pipeline.

The repository also contains two support libraries, TomoPackets and SliceRecon.

The TomoPackets library defines a protocol for sending messages between the different components (scanners, reconstruction nodes, visualization workstations) for real-time tomographic reconstruction and we encourage its use also outside of RECAST3D.

SliceRecon contains efficient implementations for reconstructing arbitrarily oriented slices through a 3D volume. It defines servers that are able to communicate to data sources (using TomoPackets) and visualization software (such as, but not exclusively, RECAST3D).

Installation

For installation instructions, see the installation documentation.

Authors

RECAST3D is developed by the Computational Imaging group at CWI. Original author:

  • Jan-Willem Buurlage (@jwbuurlage)

Contributions by:

  • Holger Kohr (@kohr-h)
  • Willem Jan Palenstijn (@wjp)
  • Allard Hendriksen (@ahendriksen)
  • Adriaan Graas (@adriaangraas)
  • Daan Pelt (@dmpelt)

Contributing

We welcome contributions. Please submit pull requests against the develop branch.

If you have any issues, questions, or remarks, then please open an issue on GitHub.

Publications using RECAST3D

Article Code
Real-time reconstruction and visualisation ... at TOMCAT. Sci.Rep. DOI
Real-time quasi-3D tomographic reconstruction. MST. DOI

Please cite us

If you have used RECAST3D for a scientific publication, we would appreciate citations to the following paper:

Real-time quasi-3D tomographic reconstruction. JW Buurlage, H Kohr, WJ Palenstijn, KJ Batenburg. Measurement Science and Technology (2018)

License

This project is licensed under the GPL. See LICENSE.md for details.

recast3d's People

Contributors

adriaangraas avatar ahendriksen avatar dmpelt avatar jwbuurlage avatar wjp 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

Watchers

 avatar  avatar  avatar  avatar  avatar

recast3d's Issues

Assertion when dragging slice

This failed assertion is fairly reproducible when rapidly LMB clicking/dragging slices for a minute or so with slices being fed from slicerecon_server. (Running RECAST3D cab5a9c .)

#0  0x00007ffff77dee35 in raise () from /lib64/libc.so.6
#1  0x00007ffff77c9895 in abort () from /lib64/libc.so.6
#2  0x00007ffff77c9769 in __assert_fail_base.cold () from /lib64/libc.so.6
#3  0x00007ffff77d7566 in __assert_fail () from /lib64/libc.so.6
#4  0x00000000005997d2 in tomovis::SliceTranslator::on_drag (this=0x73c6970, delta=...)
    at /export/scratch1/home/wjp/build/RECAST3D/include/graphics/components/reconstruction_component.hpp:77
#5  0x000000000059ab57 in tomovis::ReconstructionComponent::handle_mouse_moved (y=<optimized out>, 
    x=<optimized out>, this=0x5660570)
    at /export/scratch1/home/wjp/pkgs/miniconda3/envs/recast/include/glm/detail/type_vec2.inl:18
#6  tomovis::ReconstructionComponent::handle_mouse_moved (this=0x5660570, x=<optimized out>, 
    y=<optimized out>)
    at /export/scratch1/home/wjp/build/RECAST3D/src/graphics/components/reconstruction_component.cpp:448
#7  0x000000000058b501 in tomovis::SceneObject::handle_mouse_moved (this=0x565fd00, x=-0.0814814791, 
    y=-0.053703703) at /usr/include/c++/9/bits/unique_ptr.h:357
#8  0x0000000000571f5c in tomovis::Input::tick (this=<optimized out>)
    at /export/scratch1/home/wjp/build/RECAST3D/src/input.cpp:59
#9  0x0000000000593626 in tomovis::Renderer::main_loop (this=this@entry=0x7fffffffcdc0)
    at /export/scratch1/home/wjp/build/RECAST3D/src/graphics/renderer.cpp:51
#10 0x0000000000563a01 in main () at /export/scratch1/home/wjp/build/RECAST3D/src/main.cpp:61

Building develop branch leads to incomplete type error

I am trying to build the develop branch of Recast to work with the develop branch with SliceRecon. This is done because spawning a SliceRecon server crashes Recast if I use the develop branch of SR and the master branch of Recast (this will be a different issue perhaps).

The installation procedure I tried is based on the install script provided in conda/build.sh (I also tried cloning the repo and running cmake but this lead to all sorts of problems solved in the conda build script):

  1. In order to use the work done before by using the meta.yaml file provided in conda/meta.yaml we created a conda debug environment:
    conda debug conda/ followed by:
    cd /export/scratch1/schoonho/anaconda3/conda-bld/debug_1571407408363/work && source /export/scratch1/schoonho/anaconda3/conda-bld/debug_1571407408363/work/build_env_setup.sh

  2. We prepare glmConfig.cmake:
    mkdir ext/glm/build && cd ext/glm/build
    cmake ..
    cd ../../../

  3. As instructed in the build script, we run:
    declare -a CMAKE_PLATFORM_FLAGS
    CMAKE_PLATFORM_FLAGS=(-DCMAKE_TOOLCHAIN_FILE="${RECIPE_DIR}/cross-linux.cmake")

  4. We create the build folder and run cmake with the provided flags in build.sh:
    mkdir build && cd build
    Followed by:

cmake ..                                        \
      -DCMAKE_INSTALL_PREFIX=$PREFIX            \
      -DCMAKE_INSTALL_LIBDIR=$PREFIX/lib        \
      -DCMAKE_BUILD_TYPE=Release                \
      ${CMAKE_PLATFORM_FLAGS[@]}                \
      -DOpenGL_GL_PREFERENCE="LEGACY"           \
      -DGLFW_BUILD_EXAMPLES=OFF                 \
      -DGLFW_BUILD_TESTS=OFF                    \
      -DGLFW_BUILD_DOCS=OFF                     \
      -Dglm_DIR="ext/glm/build"
  1. We run the make command make -j8.

I get the following errors:

.../ext/tomopackets/tomop/module.cpp:68:52: error: use of 'types' before deduction of 'auto'
         using Init = typename decltype(hana::unpack(
                                        ~~~~~~~~~~~~^
             types, hana::template_<py::detail::initimpl::constructor>))::type;
.../ext/tomopackets/tomop/module.cpp:77:20: error: unable to deduce lambda return type from 'pack'
             return pack;
.../ext/tomopackets/tomop/module.cpp:81:14: error: 'void pack' has incomplete type
         auto pack = hana::unpack(names, indirection);

The GCC version that was used was 9.1.1.

I also tried running:

CXX=... CC=... make -j 8

For GCC version 8.3.0 this gave a different error I did not fully understand:

CMakeFiles/test_server.dir/test/test_server.cpp.o: undefined reference to symbol '_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4'
/bin/ld: /export/scratch1/schoonho/anaconda3/conda-bld/debug_1571407408363/_h_env/lib/libstdc++.so.6: error adding symbols: DSO missing from command line

For GCC version 7.3.0 this gave the same errors as 9.1.1. I am not entirely sure what happened when I ran with gcc 8.3.0.

Also, I see that I have Boost version 1.67.0 if that is relevant since the errors seem Hana related.

Any ideas what I might try?

Center of Rotation

Hello,

We have tested RECAST3D, managed to install and run successfully. But we have problem with the Center of Rotation.
The visualization is blurred since the center of the rotation need to be adjusted to the one of the captured images.

I would like to ask if this is already implemented in RECAST3D.
If so, how can we adjust it? or is it explained somewhere in the manual?

Thank you.
Best regards,
Amal

how to display 3d Slice Data

I have a 3-dimensional numpy array that stores the 3d graphics (slice) to be displayed internally, which can be seen as the data after reconstruction. How can I transfer this 3d array directly to recast3d for direct display of the graphics without first sending it to slice_recon for reconstruction?

Running CMake to install the packages failing

Hello,

I am trying to install Recast3D by following the steps outlined here:

https://cicwi.github.io/RECAST3D/live_software_stack/

When compiling (GCC 9.1.1) I get several errors due to Wfatal-errors and Werror being turned on.

""
RECAST3D/ext/eigen/Eigen/src/Core/CwiseBinaryOp.h:105:49: error: implicitly-declared ‘Eigen::Block<const Eigen::Matrix<float, -1, 3>, 1, 3, false>::Block(const Eigen::Block<const Eigen::Matrix<float, -1, 3>, 1, 3, false>&)’ is deprecated [-Werror=deprecated-copy]
105 | : m_lhs(aLhs), m_rhs(aRhs), m_functor(func)
""
and
""
RECAST3D/include/modules/geometry.hpp:31:29: error: redundant move in return statement [-Werror=redundant-move]
31 | return std::move(packet);
| ~~~~~~~~~^~~~~~~~
compilation terminated due to -Wfatal-errors.
""

when disabling both it compiles fine. In short I got it working but maybe these flags should be removed?

Kind regards,

Richard

Conda package needs cleaning up

The conda package has a number of files in it that it shouldn't, such as assimp/glfw3 development files. In particular the glfw3 cmake files that contain paths from the build environment cause problems.

$ tar tf recast3d-1.0.0.rc.1-hf484d3e_1.tar.bz2
info/hash_input.json
info/has_prefix
info/index.json
info/files
info/about.json
info/git
info/paths.json
info/recipe/meta.yaml.template
info/recipe/cross-linux.cmake~
include/assimp/vector2.inl
include/assimp/color4.inl
include/assimp/quaternion.inl
include/assimp/vector3.inl
include/assimp/matrix3x3.inl
include/assimp/material.inl
include/assimp/matrix4x4.inl
lib/libglfw3.a
lib/static/libimgui.a
lib/libassimp.a
info/recipe/build_environment.yml~
include/assimp/NullLogger.hpp
include/assimp/LogStream.hpp
include/assimp/IOStream.hpp
include/assimp/ProgressHandler.hpp
include/assimp/DefaultLogger.hpp
include/assimp/Logger.hpp
include/assimp/IOSystem.hpp
include/assimp/Exporter.hpp
include/assimp/Importer.hpp
info/recipe/meta.yaml~
info/recipe/build.sh~
info/test/run_test.sh
info/recipe/build.sh
bin/assimp
bin/recast3d
info/recipe/conda_build_config.yaml
info/recipe/meta.yaml
lib/pkgconfig/glfw3.pc
lib/pkgconfig/assimp.pc
lib/cmake/glfw3/glfw3Config.cmake
info/recipe/cross-linux.cmake
lib/cmake/glfw3/glfw3Targets-release.cmake
lib/cmake/glfw3/glfw3ConfigVersion.cmake
lib/cmake/assimp-4.0/assimp-config-version.cmake
lib/cmake/assimp-4.0/assimp-config.cmake
lib/cmake/glfw3/glfw3Targets.cmake
include/assimp/Compiler/poppack1.h
include/assimp/Compiler/pushpack1.h
include/assimp/ai_assert.h
include/assimp/vector2.h
include/assimp/color4.h
include/assimp/DefaultIOSystem.h
include/assimp/version.h
include/assimp/quaternion.h
include/assimp/vector3.h
include/assimp/cfileio.h
include/assimp/DefaultIOStream.h
include/assimp/importerdesc.h
include/assimp/matrix3x3.h
include/assimp/camera.h
include/assimp/texture.h
include/assimp/light.h
include/assimp/metadata.h
include/assimp/defs.h
include/assimp/matrix4x4.h
include/assimp/cexport.h
include/assimp/scene.h
include/assimp/SceneCombiner.h
include/assimp/types.h
include/GLFW/glfw3native.h
include/assimp/anim.h
include/assimp/cimport.h
include/assimp/mesh.h
include/assimp/postprocess.h
include/assimp/Compiler/pstdint.h
include/assimp/config.h
include/assimp/material.h
include/GLFW/glfw3.h

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.