Skip to main content

Minimalistic set of image reader agnostic tools to easily iterate over large images

Project description

Build Status Coverage Status Documentation Status

Image Tiling Utils

Minimalistic set of image reader agnostic tools to easily iterate over large images

Example 1

Let's iterate over a large image with overlapping tiles of the same size tiles in pixels. At boundaries we add "no-data" pixels. Let's assume the data access is provided with an example function

def read_data(x, y, width, height, out_width=None, out_height=None):
    out_width = width if out_width is None else out_width
    out_height = height if out_height is None else out_height    
    img.read(x, y, width, height, out_width, out_height)

Thus, overlapping tiles can be extracted as

from tiling import ConstStrideTiles

tiles = ConstStrideTiles(image_size=(500, 500), tile_size=(256, 256), stride=(100, 100), 
                         origin=(-100, -100),
                         scale=1.0,
                         include_nodata=True)

print("Number of tiles: %i" % len(tiles))
for extent, out_size in tiles:
    x, y, width, height = extent
    data = read_data(x, y, width, height, 
                     out_width=out_size[0], 
                     out_height=out_size[1])
    print("data.shape: {}".format(data.shape))

# Access a tile:
i = len(tiles) // 2 
extent, out_size  = tiles[i]

example 1 tiles

Example 2

Let's iterate over a large image with overlapping tiles of the same size in pixels. In this case we prefer to not going outside the input image and fill tiles with nodata. In this situation, overlapping is not constant. Let's assume the data access is provided with an example function

def read_data(x, y, width, height, out_width=None, out_height=None):
    out_width = width if out_width is None else out_width
    out_height = height if out_height is None else out_height    
    img.read(x, y, width, height, out_width, out_height)

Thus, overlapping tiles can be extracted as

from tiling import ConstSizeTiles

tiles = ConstSizeTiles(image_size=(500, 500), tile_size=(256, 256), min_overlapping=15, scale=1.0)

print("Number of tiles: %i" % len(tiles))
for extent, out_size in tiles:
    assert out_size[0] == tiles.tile_size[0]
    assert out_size[1] == tiles.tile_size[1]
    x, y, width, height = extent
    data = read_data(x, y, width, height, 
                     out_width=out_size[0], 
                     out_height=out_size[1])
    print("data.shape: {}".format(data.shape))

# Access a tile:
i = len(tiles) // 2 
extent  = tiles[i]

example 2 tiles

Installation:

from pip

pip install tiling

from sources

pip install git+https://github.com/vfdev-5/ImageTilingUtils.git

Examples

For more practical examples, see notebooks

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tiling-0.3.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distributions

tiling-0.3.0-py3.6.egg (13.4 kB view details)

Uploaded Source

tiling-0.3.0-py2.py3-none-any.whl (7.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file tiling-0.3.0.tar.gz.

File metadata

  • Download URL: tiling-0.3.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.7

File hashes

Hashes for tiling-0.3.0.tar.gz
Algorithm Hash digest
SHA256 888bf09385f5e200916e3308a2a2b1534c6837d52be552e5d077687f5be9799a
MD5 af135e94c2febd13838ae9aecb4fe6a4
BLAKE2b-256 8b5cf877513ee613894203d8e78f7a926b45b51e6408699f4e189d8e9d8331f7

See more details on using hashes here.

File details

Details for the file tiling-0.3.0-py3.6.egg.

File metadata

  • Download URL: tiling-0.3.0-py3.6.egg
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.7

File hashes

Hashes for tiling-0.3.0-py3.6.egg
Algorithm Hash digest
SHA256 cd9623d9c9bb3b7ec410b5a4bd87a16930e9559695ba6ef4a287bbd1993986ee
MD5 e0f5ee6e1e2cf3df92634ab23e5435d7
BLAKE2b-256 0d7d69478f6027f0e3a59ff91e7be219204fa858a236724620872268e3f38825

See more details on using hashes here.

File details

Details for the file tiling-0.3.0-py2.py3-none-any.whl.

File metadata

  • Download URL: tiling-0.3.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.7

File hashes

Hashes for tiling-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 92d606be0a49746ef6de758c23e09ee232454252d5170fdb8ac01ba7863b5b07
MD5 1d5d09bc007eb0c6bd0b544c523307c5
BLAKE2b-256 8b7c741c08e17e66983c3423c1f2a3ec729e538b62bfa67e4fafd1b442745ee4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page