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()

Release files for patchify 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for patchify 0.2.3
File Size Uploaded
patchify-0.2.3.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for patchify 0.2.3
File Interpreter ABI Platform
patchify-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 12.5 kB

Release files / patchify-0.2.3.tar.gz

Download URL patchify-0.2.3.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6cc409124f34ceee672f1931d818923f88f5116f323ac7bb9be7e6c5d0845502
BLAKE2b-256 checksum
How to use checksums
79b71b281a31d8fdbdfc44af2fcb7a0750158e160f3a8c608fcb602e62be24a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.5 CPython/3.8.6 Linux/5.4.0-65-generic

Release files / patchify-0.2.3-py3-none-any.whl

Download URL patchify-0.2.3-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4bd4f80c83280b36c6968cb4d802bde28cd11446cc8ace94e0aa14f573fcf41b
BLAKE2b-256 checksum
How to use checksums
00ced76647d95aad98d5532b5d25801dedda788c6b5d4c7457d30ae3612132af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.5 CPython/3.8.6 Linux/5.4.0-65-generic

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2

2 release files

0.1.1

1 release file

0.1.0

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page