From 3e73c75984c4011a24ed3131745cd4e563a4f8c8 Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 17:08:10 -0300 Subject: [PATCH 01/12] Removing the barriers --- micasense/image.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/micasense/image.py b/micasense/image.py index 5bd08cad..48f0d5c9 100644 --- a/micasense/image.py +++ b/micasense/image.py @@ -68,12 +68,6 @@ def __init__(self, image_path, exiftool_obj=None): self.path = image_path self.meta = metadata.Metadata(self.path, exiftool_obj=exiftool_obj) - if self.meta.band_name() is None: - raise ValueError("Provided file path does not have a band name: {}".format(image_path)) - if self.meta.band_name().upper() != 'LWIR' and not self.meta.supports_radiometric_calibration(): - raise ValueError('Library requires images taken with RedEdge-(3/M/MX) camera firmware v2.1.0 or later. ' + - 'Upgrade your camera firmware to at least version 2.1.0 to use this library with RedEdge-(3/M/MX) cameras.') - self.utc_time = self.meta.utc_time() self.latitude, self.longitude, self.altitude = self.meta.position() self.location = (self.latitude, self.longitude, self.altitude) From f5a0e114ba960a275417106319f3d5bc77c6386b Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 17:23:17 -0300 Subject: [PATCH 02/12] Adjusting Metadata to sequoia --- micasense/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/micasense/metadata.py b/micasense/metadata.py index 5941bf24..fed5f57f 100644 --- a/micasense/metadata.py +++ b/micasense/metadata.py @@ -184,7 +184,7 @@ def exposure(self): return exp def gain(self): - return self.get_item('EXIF:ISOSpeed')/100.0 + return self.get_item('EXIF:ISO')/100.0 def image_size(self): return self.get_item('EXIF:ImageWidth'), self.get_item('EXIF:ImageHeight') From acd245f9423f5f7e6712f0d6319a0d32ab00b57c Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 17:37:46 -0300 Subject: [PATCH 03/12] Update metadata.py --- micasense/metadata.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/micasense/metadata.py b/micasense/metadata.py index fed5f57f..bccecb4d 100644 --- a/micasense/metadata.py +++ b/micasense/metadata.py @@ -248,17 +248,12 @@ def focal_plane_resolution_px_per_mm(self): return fp_x_resolution, fp_y_resolution def focal_length_mm(self): - units = self.get_item('XMP:PerspectiveFocalLengthUnits') focal_length_mm = 0.0 - if units == 'mm': - focal_length_mm = float(self.get_item('XMP:PerspectiveFocalLength')) - else: - focal_length_px = float(self.get_item('XMP:PerspectiveFocalLength')) - focal_length_mm = focal_length_px / self.focal_plane_resolution_px_per_mm()[0] + focal_length_mm = float(self.get_item('EXIF:FocalLength')) return focal_length_mm def focal_length_35_mm_eq(self): - return float(self.get_item('Composite:FocalLength35efl')) + return float(self.get_item('EXIF:FocalLengthIn35mmFormat')) def __float_or_zero(self, str): if str is not None: From d03c6b63a27b579c1ef47b0de904b95d02fbddfe Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 18:11:15 -0300 Subject: [PATCH 04/12] Update metadata.py --- micasense/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/micasense/metadata.py b/micasense/metadata.py index bccecb4d..23532cce 100644 --- a/micasense/metadata.py +++ b/micasense/metadata.py @@ -196,7 +196,7 @@ def bandwidth(self): return self.get_item('XMP:WavelengthFWHM') def radiometric_cal(self): - nelem = self.size('XMP:RadiometricCalibration') + nelem = self.size('XMP:CalibrationMeasurement') return [float(self.get_item('XMP:RadiometricCalibration', i)) for i in range(nelem)] def black_level(self): From 9ed5211b6b70ea4f3abbed64e7cbdeaccef32f36 Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 18:13:27 -0300 Subject: [PATCH 05/12] Update metadata.py --- micasense/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/micasense/metadata.py b/micasense/metadata.py index 23532cce..b1e3a103 100644 --- a/micasense/metadata.py +++ b/micasense/metadata.py @@ -103,7 +103,7 @@ def dls_present(self): or self.get_item("XMP:DirectIrradiance is not None") is not None def supports_radiometric_calibration(self): - if(self.get_item('XMP:RadiometricCalibration')) is None: + if(self.get_item('XMP:CalibrationPicture')) is None: return False return True From 04a1d7b4e2ef88757eebe47ac13680eafab0afc3 Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 18:20:20 -0300 Subject: [PATCH 06/12] Update metadata.py --- micasense/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/micasense/metadata.py b/micasense/metadata.py index b1e3a103..2a2c3c6a 100644 --- a/micasense/metadata.py +++ b/micasense/metadata.py @@ -103,7 +103,7 @@ def dls_present(self): or self.get_item("XMP:DirectIrradiance is not None") is not None def supports_radiometric_calibration(self): - if(self.get_item('XMP:CalibrationPicture')) is None: + if(self.get_item('XMP:CalibrationPicture') is None): return False return True From 8cf933c491e4e245167efd6f6d1873417e1a6d64 Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 18:24:23 -0300 Subject: [PATCH 07/12] bug fix --- micasense/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/micasense/metadata.py b/micasense/metadata.py index 2a2c3c6a..be69dc32 100644 --- a/micasense/metadata.py +++ b/micasense/metadata.py @@ -197,7 +197,7 @@ def bandwidth(self): def radiometric_cal(self): nelem = self.size('XMP:CalibrationMeasurement') - return [float(self.get_item('XMP:RadiometricCalibration', i)) for i in range(nelem)] + return [float(self.get_item('XMP:CalibrationMeasurement', i)) for i in range(nelem)] def black_level(self): if self.get_item('EXIF:BlackLevel') is None: From 13a2c379b174a3bd9bf60512abc5d6a7ddca5200 Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 18:29:21 -0300 Subject: [PATCH 08/12] Update metadata.py --- micasense/metadata.py | 1 + 1 file changed, 1 insertion(+) diff --git a/micasense/metadata.py b/micasense/metadata.py index be69dc32..9c69215a 100644 --- a/micasense/metadata.py +++ b/micasense/metadata.py @@ -197,6 +197,7 @@ def bandwidth(self): def radiometric_cal(self): nelem = self.size('XMP:CalibrationMeasurement') + print(self.get_item('XMP:CalibrationMeasurement', 0)) return [float(self.get_item('XMP:CalibrationMeasurement', i)) for i in range(nelem)] def black_level(self): From 6408e832e1ee2997689dd5da942533f8ed796c82 Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 18:36:15 -0300 Subject: [PATCH 09/12] Update metadata.py --- micasense/metadata.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/micasense/metadata.py b/micasense/metadata.py index 9c69215a..8c85aac2 100644 --- a/micasense/metadata.py +++ b/micasense/metadata.py @@ -228,8 +228,8 @@ def bits_per_pixel(self): def vignette_center(self): ''' get the vignette center in X and Y image coordinates''' - nelem = self.size('XMP:VignettingCenter') - return [float(self.get_item('XMP:VignettingCenter', i)) for i in range(nelem)] + nelem = self.size('XMP:PrincipalPoint')#XMP:VignettingCenter + return [float(self.get_item('XMP:PrincipalPoint', i)) for i in range(nelem)] def vignette_polynomial(self): ''' get the radial vignette polynomial in the order it's defined in the metadata''' From d6f9c34e72cc1686089f656ae16f854106fb206b Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 18:49:13 -0300 Subject: [PATCH 10/12] FishEye --- micasense/metadata.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/micasense/metadata.py b/micasense/metadata.py index 8c85aac2..d4838632 100644 --- a/micasense/metadata.py +++ b/micasense/metadata.py @@ -237,8 +237,8 @@ def vignette_polynomial(self): return [float(self.get_item('XMP:VignettingPolynomial', i)) for i in range(nelem)] def distortion_parameters(self): - nelem = self.size('XMP:PerspectiveDistortion') - return [float(self.get_item('XMP:PerspectiveDistortion', i)) for i in range(nelem)] + nelem = self.size('XMP:FisheyeAffineMatrix')#XMP:PerspectiveDistortion + return [float(self.get_item('XMP:FisheyeAffineMatrix', i)) for i in range(nelem)] def principal_point(self): return [float(item) for item in self.get_item('XMP:PrincipalPoint').split(',')] From d815fcd189a49accbfb63a4a2699fe0ea3aa3392 Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 18:51:19 -0300 Subject: [PATCH 11/12] Fish Eye Update --- micasense/image.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/micasense/image.py b/micasense/image.py index 48f0d5c9..78b373e4 100644 --- a/micasense/image.py +++ b/micasense/image.py @@ -350,7 +350,7 @@ def plottable_vignette(self): def cv2_distortion_coeff(self): #dist_coeffs = np.array(k[0],k[1],p[0],p[1],k[2]]) - return np.array(self.distortion_parameters)[[0, 1, 3, 4, 2]] + return np.array(self.distortion_parameters)[[0, 1, 2, 3]] # values in pp are in [mm], rescale to pixels def principal_point_px(self): From 4bf30a11b38fe07a206f1831b1066f457cc73e8e Mon Sep 17 00:00:00 2001 From: Luiz Cortinhas Date: Thu, 14 Nov 2019 19:58:03 -0300 Subject: [PATCH 12/12] Update imageutils.py --- micasense/imageutils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/micasense/imageutils.py b/micasense/imageutils.py index 8ffef33f..c57f0fd7 100644 --- a/micasense/imageutils.py +++ b/micasense/imageutils.py @@ -158,7 +158,7 @@ def align(pair): print("Starting warp for level {} is:\n {}".format(level,warp_matrix)) try: - cc, warp_matrix = cv2.findTransformECC(grad1, grad2, warp_matrix, warp_mode, criteria, inputMask=None, gaussFiltSize=1) + cc, warp_matrix = cv2.findTransformECC(grad1, grad2, warp_matrix, warp_mode, criteria, None, 1) except TypeError: cc, warp_matrix = cv2.findTransformECC(grad1, grad2, warp_matrix, warp_mode, criteria) @@ -414,4 +414,4 @@ def map_points(pts, image_size, warpMatrix, distortion_coeffs, camera_matrix,war if cv2.__version__<='3.4.4': return new_pts[0] else: - return new_pts[:,0,:] \ No newline at end of file + return new_pts[:,0,:]