![]() |
Seg3D
2.4
Seg3D is a free volume segmentation and processing tool developed by the NIH Center for Integrative Biomedical Computing at the University of Utah Scientific Computing and Imaging (SCI) Institute.
|
A helper class for accessing data in a slice of a volume. More...
#include <VolumeSlice.h>
Public Member Functions | |
| bool | is_valid () const |
| Returns true if the underlying volume is valid and the slice is not out of boundary. | |
| VolumeHandle | get_volume () const |
| VolumeType | volume_type () const |
| void | set_slice_type (VolumeSliceType type) |
| VolumeSliceType | get_slice_type () const |
| void | set_slice_number (size_t slice_num) |
| size_t | get_slice_number () const |
| void | to_index (size_t i, size_t j, Point &index) const |
| Get the index of the point in the volume. | |
| size_t | to_index (size_t i, size_t j) const |
| Returns the linear index of the point in the volume. | |
| void | world_to_index (double i_pos, double j_pos, int &i, int &j) const |
| void | index_to_world (int i, int j, double &world_i, double &world_j) const |
| void | get_world_coord (double i_pos, double j_pos, Point &world_coord) const |
| Get the 3D world coordinate of the point. | |
| void | project_onto_slice (const Point &pt, double &i_pos, double &j_pos) const |
| Project a point in 3D space onto the plane of the slice. | |
| void | project_onto_slice (const Point &pt, double &i_pos, double &j_pos, double &depth) const |
| Project a point in 3D space onto the plane of the slice. Return depth by reference. | |
| int | get_closest_slice (const Point &pt) const |
| Return the slice number that's closest to the point in 3D space. | |
| void | move_slice_to (const Point &pos, bool fail_safe=false) |
| void | move_slice_to (double depth, bool fail_safe=false) |
| size_t | nx () const |
| size_t | ny () const |
| size_t | number_of_slices () const |
| bool | out_of_boundary () const |
| double | left () const |
| double | right () const |
| double | bottom () const |
| double | top () const |
| double | depth () const |
| const Point & | bottom_left () const |
| const Point & | bottom_right () const |
| const Point & | top_left () const |
| const Point & | top_right () const |
| void | handle_volume_updated () |
| Point | apply_grid_transform (const Point &pt) const |
| Point | apply_inverse_grid_transform (const Point &pt) const |
| virtual void | initialize_texture () |
| virtual void | upload_texture ()=0 |
| virtual VolumeSliceHandle | clone ()=0 |
| Make a copy of the slice, which will share texture object with the original one. | |
| Texture2DHandle | get_texture () |
| virtual void | set_volume (const VolumeHandle &volume)=0 |
| Set the volume out of which the slice will be taken. | |
Public Member Functions inherited from Core::RecursiveLockable | |
| mutex_type & | get_mutex () const |
Static Public Member Functions | |
| static void | ProjectOntoSlice (VolumeSliceType slice_type, const Point &pt, double &i_pos, double &j_pos) |
| static void | ProjectOntoSlice (VolumeSliceType slice_type, const Point &pt, double &i_pos, double &j_pos, double &depth) |
Protected Member Functions | |
| VolumeSlice (const VolumeHandle &volume, VolumeSliceType type, size_t slice_num) | |
| VolumeSlice (const VolumeSlice ©) | |
| bool | get_slice_changed () |
| void | set_slice_changed (bool) |
| bool | get_size_changed () |
| void | set_size_changed (bool) |
Protected Member Functions inherited from Core::ConnectionHandler | |
| void | add_connection (const boost::signals2::connection &connection) |
| void | add_connection (const ConnectionHandlerConnectionHandle &connection) |
| void | disconnect_all () |
Protected Member Functions inherited from Core::RecursiveLockable | |
| mutex_type & | get_mutex () const |
Friends | |
| class | VolumeSlicePrivate |
Additional Inherited Members | |
Public Types inherited from Core::RecursiveLockable | |
| typedef boost::recursive_mutex | mutex_type |
| typedef boost::unique_lock< mutex_type > | lock_type |
Protected Types inherited from Core::RecursiveLockable | |
| typedef boost::recursive_mutex | mutex_type |
| typedef boost::unique_lock< mutex_type > | lock_type |
A helper class for accessing data in a slice of a volume.
|
protected |
NOTE: This is provided for the purpose of taking a snapshot of current status of a VolumeSlice, which will then be used for rendering. The copy constructor shouldn't connect to any signals so its state won't be changed after construction. NOTE: The copy-constructed object will share the same texture object with the old one.
| void Core::VolumeSlice::move_slice_to | ( | double | depth, |
| bool | fail_safe = false |
||
| ) |
Move the slice to the specified depth in world space. Returns true if the slice is moved successfully, otherwise false.
|
pure virtual |
Upload the volume slice to texture. NOTE: This function allocates resources on the GPU, so the caller should acquire a lock on the RenderResources before calling this function.
Implemented in Core::MaskVolumeSlice, Core::DataVolumeSlice, and Core::LargeVolumeSlice.
| void Core::VolumeSlice::world_to_index | ( | double | i_pos, |
| double | j_pos, | ||
| int & | i, | ||
| int & | j | ||
| ) | const |
Get the index of the point that's closest to the given position in world space NOTE: the indices returned can be out of the slice boundary.
1.8.10