# Image Partition into Blocks

**URL:** <https://discourse.julialang.org/t/image-partition-into-blocks/85238>\
**Category:** Signal and Image Processing\
**Tags:** question, arrays, image-processing\
**Created:** [August 3, 2022, 3:20pm UTC](https://discourse.julialang.org/t/image-partition-into-blocks/85238 "2022-08-03T15:20:34Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![lgmendes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lgmendes/32/34577_2.png) [@lgmendes](https://discourse.julialang.org/u/lgmendes)\
**Post date:** [August 3, 2022, 3:20pm UTC](https://discourse.julialang.org/t/image-partition-into-blocks/85238/1 "2022-08-03T15:20:35Z")

</div>

What is the equivalent Julia function of the Wolfram Mathematica **ImagePartition** function ( [ImagePartition—Wolfram Language Documentation](https://reference.wolfram.com/language/ref/ImagePartition.html) )

---

<div class="post-metadata">

**Author:** ![mgkuhn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mgkuhn/32/6276_2.png) [@mgkuhn](https://discourse.julialang.org/u/mgkuhn)\
**Post date:** [August 3, 2022, 4:28pm UTC](https://discourse.julialang.org/t/image-partition-into-blocks/85238/2 "2022-08-03T16:28:15Z")

</div>

You could implement one yourself in about one line with [comprehensions](https://docs.julialang.org/en/v1/manual/arrays/#man-comprehensions) and [views](https://docs.julialang.org/en/v1/base/arrays/#Views-(SubArrays-and-other-view-types)).

---

<div class="post-metadata">

**Author:** ![stillyslalom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stillyslalom/32/45687_2.png) [@stillyslalom](https://discourse.julialang.org/u/stillyslalom)\
**Post date:** [August 3, 2022, 4:37pm UTC](https://discourse.julialang.org/t/image-partition-into-blocks/85238/3 "2022-08-03T16:37:44Z")

</div>

Take a look at [GitHub - JuliaArrays/TiledIteration.jl: Julia package to facilitate writing mulithreaded, multidimensional, cache-efficient code](https://github.com/JuliaArrays/TiledIteration.jl), which handles N-dimensional arrays (including images).

---

<div class="post-metadata">

**Author:** ![mgkuhn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mgkuhn/32/6276_2.png) [@mgkuhn](https://discourse.julialang.org/u/mgkuhn)\
**Post date:** [August 3, 2022, 6:36pm UTC](https://discourse.julialang.org/t/image-partition-into-blocks/85238/4 "2022-08-03T18:36:48Z")

</div>

A basic version:

```julia
using Images
using TestImages

img = testimage("cameraman")

"""
Partitions an image into an array of subimages
of pixel width w and pixel height h.
"""
function imblocks(img,
                  ( w, h)::Tuple{Integer,Integer},
                  (dw, dh)::Tuple{Integer,Integer} = (0, 0))
    x = (size(img, 2) - dw) ÷ w
    y = (size(img, 1) - dh) ÷ h
    [view(img, (1:h) .+ (i*h+dh), (1:w) .+ (j*w+dw)) for i=0:y-1, j=0:x-1]
end
"""
Partitions an image into an array of sxs-pixel subimages.
"""
imblocks(img, s::Integer) = imblocks(img, (s, s))

imblocks(img, (128,64))

```

Padding left as an exercise.
