Implementation of the canny edge detector. The majority of the algorithm is data-parallel and implemented in Accelerate, with the final (sequential) phase implemented using repa. Uses the accelerate-io package to efficiently convert between the Accelerate and Repa array representations.
Original image
Result