Commit 71e41b4a99979d3c5fb8633b682a32f810c33175

Authored by Brendan Klare
1 parent 50309714

Transform to compute the average image across all templates

Showing 1 changed file with 21 additions and 5 deletions
openbr/plugins/draw.cpp
@@ -585,22 +585,38 @@ class MeanImageTransform : public TimeVaryingTransform @@ -585,22 +585,38 @@ class MeanImageTransform : public TimeVaryingTransform
585 void projectUpdate(const Template &src, Template &dst) 585 void projectUpdate(const Template &src, Template &dst)
586 { 586 {
587 dst = src; 587 dst = src;
588 - if (cnt == 0)  
589 - average = Mat::zeros(dst.m().size(),dst.m().type());  
590 - average += dst; 588 + if (cnt == 0) {
  589 + if (src.m().channels() == 1)
  590 + average = Mat::zeros(dst.m().size(),CV_64FC1);
  591 + else if (src.m().channels() == 3)
  592 + average = Mat::zeros(dst.m().size(),CV_64FC3);
  593 + else
  594 + qFatal("Unsupported number of channels");
  595 + }
  596 +
  597 + Mat temp;
  598 + if (src.m().channels() == 1) {
  599 + src.m().convertTo(temp, CV_64FC1);
  600 + average += temp;
  601 + } else if (src.m().channels() == 3) {
  602 + src.m().convertTo(temp, CV_64FC3);
  603 + average += temp;
  604 + } else
  605 + qFatal("Unsupported number of channels");
  606 +
591 cnt++; 607 cnt++;
592 } 608 }
593 609
594 virtual void finalize(TemplateList & output) 610 virtual void finalize(TemplateList & output)
595 { 611 {
596 - average /= cnt; 612 + average /= float(cnt);
597 imwrite(QString("%1.%2").arg(imgname).arg(ext).toStdString(), average); 613 imwrite(QString("%1.%2").arg(imgname).arg(ext).toStdString(), average);
598 output = TemplateList(); 614 output = TemplateList();
599 } 615 }
600 616
601 617
602 public: 618 public:
603 - MeanImageTransform() : TimeVaryingTransform(true, false) {} 619 + MeanImageTransform() : TimeVaryingTransform(false, false) {}
604 }; 620 };
605 621
606 BR_REGISTER(Transform, MeanImageTransform) 622 BR_REGISTER(Transform, MeanImageTransform)