Enforce band order normalization

pull/1701/head
Piero Toffanin 2023-09-29 13:00:32 -04:00
rodzic 57c61d918d
commit d9600741d1
1 zmienionych plików z 36 dodań i 2 usunięć

Wyświetl plik

@ -58,8 +58,42 @@ class ODM_Reconstruction(object):
for band_name in band_indexes:
mc.append({'name': band_name, 'photos': band_photos[band_name]})
# Sort by band index
mc.sort(key=lambda x: band_indexes[x['name']])
# We enforce a normalized band order for all bands that we can identify
# and rely on the manufacturer's band_indexes as a fallback for all others
normalized_band_order = {
'RGB': '0',
'REDGREENBLUE': '0',
'RED': '1',
'R': '1',
'GREEN': '2',
'G': '2',
'BLUE': '3',
'B': '3',
'NIR': '4',
'N': '4',
'REDEDGE': '5',
'RE': '5',
'LWIR': '6',
'L': '6',
}
for band_name in band_indexes:
if band_name.upper() not in normalized_band_order:
log.ODM_WARNING(f"Cannot identify order for {band_name} band, using manufacturer suggested index instead")
# Sort
mc.sort(key=lambda x: normalized_band_order.get(x['name'].upper(), '9' + band_indexes[x['name']]))
c = 1
for d in mc:
log.ODM_INFO(f"Band {c}: {d['name']}")
c += 1
return mc