Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Static Protected Member Functions | List of all members
ImageOp Class Reference

Base class for image processing functions. More...

#include <ImageOp.h>

Inheritance diagram for ImageOp:
Inheritance graph
[legend]
Collaboration diagram for ImageOp:
Collaboration graph
[legend]

Public Member Functions

virtual void process (const ImageFrame &src, Image &dst) const
 Main interface. Typically splits processing to each channel.
 
virtual void process (Image &dst) const override final
 Run this modifier for an image.
 
virtual void process (const ImageFrame &src, const ImageFrame &srcWeight, Image &dst, Image &dstWeight) const
 
virtual void process (const ImageTray< const Channel > &src, ImageTray< Image > &dst, bool checkOverlap=true) const
 Run the operator on a series of images. Geometry and type may be changed. UNDER CONSTR.
 
virtual void traverseChannels (const ImageTray< const Channel > &src, ImageTray< Channel > &dst) const
 
virtual void traverseChannel (const Channel &src, Channel &dst) const
 Apply to single channel.
 
virtual void traverseChannel (const Channel &src, const Channel &srcAlpha, Channel &dst, Channel &dstAlpha) const
 Apply to single channel with alpha.
 
virtual void getDstConf (const ImageConf &src, ImageConf &dst) const
 Given source image, determine respective dest image configuration.
 
virtual void makeCompatible (const ImageConf &src, Image &dst) const
 Depending on the operator, modifies the geometry and type of dst.
 
virtual void makeCompatible2 (const ImageFrame &src1, const ImageFrame &src2, Image &dst) const
 Modifies the geometry and type of dst to fit the computation result.
 
virtual void help (std::ostream &ostr=std::cout) const
 Prints name, description and parameters using BeanLike::toOStr(). Virtual, so derived classes may extend output.
 
- Public Member Functions inherited from ImageMod
virtual int srcAlpha () const
 Tell if alpha channel(s) is required in input.
 
virtual void traverseChannels (ImageTray< Channel > &dst) const
 Run this modifier for a set of channels.
 
virtual void traverseChannel (Channel &dst) const
 Run this modifier for an image frame.
 
virtual void traverseChannel (Channel &dst, Channel &dstAlpha) const
 Run this modifier for an image frame.
 
virtual void traverseChannels (ImageFrame &dst) const
 Converts dst to ImageTray<Channel> and calls traverseFrame(ImageTray<Channel> &) .
 
- Public Member Functions inherited from BeanLike
 BeanLike (const BeanLike &b)
 Copy constructor. Re-links parameters to the member variables of this (new) instance.
 
 BeanLike (const std::string &name, const std::string &description="")
 Constructor.
 
virtual const std::string & getName () const
 Return the name of an instance.
 
virtual const std::string & getDescription () const
 Return a brief description.
 
bool hasParameters () const
 Tells if any parameters have been linked (registered) for this bean.
 
template<class F >
F getParameter (const std::string &p) const
 Gets a single parameter.
 
const map_t & getParameters () const
 Returns the parameter map (const access).
 
map_t & getParameters ()
 Returns the parameter map.
 
template<class F >
void setParametersFromEntries (const F &args)
 Sets several parameters at once from a sequence of key-value pairs.
 
void setParameters (std::initializer_list< Variable::init_pair_t > args)
 Grants access to (if above hidden)
 
virtual void setParameters (const std::string &p, char assignmentSymbol='=', char separatorSymbol=0)
 Sets comma-separated parameters in a predetermined order "a,b,c" or by specifing them "b=2".
 
template<class T >
void setParameters (const std::map< std::string, T > &args)
 Set parameters.
 
template<class T >
void setParameters (const SmartMap< T > &args)
 Set parameters.
 
void setParameter (const std::string &p, const Castable &value)
 Sets a single parameter.
 
template<class T >
void setParameter (const std::string &p, const VariableT< T > &value)
 
template<class F >
void setParameter (const std::string &p, const F &value)
 Sets a single parameter.
 
template<class F >
void setParameter (const std::string &p, std::initializer_list< F > value)
 Sets a single parameter.
 
BeanLike & operator= (const BeanLike &b)
 Assigns the parameter values of another bean (by key) to this one's own parameters.
 
virtual std::ostream & toStream (std::ostream &ostr, bool compact=true) const
 Prints the name, description and current parameter values.
 

Protected Member Functions

 ImageOp (const std::string &name=__FUNCTION__, const std::string &description="")
 
 ImageOp (const ImageOp &op)
 
virtual bool processOverlappingWithTemp (const ImageFrame &src, Image &dst) const
 
virtual bool processOverlappingWithTemp (const ImageTray< const Channel > &src, ImageTray< Image > &dst) const
 
bool traverseOverlappingWithTemp (const Channel &src, Channel &dst) const
 
bool traverseOverlappingWithTemp (const Channel &src, const Channel &srcWeight, Channel &dst, Channel &dstWeight) const
 
void traverseChannelsEqually (const ImageTray< const Channel > &src, ImageTray< Channel > &dst) const
 Calls processWithTemp() if the frames overlap.
 
void traverseChannelsRepeated (const ImageTray< const Channel > &src, ImageTray< Channel > &dst) const
 Recycle channels until all dst channels completed.
 
void traverseChannelsSeparately (const ImageTray< const Channel > &src, ImageTray< Channel > &dst) const
 Process each (src,dst) channel pair independently. Raise error if their counts differ.
 
void traverseAsChannelTrays (const ImageFrame &src, ImageFrame &dst) const
 Redirect to processing as trays. This is the opposite of processChannels...() functions.
 
void traverseAsChannelTrays (const ImageFrame &src, const ImageFrame &srcWeight, ImageFrame &dst, ImageFrame &dstWeight) const
 Redirect to processing as trays. This is the opposite of processChannels...() functions.
 
virtual void initializeParameters (const ImageFrame &src, const ImageFrame &dst) const
 Set applicable internal parameters before calling traverse().
 
virtual void initializeParameters (const ImageFrame &src, const ImageFrame &src2, const ImageFrame &dst) const
 Set applicable internal parameters before calling traverse().
 
- Protected Member Functions inherited from ImageMod
 ImageMod (const std::string &name=__FUNCTION__, const std::string &description="")
 
 ImageMod (const ImageMod &op)
 
virtual void processChannelsSeparately (ImageTray< Channel > &dst) const
 Run this modifier by calling traverseChannel(Channel &) for each image.
 
virtual void initialize (Image &dst) const
 Modifies the geometry and the type of dst such that traverseChannel(Channel &) can be called.
 
virtual void initializeAlpha (const Image &srcAlpha, Image &dstAlpha) const
 Modifies the geometry and the type of dst such that traverseChannel(Channel &) can be called.
 
- Protected Member Functions inherited from BeanLike
virtual void storeLastArguments (const std::string &p)
 Called after setParameters()
 
virtual void updateBean () const
 Called after setParameters()
 

Static Protected Member Functions

static void adaptCoordinateHandler (const Channel &src, CoordinateHandler2D &handler)
 

Additional Inherited Members

- Public Types inherited from BeanLike
typedef ReferenceMap map_t
 Reference map type used to store this bean's parameters (name -> linked variable).
 
- Public Attributes inherited from ImageMod
bool physicalScale
 
- Protected Attributes inherited from BeanLike
const std::string name
 Name of this bean, typically also the name of the (derived) class.
 
const std::string description
 Brief, human-readable description of this bean.
 
map_t parameters
 Parameters (name -> linked variable), typically linked to member variables of the derived class.
 

Detailed Description

Base class for image processing functions.

TODO:

Constructor & Destructor Documentation

◆ ImageOp() [1/2]

ImageOp ( const std::string &  name = __FUNCTION__,
const std::string &  description = "" 
)
inlineprotected

TODO: CHECK: previously documented parameter 'weight_supported' - not supported (0), flexibly supported (1) or required (2) - no longer in the signature; reconsider or remove. TODO: CHECK: previously documented parameter 'tmp_required' - temporary image needed, if src and dst are same or overlapping - no longer in the signature; reconsider or remove.

◆ ImageOp() [2/2]

ImageOp ( const ImageOp &  op)
inlineprotected

This is needed, otherwise parameters(parameters) is called through BeanLike(BeanLike).

Member Function Documentation

◆ getDstConf()

void getDstConf ( const ImageConf &  src,
ImageConf &  dst 
) const
virtual

◆ help()

virtual void help ( std::ostream &  ostr = std::cout) const
inlinevirtual

Prints name, description and parameters using BeanLike::toOStr(). Virtual, so derived classes may extend output.

Reimplemented from ImageMod.

Reimplemented in PaletteOp.

◆ initializeParameters() [1/2]

virtual void initializeParameters ( const ImageFrame &  src,
const ImageFrame &  dst 
) const
inlineprotectedvirtual

◆ initializeParameters() [2/2]

virtual void initializeParameters ( const ImageFrame &  src,
const ImageFrame &  src2,
const ImageFrame &  dst 
) const
inlineprotectedvirtual

Set applicable internal parameters before calling traverse().

Reimplemented in BinaryFunctorOp< F >.

◆ makeCompatible()

void makeCompatible ( const ImageConf &  src,
Image &  dst 
) const
virtual

Depending on the operator, modifies the geometry and type of dst.

Coord policy is changed very rarely, so it is copied here, as a default.

By default, use src type. Image operator changes it if needed (e.g. signed, integer or float).

Should set geometry, including channel geometry.

Some operators, like QualityOverrideOp, do not like modifying the target dst (unless empty)

Reimplemented in DistanceTransformFillOp< T >, DistanceTransformFillOp< DistanceModelExponential >, and DistanceTransformFillOp< DistanceModelLinear >.

◆ process() [1/3]

void process ( const ImageFrame &  src,
Image &  dst 
) const
virtual

Main interface. Typically splits processing to each channel.

The default implementation calls makeCompatible() and

See also
processWithTemp()

Reimplemented in ChannelCatenatorOp, VerticalCatenatorOp, HighBoostOp, MarginalStatisticOp, BinaryPixelVectorOp< F >, BinaryPixelVectorOp< MultiplicationFunctor >, BinaryPixelVectorOp< SubtractionFunctor >, MagnitudeOp, RecomposeOp, and CopyOp.

◆ process() [2/3]

void process ( const ImageTray< const Channel > &  src,
ImageTray< Image > &  dst,
bool  checkOverlap = true 
) const
virtual

Run the operator on a series of images. Geometry and type may be changed. UNDER CONSTR.

Checks that images in dst are not overlapping with those of src. If yes, create tmp images.

◆ process() [3/3]

virtual void process ( Image &  dst) const
inlinefinaloverridevirtual

Run this modifier for an image.

The default implementation redirects to traverseChannel(Channel & dst) .

Reimplemented from ImageMod.

◆ traverseChannel() [1/2]

virtual void traverseChannel ( const Channel &  src,
Channel &  dst 
) const
inlinevirtual

◆ traverseChannel() [2/2]

virtual void traverseChannel ( const Channel &  src,
const Channel &  srcAlpha,
Channel &  dst,
Channel &  dstAlpha 
) const
inlinevirtual

◆ traverseChannels()

virtual void traverseChannels ( const ImageTray< const Channel > &  src,
ImageTray< Channel > &  dst 
) const
inlinevirtual

◆ traverseChannelsEqually()

void traverseChannelsEqually ( const ImageTray< const Channel > &  src,
ImageTray< Channel > &  dst 
) const
protected

Calls processWithTemp() if the frames overlap.

Creates a copy of dstImage, runs the operator and copies the result to dstImage. Calls processWithTemp() if the frames overlap Apply to a frame. Target dst must be compatible.. Process image channel and alpha channels equally. Eg. resizing operations may use this. Neutral

◆ traverseChannelsSeparately()

void traverseChannelsSeparately ( const ImageTray< const Channel > &  src,
ImageTray< Channel > &  dst 
) const
protected

Process each (src,dst) channel pair independently. Raise error if their counts differ.

Corresponds to processChannelsSeparately.


The documentation for this class was generated from the following files: