Support for GeoTIFF images

Open
#6,114 1 comment 0 reactions 1 assignee View on GitHub

@jantonguirao is already working on this.

Since Dec 7, 2025.

Assessment

This issue has not been assessed yet.

Description

enhancement
Is this a new feature, an improvement, or a change to existing functionality?

Improvement

How would you describe the priority of this feature request

Must have (e.g. DALI adoption is impossible due to lack in functionality).

Please provide a clear description of problem this feature solves

I am working on a geospatial application that requires decoding GeoTIFF files. This format does not seem to be supported by DALI. You can see the warnings when decoding such a file with DALI as well as some statistics computed on the result.

original.tif

TIFFReadDirectory: Warning, Unknown field with tag 33550 (0x830e) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 33922 (0x8482) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 34735 (0x87af) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 34736 (0x87b0) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 34737 (0x87b1) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 33550 (0x830e) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 33922 (0x8482) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 34735 (0x87af) encountered.                                                                                                                                            
TIFFReadDirectory: Warning, Unknown field with tag 34736 (0x87b0) encountered.
TIFFReadDirectory: Warning, Unknown field with tag 34737 (0x87b1) encountered.
[DALI RAW] Shape: torch.Size([874, 1362]) dtype: torch.uint8 min: 1.0000 max: 2.0000 mean: 1.6657
----------Image saved to pipeline_intermediate/dali_raw/image_dali.tif

Result (white border is a result of writing the image with matplotlib): image_dali.tif

For comparison's sake, here is the same image decoded by my original implementation using nvimgcodec:

decoder = nvimgcodec.Decoder(backends=[
    nvimgcodec.Backend(nvimgcodec.BackendKind.GPU_ONLY, load_hint=1.0)
])
decode_params = nvimgcodec.DecodeParams(color_spec=nvimgcodec.ColorSpec.UNCHANGED)
code_stream = nvimgcodec.CodeStream(f'{self.dir_path}/{tif_file}')
out = decoder.decode(code_stream, params=decode_params)
arr = np.array(out.cpu())
print(f"[STANDARD RAW] Shape: {arr.shape} dtype: {arr.dtype} min: {arr.min():.4f} max: {arr.max():.4f} mean: {arr.mean():.4f}")
[STANDARD RAW] Shape: (874, 1362, 1) dtype: uint8 min: 2.0000 max: 2.0000 mean: 2.0000
----------Image saved to pipeline_intermediate/standard_raw/image_standard.tif

image_standard.tif

As you can notice, statistics don't match (even if the result is the same visually).

Feature Description

I would like better support for GeoTIFF files in DALI. The decoder should not be triggering warnings about unknown fields when decoding such files.

Describe your ideal solution

I would like my existing decoder to decode GeoTIFF files too, without any issue.

files = fn.readers.file(files=self.generated_filepaths, random_shuffle=False)
jpegs = fn.decoders.image(
    files,
    device="mixed",
    output_type=types.ANY_DATA,
    bytes_per_sample_hint=50 * 1024 * 1024,
)
Describe any alternatives you have considered

I could probably write an external source, but I would prefer using the DALI decoder directly.

Additional context
  1. Can you please confirm that GeoTIFF files aren't currently supported? original.tif is the file I am trying to decode using DALI.
  2. Could the existing decoder fn.decoders.image() support GeoTIFF files too?

Thank you.

Check for duplicates
  • I have searched the open bugs/issues and have found no duplicates for this bug report
Dominant language
C++
Stars
5.8k
Forks
678
Avg merge
3d 1h
Merged PRs (30d)
27

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from NVIDIA/DALI

All issues in NVIDIA/DALI

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.