Bugfixes and improved bending energy

This commit is contained in:
2017-11-24 15:04:31 +01:00
parent 88c0a3e253
commit d7180b7db3
2 changed files with 16 additions and 20 deletions
@@ -6,8 +6,8 @@
// 7 0 1
// 6 X 2
// 5 4 3
int rotateX[] = { 0, 1, 1, 1, 0, -1, -1, -1 };
int rotateY[] = { -1, -1, 0, 1, 1, 1, 0, -1 };
volatile int rotateX[] = { 0, 1, 1, 1, 0, -1, -1, -1 };
volatile int rotateY[] = { -1, -1, 0, 1, 1, 1, 0, -1 };
int allContours(Mat binaryImage, vector<vector<Point>>& contourVecVec)
{
@@ -41,10 +41,10 @@ int allContours(Mat binaryImage, vector<vector<Point>>& contourVecVec)
int dir = discoverNext(binaryImage, b0, discoverNextRelativeDirection(b0, c0));
if (dir < 0)
{
cout << "Er is niks aan de hand! " << " : " << b0 << " - " << c0 << endl;
}
//if (dir < 0)
//{
// cout << "Er is niks aan de hand! " << " : " << b0 << " - " << c0 << endl;
//}
b1 = getDirPos(b0, dir);
c1 = getDirPos(b0, (dir + 7) % 8);
@@ -136,28 +136,19 @@ void flip(vector<vector<Point>> &vec)
}
}
bool isInsideContours(vector<vector<Point>>& vec, Point point)
{
for (vector<Point> cont : vec)
{
int i = pointPolygonTest(cont, point, false);
if (i >= 0)
return true;
}
return false;
}
double getBendingEnergy(const vector<Point>& contour)
{
double energy = 0;
int dir = 0;
int prevdir = 0;
Point previousPoint = contour[contour.size() - 1];
for (Point p : contour)
{
energy += discoverNextRelativeDirection(previousPoint, p);
dir = discoverNextRelativeDirection(previousPoint, p);
energy += (dir - prevdir + 8) % 8;
prevdir = dir;
previousPoint = p;
}
@@ -6,6 +6,9 @@
//
// Jan Oostindie, dd 8-11-2016
//
//#pragma GCC push_options
//#pragma GCC optimize ("O0")
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
@@ -117,3 +120,5 @@ int main(int argc, char *argv[])
return 0;
}
//#pragma GCC pop_options