Commit 05e4445fa57b008ebc1871087f1b53c2e4637953

Authored by Scott Klum
2 parents 25ccf5ce 93b0aadb

Merge pull request #361 from biometrics/blend_tweak

Blend tweak
openbr/plugins/imgproc/blend.cpp
@@ -23,19 +23,29 @@ namespace br @@ -23,19 +23,29 @@ namespace br
23 23
24 /*! 24 /*!
25 * \ingroup transforms 25 * \ingroup transforms
26 - * \brief Alpha-blend two matrices 26 + * \brief Alpha-blend matrices
27 * \author Josh Klontz \cite jklontz 27 * \author Josh Klontz \cite jklontz
28 */ 28 */
29 class BlendTransform : public UntrainableMetaTransform 29 class BlendTransform : public UntrainableMetaTransform
30 { 30 {
31 Q_OBJECT 31 Q_OBJECT
32 - Q_PROPERTY(float alpha READ get_alpha WRITE set_alpha RESET reset_alpha STORED false)  
33 - BR_PROPERTY(float, alpha, 0.5) 32 + Q_PROPERTY(QList<float> alpha READ get_alpha WRITE set_alpha RESET reset_alpha STORED false)
  33 + BR_PROPERTY(QList<float>, alpha, QList<float>() << 0.5)
34 34
35 void project(const Template &src, Template &dst) const 35 void project(const Template &src, Template &dst) const
36 { 36 {
37 - if (src.size() != 2) qFatal("Expected two source matrices.");  
38 - addWeighted(src[0], alpha, src[1], 1-alpha, 0, dst); 37 + dst.file = src.file;
  38 + dst.m() = Mat::zeros(src.m().rows, src.m().cols, src.m().type());
  39 +
  40 + QList<float> a = alpha;
  41 +
  42 + if (src.size() == 2 && a.size() == 1)
  43 + a << 1-a[0];
  44 +
  45 + for (int i=0; i<src.size(); i++) {
  46 + const float weight = (a.size() == src.size()) ? a[i] : 1./src.size();
  47 + dst.m() += src[i]*weight;
  48 + }
39 } 49 }
40 }; 50 };
41 51