Commit 0c56c80eefdad3d2abbdc15ace581a8e5d7de392

Authored by Scott Klum
1 parent 40cad71c

Don't do an affine wrap with bad points

openbr/plugins/imgproc/rndaffine.cpp
@@ -42,29 +42,33 @@ class RndAffineTransform : public UntrainableMetaTransform @@ -42,29 +42,33 @@ class RndAffineTransform : public UntrainableMetaTransform
42 QPointF affine_0 = t.file.get<QPointF>("Affine_0"); 42 QPointF affine_0 = t.file.get<QPointF>("Affine_0");
43 QPointF affine_1 = t.file.get<QPointF>("Affine_1"); 43 QPointF affine_1 = t.file.get<QPointF>("Affine_1");
44 44
45 - // Append the original points  
46 - Template u = t;  
47 - u.file.setPoints(QList<QPointF>() << affine_0 << affine_1);  
48 - u.file.set("Affine_0", affine_0);  
49 - u.file.set("Affine_1", affine_1);  
50 - dst.append(u); 45 + if (affine_0 != QPoint(-1,-1) && affine_1 != QPoint(-1,-1)) {
  46 + // Append the original points
  47 + Template u = t;
  48 + u.file.setPoints(QList<QPointF>() << affine_0 << affine_1);
  49 + u.file.set("Affine_0", affine_0);
  50 + u.file.set("Affine_1", affine_1);
  51 + dst.append(u);
51 52
52 - const double IPD = sqrt(pow(affine_0.x() - affine_1.x(), 2) + pow(affine_0.y() - affine_1.y(), 2));  
53 - for (int i = 0; i < numAffines; i++) {  
54 - int angle = (rand() % (2*maxAngle)) - maxAngle; 53 + const double IPD = sqrt(pow(affine_0.x() - affine_1.x(), 2) + pow(affine_0.y() - affine_1.y(), 2));
  54 + if (IPD != 0) {
  55 + for (int i = 0; i < numAffines; i++) {
  56 + int angle = (rand() % (2*maxAngle)) - maxAngle;
55 57
56 - int min = (int)(sqrt(1 / scaleFactor) * IPD);  
57 - int max = (int)(sqrt(scaleFactor) * IPD);  
58 - int dx = (rand() % (max - min)) + min;  
59 - int dy = (dx * sin(angle * M_PI / 180))/2; 58 + int min = (int)(sqrt(1 / scaleFactor) * IPD);
  59 + int max = (int)(sqrt(scaleFactor) * IPD);
  60 + int dx = (rand() % (max - min)) + min;
  61 + int dy = (dx * sin(angle * M_PI / 180))/2;
60 62
61 - QPointF shiftedAffine_0 = QPointF(affine_1.x() - dx, affine_1.y() + dy); 63 + QPointF shiftedAffine_0 = QPointF(affine_1.x() - dx, affine_1.y() + dy);
62 64
63 - Template u = t;  
64 - u.file.setPoints(QList<QPointF>() << shiftedAffine_0 << affine_1);  
65 - u.file.set("Affine_0", shiftedAffine_0);  
66 - u.file.set("Affine_1", affine_1);  
67 - dst.append(u); 65 + Template u = t;
  66 + u.file.setPoints(QList<QPointF>() << shiftedAffine_0 << affine_1);
  67 + u.file.set("Affine_0", shiftedAffine_0);
  68 + u.file.set("Affine_1", affine_1);
  69 + dst.append(u);
  70 + }
  71 + }
68 } 72 }
69 } 73 }
70 } 74 }