The University of Southampton
University of Southampton Institutional Repository

CPU, SMP and GPU implementations of Nohalo level 1, a fast co-convex antialiasing image resampler

CPU, SMP and GPU implementations of Nohalo level 1, a fast co-convex antialiasing image resampler
CPU, SMP and GPU implementations of Nohalo level 1, a fast co-convex antialiasing image resampler
This article introduces Nohalo level 1 (“Nohalo”), the simplest member of a family of image resamplers which straighten diagonal interfaces without adding noticeable nonlinear artifacts. Nohalo is interpolatory, co-monotone, coconvex, antialiasing, local average preserving, continuous, and exact on linears. Like many edge-enhancing methods, Nohalo has two main stages: first, nonlinear interpolation is used to create a double-density version of the original image; this doubledensity image is then resampled with bilinear interpolation. Nohalo is especially suited for GPU computing because the nonlinear slopes can be computed once and stored in a low bit-depth texture without rounding error, because the final bilinear stage can be performed in hardware, and because monotonicity allows full use of the texture’s dynamic range. Demand-driven implementations for CPUs and SMPs are more complex, and require extra work to fix bottlenecks. Efficient implementations of the minmod function are key to performance. Three implementations of Nohalo are presented and benchmarked: a CPU version in C for the graphics library GEGL, an SMP version in C++ for the graphics library VIPS and a GPU version in HLSL for DirectX. The GPU implementation is branch-free thanks to the discovery of a simple formula for the pixel values of the double density image. Branches are eliminated in the demand-driven C/C++ implementations by reflecting, if needed, Nohalo’s 12-point stencil with pointer shifts. Overall, Nohalo is not much slower than standard bicubic resamplers. Compared to twenty-three alternatives in tests involving the re-enlargement of images downsampled with nearest neighbour, Nohalo gets the best PSNRs.
185-195
Association for Computing Machinery
Robidoux, N
7a1550f7-d173-439d-adff-e99a63943d3f
Gong, M
22ec6c22-7f19-4e36-934d-3d23225efa81
Cupitt, J
969b08b4-92cf-4425-a98b-ab5b8b86f084
Turcotte, A
68a00306-f8f7-49a4-b758-09f671b786a5
Martinez, K
5f711898-20fc-410e-a007-837d8c57cb18
Desai, Bipin C.
Leung, Carson K.
Robidoux, N
7a1550f7-d173-439d-adff-e99a63943d3f
Gong, M
22ec6c22-7f19-4e36-934d-3d23225efa81
Cupitt, J
969b08b4-92cf-4425-a98b-ab5b8b86f084
Turcotte, A
68a00306-f8f7-49a4-b758-09f671b786a5
Martinez, K
5f711898-20fc-410e-a007-837d8c57cb18
Desai, Bipin C.
Leung, Carson K.

Robidoux, N, Gong, M, Cupitt, J, Turcotte, A and Martinez, K (2009) CPU, SMP and GPU implementations of Nohalo level 1, a fast co-convex antialiasing image resampler. Desai, Bipin C. and Leung, Carson K. (eds.) In Proceedings of the 2nd Canadian Conference on Computer Science and Software Engineering. Association for Computing Machinery. pp. 185-195 . (doi:10.1145/1557626.1557657).

Record type: Conference or Workshop Item (Paper)

Abstract

This article introduces Nohalo level 1 (“Nohalo”), the simplest member of a family of image resamplers which straighten diagonal interfaces without adding noticeable nonlinear artifacts. Nohalo is interpolatory, co-monotone, coconvex, antialiasing, local average preserving, continuous, and exact on linears. Like many edge-enhancing methods, Nohalo has two main stages: first, nonlinear interpolation is used to create a double-density version of the original image; this doubledensity image is then resampled with bilinear interpolation. Nohalo is especially suited for GPU computing because the nonlinear slopes can be computed once and stored in a low bit-depth texture without rounding error, because the final bilinear stage can be performed in hardware, and because monotonicity allows full use of the texture’s dynamic range. Demand-driven implementations for CPUs and SMPs are more complex, and require extra work to fix bottlenecks. Efficient implementations of the minmod function are key to performance. Three implementations of Nohalo are presented and benchmarked: a CPU version in C for the graphics library GEGL, an SMP version in C++ for the graphics library VIPS and a GPU version in HLSL for DirectX. The GPU implementation is branch-free thanks to the discovery of a simple formula for the pixel values of the double density image. Branches are eliminated in the demand-driven C/C++ implementations by reflecting, if needed, Nohalo’s 12-point stencil with pointer shifts. Overall, Nohalo is not much slower than standard bicubic resamplers. Compared to twenty-three alternatives in tests involving the re-enlargement of images downsampled with nearest neighbour, Nohalo gets the best PSNRs.

Text
262_nrobidoux_c3s2e-09.pdf - Other
Download (459kB)

More information

Published date: May 2009
Organisations: Web & Internet Science

Identifiers

Local EPrints ID: 268086
URI: http://eprints.soton.ac.uk/id/eprint/268086
PURE UUID: b204e434-3b86-4f8d-be2a-41d2d7f91be7
ORCID for K Martinez: ORCID iD orcid.org/0000-0003-3859-5700

Catalogue record

Date deposited: 20 Oct 2009 19:44
Last modified: 16 Mar 2024 02:54

Export record

Altmetrics

Contributors

Author: N Robidoux
Author: M Gong
Author: J Cupitt
Author: A Turcotte
Author: K Martinez ORCID iD
Editor: Bipin C. Desai
Editor: Carson K. Leung

Download statistics

Downloads from ePrints over the past year. Other digital versions may also be available to download e.g. from the publisher's website.

View more statistics

Atom RSS 1.0 RSS 2.0

Contact ePrints Soton: eprints@soton.ac.uk

ePrints Soton supports OAI 2.0 with a base URL of http://eprints.soton.ac.uk/cgi/oai2

This repository has been built using EPrints software, developed at the University of Southampton, but available to everyone to use.

We use cookies to ensure that we give you the best experience on our website. If you continue without changing your settings, we will assume that you are happy to receive cookies on the University of Southampton website.

×