32#define BLENDER_OP "BlenderOp Markus.Peura@iki.fi"
97 BlenderOp(
int width=5,
int height=0,
const std::string & spreader=
"avg",
const std::string & blender=
"max",
98 unsigned short loops=1,
double expansionCoeff=1.0) :
99 WindowOp<>(__FUNCTION__,
"Smoothes image repeatedly, mixing original image with the result at each round.", width, height){
100 parameters.link(
"spreader", this->spreader = spreader, getSmootherAliasMap<false>().toStr());
101 parameters.link(
"mix", this->blender = blender,
"max|<coeff>: (quality) max, (quality) blend");
102 parameters.link(
"loops", this->loops = loops,
"number of repetitions");
103 parameters.link(
"expansionCoeff", this->expansionCoeff = expansionCoeff,
"window enlargement");
108 parameters.
copyStruct(op.getParameters(), op, *
this);
114 const std::string & getSmootherKey(){
120 if (conf.frame.height == 0){
121 conf.frame.height = conf.frame.width;
142 const std::string &
getName()
const override {
150 template <
bool WEIGHTED=false>
154 if (aliasMap.empty()){
164 aliasMap[
"avg"] =
"average";
165 aliasMap[
"avgFlow"] =
"flowAverage";
166 aliasMap[
"avgGauss"] =
"gaussianAverage";
167 aliasMap[
"dist"] = WEIGHTED ?
"distanceTransformFill" :
"distanceTransform";
168 aliasMap[
"distExp"] = WEIGHTED ?
"distanceTransformFillExp" :
"distanceTransformExp";
173 template <
bool WEIGHTED=false>
180 aliasMap[
"blend"] = WEIGHTED ?
"qualityMixer" :
"mix";
181 aliasMap[
"max"] = WEIGHTED ?
"qualityOverride" :
"max";
187 std::string spreader;
192 unsigned short loops = 1;
194 double expansionCoeff = 1.0;
void copyStruct(const ReferenceMap &m, const T &src, T &dst, extLinkPolicy policy=RESERVE)
Experimental. Copies references and values of a structure to another.
Definition ReferenceMap.h:415
A base class for smart maps providing methods for importing and exporting values, among others.
Definition SmartMap.h:62
Smoothes image and mixes the result with the original.
Definition BlenderOp.h:86
virtual const std::string & getName() const override
Return the name of an instance.
Definition BlenderOp.h:142
void traverseChannels(const ImageTray< const Channel > &src, ImageTray< Channel > &dst) const
Main operation, requires weighted image data.
Definition BlenderOp.cpp:43
virtual void traverseChannel(const Channel &src, Channel &dst) const
Force multi-channel processing.
Definition BlenderOp.h:131
static const drain::SmartMap< std::string > & getSmootherAliasMap()
Definition BlenderOp.h:152
virtual void initializeParameters(const ImageFrame &src, const ImageFrame &dst) const
Set applicable internal parameters before calling traverse().
Definition BlenderOp.h:119
BlenderOp(int width=5, int height=0, const std::string &spreader="avg", const std::string &blender="max", unsigned short loops=1, double expansionCoeff=1.0)
Default constructor.
Definition BlenderOp.h:97
void traverseChannel(const Channel &src, const Channel &srcWeight, Channel &dst, Channel &dstWeight) const
Force multi-channel processing.
Definition BlenderOp.h:137
Image with static geometry.
Definition ImageChannel.h:58
Image with static geometry.
Definition ImageFrame.h:62
void traverseAsChannelTrays(const ImageFrame &src, ImageFrame &dst) const
Redirect to processing as trays. This is the opposite of processChannels...() functions.
Definition ImageOp.h:216
Container applicable for Channels and Images, with alpha support.
Definition ImageTray.h:266
Definition DataSelector.cpp:1277