Modern image processing applications not only induce huge computational load but also are characterized by increasing complexity. As exemplarily shown in Section 2.2, they typically consist of a mixture of static and data-dependent algorithms and operate on both one-dimensional and multidimensional streams of data. Efficient implementation is only possible by exploiting different kinds of parallelism, namely task, data, and operation-level parallelism (see Section 2.5). Out-of-order communication and sliding windows with parallel data access require complex communication synthesis.