ImageBase.h
Go to the documentation of this file.
// This file is a part of the OpenSurgSim project.
// Copyright 2016, SimQuest Solutions Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef SURGSIM_DATASTRUCTURES_IMAGEBASE_H
#define SURGSIM_DATASTRUCTURES_IMAGEBASE_H
#include <array>
#include <Eigen/Core>
namespace SurgSim
{
namespace DataStructures
{
template<class T>
class ImageBase
{
public:
virtual ~ImageBase();
size_t getWidth() const;
size_t getHeight() const;
std::array<size_t, 3> getSize() const;
size_t getNumChannels() const;
Eigen::Map<Eigen::Matrix<T, Eigen::Dynamic, 1>> operator()(size_t x, size_t y);
Eigen::Map<const Eigen::Matrix<T, Eigen::Dynamic, 1>> operator()(size_t x, size_t y) const;
typedef Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> ChannelType;
Eigen::Map<ChannelType, Eigen::Unaligned, Eigen::Stride<-1, -1>> getChannel(size_t index);
Eigen::Map<const ChannelType, Eigen::Unaligned, Eigen::Stride<-1, -1>> getChannel(size_t index) const;
void setChannel(size_t index, const Eigen::Ref<const ChannelType>& data);
typedef Eigen::Matrix<T, Eigen::Dynamic, 1> VectorType;
Eigen::Map<VectorType, Eigen::Unaligned> getAsVector();
Eigen::Map<const VectorType, Eigen::Unaligned> getAsVector() const;
void setAsVector(const Eigen::Ref<const VectorType>& data);
virtual T* const getData() = 0;
virtual const T* const getData() const = 0;
protected:
void setSize(size_t width, size_t height, size_t channels);
private:
size_t m_width;
size_t m_height;
size_t m_channels;
};
};
};
#include "SurgSim/DataStructures/ImageBase-inl.h"
#endif //SURGSIM_DATASTRUCTURES_IMAGEBASE_H
SurgSim
Definition: CompoundShapeToGraphics.cpp:29
SurgSim::DataStructures::ImageBase::getSize
std::array< size_t, 3 > getSize() const
Get the Image size.
Definition: ImageBase-inl.h:115
SurgSim::DataStructures::ImageBase::getHeight
size_t getHeight() const
Get the Image height.
Definition: ImageBase-inl.h:109
SurgSim::DataStructures::ImageBase::setChannel
void setChannel(size_t index, const Eigen::Ref< const ChannelType > &data)
Set the image data in the channel.
Definition: ImageBase-inl.h:71
SurgSim::DataStructures::ImageBase::m_width
size_t m_width
Definition: ImageBase.h:115
SurgSim::DataStructures::ImageBase::ChannelType
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > ChannelType
2D Channel Type;
Definition: ImageBase.h:67
SurgSim::DataStructures::ImageBase::m_channels
size_t m_channels
Definition: ImageBase.h:117
SurgSim::DataStructures::ImageBase::operator()
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, 1 > > operator()(size_t x, size_t y)
Get the pixel value at (x, y)
Definition: ImageBase-inl.h:33
SurgSim::DataStructures::ImageBase::getChannel
Eigen::Map< ChannelType, Eigen::Unaligned, Eigen::Stride<-1, -1 > > getChannel(size_t index)
Get the 2D image channel data.
Definition: ImageBase-inl.h:52
SurgSim::DataStructures::ImageBase::getData
virtual T *const getData()=0
Get the pointer to the data.
ImageBase-inl.h
SurgSim::DataStructures::ImageBase
Base class for Image-like classes.
Definition: ImageBase.h:32
SurgSim::DataStructures::ImageBase::VectorType
Eigen::Matrix< T, Eigen::Dynamic, 1 > VectorType
1D Vector Type;
Definition: ImageBase.h:85
SurgSim::DataStructures::ImageBase::setSize
void setSize(size_t width, size_t height, size_t channels)
Set the Image size.
Definition: ImageBase-inl.h:128
SurgSim::DataStructures::ImageBase::m_height
size_t m_height
Definition: ImageBase.h:116
SurgSim::DataStructures::ImageBase::getWidth
size_t getWidth() const
Get the Image width.
Definition: ImageBase-inl.h:103
SurgSim::DataStructures::ImageBase::getAsVector
Eigen::Map< VectorType, Eigen::Unaligned > getAsVector()
Get the data as a 1D Vector.
Definition: ImageBase-inl.h:81
SurgSim::DataStructures::ImageBase::setAsVector
void setAsVector(const Eigen::Ref< const VectorType > &data)
Set the image data as a 1D Vector.
Definition: ImageBase-inl.h:93
SurgSim::DataStructures::ImageBase::~ImageBase
virtual ~ImageBase()
Destructor.
Definition: ImageBase-inl.h:28
SurgSim::DataStructures::ImageBase::getNumChannels
size_t getNumChannels() const
Get the number of channels in this Image.
Definition: ImageBase-inl.h:122