Large image splitting for parallel processing

Let's say I have a very large raster image, and it needs to be divided into smaller pieces for parallel processing. But in some cases, border pixels from a neighboring area must be taken into account. Should I just add some overlays / additions or do something else?

+4
source share
2 answers

Expansion of subunits on those sides that neighboring other subunits are a common pattern in parallel processing. It is called the ghost cell diagram in the halo diagram. Basically you take as many pixels of ghost cells / halo as the processing stencil requests and passes their value at the beginning of each processing iteration. It is also possible to take twice as large aureole area and, therefore, halve the number of messages (improves performance in high latency networks). A process in which each parallel process sends parts of its subblock to the halo region of its neighbors and vice versa is called a halo replacement. Most parallel processing libraries (like MPI) provide procedures that help you perform these halo swaps (like MPI_Cart_shift() in combination with MPI_Sendrecv() in MPI).

+2
source

Yes, overlapping is the most common solution. Beware that on the physical edges of your image you will need to do something smarter, because there will be no pixels to extract from neighboring tiles. A general solution is to mirror or extend the continuity of the contents of your image if you do not mind that your output image is smaller than your input image.

+1
source

All Articles