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)
| File | Size | Uploaded | |
|---|---|---|---|
| patchify-0.2.3.tar.gz | 5.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|