Commit 419920f290a0be066c45b6c0a5e6a6392e049d76
1 parent
c9aeecaa
IndependentTransform can now handle time varying transforms
Showing
1 changed file
with
23 additions
and
0 deletions
openbr/plugins/independent.cpp
| ... | ... | @@ -99,6 +99,8 @@ class IndependentTransform : public MetaTransform |
| 99 | 99 | return independentTransform; |
| 100 | 100 | } |
| 101 | 101 | |
| 102 | + bool timeVarying() const { return transform->timeVarying(); } | |
| 103 | + | |
| 102 | 104 | static void _train(Transform *transform, const TemplateList *data) |
| 103 | 105 | { |
| 104 | 106 | transform->train(*data); |
| ... | ... | @@ -143,6 +145,27 @@ class IndependentTransform : public MetaTransform |
| 143 | 145 | dst.append(mats); |
| 144 | 146 | } |
| 145 | 147 | |
| 148 | + void projectUpdate(const Template &src, Template &dst) | |
| 149 | + { | |
| 150 | + dst.file = src.file; | |
| 151 | + QList<Mat> mats; | |
| 152 | + for (int i=0; i<src.size(); i++) { | |
| 153 | + transforms[i%transforms.size()]->projectUpdate(Template(src.file, src[i]), dst); | |
| 154 | + mats.append(dst); | |
| 155 | + dst.clear(); | |
| 156 | + } | |
| 157 | + dst.append(mats); | |
| 158 | + } | |
| 159 | + | |
| 160 | + void projectUpdate(const TemplateList &src, TemplateList &dst) | |
| 161 | + { | |
| 162 | + dst.reserve(src.size()); | |
| 163 | + foreach (const Template &t, src) { | |
| 164 | + dst.append(Template()); | |
| 165 | + projectUpdate(t, dst.last()); | |
| 166 | + } | |
| 167 | + } | |
| 168 | + | |
| 146 | 169 | void store(QDataStream &stream) const |
| 147 | 170 | { |
| 148 | 171 | const int size = transforms.size(); | ... | ... |