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 585 void projectUpdate(const Template &src, Template &dst)
586 586 {
587 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 607 cnt++;
592 608 }
593 609  
594 610 virtual void finalize(TemplateList & output)
595 611 {
596   - average /= cnt;
  612 + average /= float(cnt);
597 613 imwrite(QString("%1.%2").arg(imgname).arg(ext).toStdString(), average);
598 614 output = TemplateList();
599 615 }
600 616  
601 617  
602 618 public:
603   - MeanImageTransform() : TimeVaryingTransform(true, false) {}
  619 + MeanImageTransform() : TimeVaryingTransform(false, false) {}
604 620 };
605 621  
606 622 BR_REGISTER(Transform, MeanImageTransform)
... ...