summaryrefslogtreecommitdiff
path: root/src/ImageMetaData.cxx
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2006-12-14 19:53:41 +0100
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2006-12-14 19:53:41 +0100
commit52bcb63b5d8db6627c20c097f0c20df28e6918fc (patch)
tree33379705401c2b606bd687a9f3bbf1e6cfab1140 /src/ImageMetaData.cxx
parentfbb4796e81dcb2dc2bcf792917f2391f799653c8 (diff)
implement save/restore of distortion parameters
Diffstat (limited to 'src/ImageMetaData.cxx')
-rw-r--r--src/ImageMetaData.cxx42
1 files changed, 36 insertions, 6 deletions
diff --git a/src/ImageMetaData.cxx b/src/ImageMetaData.cxx
index 6519239..8e7d381 100644
--- a/src/ImageMetaData.cxx
+++ b/src/ImageMetaData.cxx
@@ -24,6 +24,10 @@ ImageMetaData::ImageMetaData() {
direction = 0.0;
nick = 0.0;
tilt = 0.0;
+ k0 = 0.0;
+ k1 = 0.0;
+ u0 = 0.0;
+ v0 = 0.0;
focal_length_35mm = 35.0;
scale = NAN;
projection_type = 0;
@@ -124,7 +128,7 @@ ImageMetaData::load_image_exif(char *name) {
#define GIPFEL_FORMAT_1 "gipfel: longitude %lf, latitude %lf, height %lf, direction %lf, nick %lf, tilt %lf, scale %lf, projection type %d"
-#define GIPFEL_FORMAT_2 "gipfel: longitude %lf, latitude %lf, height %lf, direction %lf, nick %lf, tilt %lf, focal_length_35mm %lf, projection type %d"
+#define GIPFEL_FORMAT_2 "gipfel: longitude %lf, latitude %lf, height %lf, direction %lf, nick %lf, tilt %lf, focal_length_35mm %lf, projection type %d, k0 %lf, k1 %lf, u0 %lf, v0 %lf"
int
ImageMetaData::load_image_jpgcom(char *name) {
@@ -133,9 +137,9 @@ ImageMetaData::load_image_jpgcom(char *name) {
pid_t pid;
int status;
char buf[1024];
- double lo, la, he, dir, ni, ti, fr;
+ double lo, la, he, dir, ni, ti, fr, _k0, _k1, _u0, _v0;
int pt;
- int ret = 1;
+ int n, ret = 1;
args[0] = "rdjpgcom";
args[1] = name;
@@ -145,8 +149,8 @@ ImageMetaData::load_image_jpgcom(char *name) {
if (p) {
while (fgets(buf, sizeof(buf), p) != NULL) {
- if (sscanf(buf, GIPFEL_FORMAT_2,
- &lo, &la, &he, &dir, &ni, &ti, &fr, &pt) >= 7) {
+ if ((n = sscanf(buf, GIPFEL_FORMAT_2,
+ &lo, &la, &he, &dir, &ni, &ti, &fr, &pt, &_k0, &_k1, &_u0, &_v0)) >= 7) {
longitude = lo;
latitude = la;
@@ -157,6 +161,13 @@ ImageMetaData::load_image_jpgcom(char *name) {
focal_length_35mm = fr;
projection_type = pt;
+ if (n == 11) {
+ k0 = _k0;
+ k1 = _k1;
+ u0 = _u0;
+ v0 = _v0;
+ }
+
ret = 0;
break;
@@ -226,7 +237,8 @@ ImageMetaData::save_image_jpgcom(char *in_img, char *out_img) {
nick,
tilt,
focal_length_35mm,
- projection_type);
+ projection_type,
+ k0, k1, u0, v0);
// try to save gipfel data in JPEG comment section
args[0] = "wrjpgcom";
@@ -338,3 +350,21 @@ void
ImageMetaData::set_projection_type(int v) {
projection_type = v;
}
+
+void
+ImageMetaData::get_distortion_params(double *_k0, double *_k1,
+ double *_u0, double *_v0) {
+ *_k0 = k0;
+ *_k1 = k1;
+ *_u0 = u0;
+ *_v0 = v0;
+}
+
+void
+ImageMetaData::set_distortion_params(double _k0, double _k1,
+ double _u0, double _v0) {
+ k0 = _k0;
+ k1 = _k1;
+ u0 = _u0;
+ v0 = _v0;
+}