Skip to main content

patchify

patchfy can split images into small overlappable patches by given patch cell size, and merge patches into original image.

This library provides two functions: patchify, unpatchify.

Installation

pip install patchify

Usage

Split image to patches

patchify(image_to_patch, patch_shape, step=1)

2D image:

#This will split the image into small images of shape [3,3]
patches = patchify(image, (3, 3), step=1)

3D image:

#This will split the image into small images of shape [3,3,3]
patches = patchify(image, (3, 3, 3), step=1)

Merge patches into original image

unpatchify(patches_to_merge, merged_image_size)

reconstructed_image = unpatchify(patches, image.shape)

This will reconstruct the original image that was patchified in previous code.

Caveat: in order for unpatchify to work, you need to create patchies with equal step size. e.g. if the original image has width 3 and the patch has width 2, you cannot really create equal step size patches with step size 2. (first patch [elem0, elem1] and second patch [elem2, elem3], which is out of bound).

The required condition for unpatchify to success is to have (width - patch_width) mod step_size = 0.

Full running examples

2D image patchify and merge

import numpy as np
from patchify import patchify, unpatchify

image = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])

patches = patchify(image, (2,2), step=1) # split image into 2*3 small 2*2 patches.

assert patches.shape == (2, 3, 2, 2)
reconstructed_image = unpatchify(patches, image.shape)

assert (reconstructed_image == image).all()

3D image patchify and merge

import numpy as np
from patchify import patchify, unpatchify

image = np.random.rand(512,512,3)

patches = patchify(image, (2,2,3), step=1) # patch shape [2,2,3]
print(patches.shape) # (511, 511, 1, 2, 2, 3). Total patches created: 511x511x1

assert patches.shape == (511, 511, 1, 2, 2, 3)
reconstructed_image = unpatchify(patches, image.shape)
print(reconstructed_image.shape) # (512, 512, 3)

assert (reconstructed_image == image).all()

Download files

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

Source Distribution

patchify-0.2.3.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

patchify-0.2.3-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file patchify-0.2.3.tar.gz.

File metadata

  • Download URL: patchify-0.2.3.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.8.6 Linux/5.4.0-65-generic

File hashes

Hashes for patchify-0.2.3.tar.gz
Algorithm Hash digest
SHA256 6cc409124f34ceee672f1931d818923f88f5116f323ac7bb9be7e6c5d0845502
MD5 97b7e7a0d900446c6cbb0ea610e21596
BLAKE2b-256 79b71b281a31d8fdbdfc44af2fcb7a0750158e160f3a8c608fcb602e62be24a8

See more details on using hashes here.

File details

Details for the file patchify-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: patchify-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.8.6 Linux/5.4.0-65-generic

File hashes

Hashes for patchify-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4bd4f80c83280b36c6968cb4d802bde28cd11446cc8ace94e0aa14f573fcf41b
MD5 8628c93c912938a9a38bcf6b5bc66bb3
BLAKE2b-256 00ced76647d95aad98d5532b5d25801dedda788c6b5d4c7457d30ae3612132af

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 files

0.2.2

2 files

0.2.1

2 files

0.2

2 files

0.1.1

1 file

0.1.0

1 file

0.0.2

1 file

0.0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page