summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_tracker_ht
diff options
context:
space:
mode:
Diffstat (limited to 'ftnoir_tracker_ht')
-rw-r--r--ftnoir_tracker_ht/ftnoir_tracker_ht.cpp64
-rw-r--r--ftnoir_tracker_ht/ht-api.h1
-rw-r--r--ftnoir_tracker_ht/ht-trackercontrols.ui167
3 files changed, 187 insertions, 45 deletions
diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp
index 6abf8058..d3b90c67 100644
--- a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp
+++ b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp
@@ -108,26 +108,26 @@ static void load_settings(ht_config_t* config, Tracker* tracker)
config->field_of_view = iniFile.value("fov", 52).toFloat();
config->pyrlk_pyramids = 3;
config->pyrlk_win_size_w = config->pyrlk_win_size_h = 21;
- config->max_keypoints = 150;
- config->keypoint_distance = 3.6;
+ config->max_keypoints = 200;
+ config->keypoint_distance = 3.2;
//config->force_width = 640;
//config->force_height = 480;
config->force_fps = iniFile.value("fps", 0).toInt();
config->camera_index = iniFile.value("camera-index", -1).toInt();
config->ransac_num_iters = 100;
- config->ransac_max_reprojection_error = 3.35;
- config->ransac_max_inlier_error = 3.4;
- config->ransac_abs_max_mean_error = 5;
- config->ransac_max_mean_error = 3.1;
+ config->ransac_max_reprojection_error = 3.8;
+ config->ransac_max_inlier_error = 3.8;
+ config->ransac_abs_max_mean_error = 8;
+ config->ransac_max_mean_error = 3.4;
config->debug = 0;
- config->ransac_min_features = 0.85;
+ config->ransac_min_features = 0.9;
int res = iniFile.value("resolution", 0).toInt();
if (res < 0 || res >= (int)(sizeof(resolution_choices) / sizeof(resolution_tuple)))
res = 0;
resolution_tuple r = resolution_choices[res];
config->force_width = r.width;
config->force_height = r.height;
- config->flandmark_delay = 250;
+ config->flandmark_delay = 200;
qDebug() << "width" << r.width << "height" << r.height;
if (tracker)
{
@@ -138,6 +138,10 @@ static void load_settings(ht_config_t* config, Tracker* tracker)
tracker->enableTY = iniFile.value("enable-ty", true).toBool();
tracker->enableTZ = iniFile.value("enable-tz", true).toBool();
}
+
+ for (int i = 0; i < 5; i++)
+ config->dist_coeffs[i] = iniFile.value(QString("dc%1").arg(i), 0).toDouble();
+
iniFile.endGroup();
}
@@ -363,21 +367,13 @@ void TrackerControls::loadSettings()
ui.ty->setCheckState(iniFile.value("enable-ty", true).toBool() ? Qt::Checked : Qt::Unchecked);
ui.tz->setCheckState(iniFile.value("enable-tz", true).toBool() ? Qt::Checked : Qt::Unchecked);
ui.resolution->setCurrentIndex(iniFile.value("resolution", 0).toInt());
-#if 0
- ui.groupBox_2->setChecked(iniFile.value("use-bashed-coords").toBool());
- ui.doubleSpinBox_1->setValue(iniFile.value("b1", 0).toDouble());
- ui.doubleSpinBox_2->setValue(iniFile.value("b2", 0).toDouble());
- ui.doubleSpinBox_3->setValue(iniFile.value("b3", 0).toDouble());
- ui.doubleSpinBox_4->setValue(iniFile.value("b4", 0).toDouble());
- ui.doubleSpinBox_5->setValue(iniFile.value("b5", 0).toDouble());
- ui.doubleSpinBox_6->setValue(iniFile.value("b6", 0).toDouble());
- ui.doubleSpinBox_7->setValue(iniFile.value("b7", 0).toDouble());
- ui.doubleSpinBox_8->setValue(iniFile.value("b8", 0).toDouble());
- ui.doubleSpinBox_9->setValue(iniFile.value("b9", 0).toDouble());
- ui.doubleSpinBox_10->setValue(iniFile.value("b10", 0).toDouble());
- ui.doubleSpinBox_11->setValue(iniFile.value("b11", 0).toDouble());
- ui.doubleSpinBox_12->setValue(iniFile.value("b12", 0).toDouble());
-#endif
+
+ ui.doubleSpinBox->setValue(iniFile.value("dc0").toDouble());
+ ui.doubleSpinBox_2->setValue(iniFile.value("dc1").toDouble());
+ ui.doubleSpinBox_3->setValue(iniFile.value("dc2").toDouble());
+ ui.doubleSpinBox_4->setValue(iniFile.value("dc3").toDouble());
+ ui.doubleSpinBox_5->setValue(iniFile.value("dc4").toDouble());
+
iniFile.endGroup();
settingsDirty = false;
}
@@ -416,21 +412,13 @@ void TrackerControls::save()
iniFile.setValue("enable-ty", ui.ty->checkState() != Qt::Unchecked ? true : false);
iniFile.setValue("enable-tz", ui.tz->checkState() != Qt::Unchecked ? true : false);
iniFile.setValue("resolution", ui.resolution->currentIndex());
-#if 0
- iniFile.setValue("b1", ui.doubleSpinBox_1->value());
- iniFile.setValue("b2", ui.doubleSpinBox_2->value());
- iniFile.setValue("b3", ui.doubleSpinBox_3->value());
- iniFile.setValue("b4", ui.doubleSpinBox_4->value());
- iniFile.setValue("b5", ui.doubleSpinBox_5->value());
- iniFile.setValue("b6", ui.doubleSpinBox_6->value());
- iniFile.setValue("b7", ui.doubleSpinBox_7->value());
- iniFile.setValue("b8", ui.doubleSpinBox_8->value());
- iniFile.setValue("b9", ui.doubleSpinBox_9->value());
- iniFile.setValue("b10", ui.doubleSpinBox_10->value());
- iniFile.setValue("b11", ui.doubleSpinBox_11->value());
- iniFile.setValue("b12", ui.doubleSpinBox_12->value());
- iniFile.setValue("use-bashed-coords", ui.groupBox_2->isChecked());
-#endif
+
+ iniFile.setValue("dc0", ui.doubleSpinBox->value());
+ iniFile.setValue("dc1", ui.doubleSpinBox_2->value());
+ iniFile.setValue("dc2", ui.doubleSpinBox_3->value());
+ iniFile.setValue("dc3", ui.doubleSpinBox_4->value());
+ iniFile.setValue("dc4", ui.doubleSpinBox_5->value());
+
iniFile.endGroup();
settingsDirty = false;
}
diff --git a/ftnoir_tracker_ht/ht-api.h b/ftnoir_tracker_ht/ht-api.h
index 572a60c6..e6960206 100644
--- a/ftnoir_tracker_ht/ht-api.h
+++ b/ftnoir_tracker_ht/ht-api.h
@@ -38,6 +38,7 @@ typedef struct ht_config {
float ransac_max_mean_error;
float ransac_abs_max_mean_error;
float flandmark_delay;
+ double dist_coeffs[5];
} ht_config_t;
typedef struct {
diff --git a/ftnoir_tracker_ht/ht-trackercontrols.ui b/ftnoir_tracker_ht/ht-trackercontrols.ui
index 5f414fc2..fbe7a41a 100644
--- a/ftnoir_tracker_ht/ht-trackercontrols.ui
+++ b/ftnoir_tracker_ht/ht-trackercontrols.ui
@@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>549</width>
- <height>131</height>
+ <width>593</width>
+ <height>280</height>
</rect>
</property>
<property name="sizePolicy">
@@ -22,7 +22,7 @@
<property name="maximumSize">
<size>
<width>750</width>
- <height>160</height>
+ <height>280</height>
</size>
</property>
<property name="windowTitle">
@@ -122,8 +122,8 @@
<widget class="QPushButton" name="buttonOK">
<property name="geometry">
<rect>
- <x>390</x>
- <y>100</y>
+ <x>430</x>
+ <y>250</y>
<width>75</width>
<height>23</height>
</rect>
@@ -135,8 +135,8 @@
<widget class="QPushButton" name="buttonCancel">
<property name="geometry">
<rect>
- <x>470</x>
- <y>100</y>
+ <x>510</x>
+ <y>250</y>
<width>75</width>
<height>23</height>
</rect>
@@ -289,6 +289,159 @@
</property>
</item>
</widget>
+ <widget class="QDoubleSpinBox" name="doubleSpinBox">
+ <property name="geometry">
+ <rect>
+ <x>130</x>
+ <y>130</y>
+ <width>171</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ <property name="buttonSymbols">
+ <enum>QAbstractSpinBox::NoButtons</enum>
+ </property>
+ <property name="decimals">
+ <number>24</number>
+ </property>
+ <property name="minimum">
+ <double>-1000.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>1000.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ <widget class="QLabel" name="label_5">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>130</y>
+ <width>111</width>
+ <height>16</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Distortion coefficients</string>
+ </property>
+ </widget>
+ <widget class="QDoubleSpinBox" name="doubleSpinBox_2">
+ <property name="geometry">
+ <rect>
+ <x>130</x>
+ <y>160</y>
+ <width>171</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ <property name="buttonSymbols">
+ <enum>QAbstractSpinBox::NoButtons</enum>
+ </property>
+ <property name="decimals">
+ <number>24</number>
+ </property>
+ <property name="minimum">
+ <double>-1000.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>1000.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ <widget class="QDoubleSpinBox" name="doubleSpinBox_3">
+ <property name="geometry">
+ <rect>
+ <x>130</x>
+ <y>190</y>
+ <width>171</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ <property name="buttonSymbols">
+ <enum>QAbstractSpinBox::NoButtons</enum>
+ </property>
+ <property name="decimals">
+ <number>24</number>
+ </property>
+ <property name="minimum">
+ <double>-1000.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>1000.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ <widget class="QDoubleSpinBox" name="doubleSpinBox_4">
+ <property name="geometry">
+ <rect>
+ <x>130</x>
+ <y>220</y>
+ <width>171</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ <property name="buttonSymbols">
+ <enum>QAbstractSpinBox::NoButtons</enum>
+ </property>
+ <property name="decimals">
+ <number>24</number>
+ </property>
+ <property name="minimum">
+ <double>-1000.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>1000.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
+ <widget class="QDoubleSpinBox" name="doubleSpinBox_5">
+ <property name="geometry">
+ <rect>
+ <x>130</x>
+ <y>250</y>
+ <width>171</width>
+ <height>22</height>
+ </rect>
+ </property>
+ <property name="frame">
+ <bool>true</bool>
+ </property>
+ <property name="buttonSymbols">
+ <enum>QAbstractSpinBox::NoButtons</enum>
+ </property>
+ <property name="decimals">
+ <number>24</number>
+ </property>
+ <property name="minimum">
+ <double>-1000.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>1000.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.000000000000000</double>
+ </property>
+ </widget>
</widget>
<resources/>
<connections/>