The Photo Editing test models use cases with photo editing application.    

Implementation

The Photo Editing test uses the ImageMagick library. The test uses binaries built by UL.

The Photo Editing test supports OpenCL. The benchmark application selects a preferred OpenCL device for the ImageMagick library to use.

ResultCameraFile sizeResolution
INTERACTIVE RAWFujifilm X-E124.9 MB4952 × 3288
BATCH 1 RAWCanon EOS 5D15.8 MB4386 × 2920
BATCH 2 RAWNikon D60020.5 MB6034 × 4028
BATCH 3 RAWNikon D80072.2 MB7378 × 4924
BATCH 4 RAWCanon EOS 5D13.5 MB4386 × 2920
BATCH 5 RAWOlympus E-PL714.5 MB4640 × 3472
BATCH 6 RAWSony ILCE-723.8 MB6024 × 4024
BATCH 7 JPGNikon D31006.9 MB4608 × 3072
BATCH 8 JPGNikon D35.5 MB4256 × 2832
OUTPUT PNG
27.8 MB4952 × 3288
OUTPUT JPEG
7.2–8.9 MB4952 × 3288

Following filters are executed on CPU:

  • color adjusting
  • unsharp mask 1
  • noise adding
  • thumbnail loading

Following filters are executed on OCL:

  • gaussian blur
  • unsharp mask 2
  • local contrast
  • wavelet denoise
  • batch transformation

Workloads

Interactive scenario

The interactive use scenario simulates editing a photo in an image manipulation program. The workloads performs the following tasks:

  1. Load and display a source image into the adjustment view. 
  2. Apply brightness, contrast, saturation, unsharp mask, Gaussian noise, Gaussian blur, a further unsharp mask, local contrast and wavelet denoise to the source image via sliders in the user interface and display the resulting image in the adjustment view. Each slider is moved 2-5 times, depending on the operation. After each filtering pass constituting a secondary result, each image is saved on disk in JPEG and PNG formats.

The workload measures the time it takes to load images, apply filters and save the images in each format. 

Color adjusting CPU    =    M_3 + M_4 + M_5 + M_6 + M_7

Where:
M_3    =    BrightnessContrastImage(brightness 1-9,3 step)
M_4    =    BrightnessContrastImage(brightness 8-1.77,3 step)
M_5    =    BrightnessContrastImage(contrast 1-27.34,4 step)
M_6    =    ModulateImage(saturation 101-99,2 step)
M_7    =    ModulateImage(saturation 101-112,4 step)
Noise adding CPU    =    M_8

Where:
M_8    =    AddNoiseImage(noistype GaussianNoise)
Gaussian blur OCL    =    M_9 + M_10

Where:
M_9     =    GaussianBlurImage(radius 2-0.3,5 step)
M_10    =    GaussianBlurImage(sigma 1-0.15,5 step)
Local contrast OCL    =    M_11 + M_12

Where:
M_11    =    LocalContrastImage(radius 20-100,5 step)
M_12    =    LocalContrastImage(amount 25-75,5 step)
Wavelet denoise OCL    =    M_13

Where:
M_13    =    WaveletDenoiseImage(threshold 1-10,5 step)
Unsharp mask 1 CPU    =   M_14 + M_15 + M_16 + M_17

Where:
M_14    =    UnsharpMaskImage(radius 1-8,5 step)
M_15    =    UnsharpMaskImage(sigma 1-4,5 step)
M_16    =    UnsharpMaskImage(amount 99-32,5 step)
M_17    =    UnsharpMaskImage(threshold 0.2-3,5 step)
Unsharp mask 2 OCL    =   M_18 + M_19 + M_20 + M_21

Where:
M_18    =    UnsharpMaskImage(radius 1-2.6,5 step)
M_19    =    UnsharpMaskImage(sigma 1-1.3,5 step)
M_20    =    UnsharpMaskImage(amount 99-35,5 step)
M_21    =    UnsharpMaskImage(threshold 1-2,5 step)
Save PNG    =    M_22

Where:
M_22    =    Sum of save times to png
Save JPEG    =    M_23

Where:
M_23    =    Sum of save times to jpeg

Batch processing scenario

The batch processing scenario simulates editing a group of photos in an image manipulation program. The workloads perform the following tasks:

  1. Load each thumbnail one at a time into a preview matrix 
  2. Apply brightness, contrast, saturation, unsharp mask, Gaussian noise, Gaussian blur, a further unsharp mask, local contrast and wavelet denoise to all of the original images.
  3. Continue to the next image.

The workload measures the time it takes to load thumbnails, apply filters and save the images in each format. 

Thumbnail loading CPU    =    geomean(M_1,M_2)

Where:
M_1    =    geomean of 8 image file load times
M_2    =    geomean of the resize time of 8 images to a thumbnail

And where:
The load time of the files is the following measurement:  dbg_photo_load_cpu.
The resize time of the files is the following measurement:  dbg_photo_resize_cpu.
Batch transformation OCL    =    M_3 + M_4 + M_5 + M_6 + M_7 + M_8 + M_9 + M_10

Where:
M_3    =    BrightnessContrastImage(brightness 1.77,contrast 27.34) )
M_4    =    ModulateImage(saturation 112)
M_5    =    UnsharpMaskImage(radius 8,sigma 4,amount 32,threshold 3)
M_6    =    AddNoiseImage(noistype GaussianNoise)
M_7    =    GaussianBlurImage(radius 0.3,sigma 0.15)
M_8    =    UnsharpMaskImage(radius 2.6,sigma 1.3,amount 35,threshold 2)
M_9    =    LocalContrastImage(radius 50,amount 20)
M_10   =    WaveletDenoiseImage(threshold 10,softness 0)

Photo Editing score

We use a weighted harmonic mean to calculate the Photo Editing score from the workload scores.

Photo Editing score    =    K × 1 / geomean(R_1,R_2,R_3,R_4,R_5,R_6,R_7,R_8,R_9)

Where:
K      =     scoring coefficient    =     14352
R_3    =     Unsharp    =     geomean(A_1,A_2)
R_9    =     Save    =     geomean(A_3,A_4)
ResultDefinitionUnitTypical range
R_1Thumbnail loading CPUs0.32-0.70
R_2Color adjusting CPU
s
4.9-10
R_4
Noise adding CPU
s0.49-1.2
R_5Gaussian blur OCL
s0.60-3.0
R_6Local contrast OCL
s4.0-38
R_7Wavelet denoise OCL
s1.3-12
R_8Batch transformation OCL
s8.5-78
A_1Unsharp mask 1 CPU
s3.9-7.8
A_2Unsharp mask 2 OCL
s1.7-7.5
A_3Save PNG
s14-22
A_4Save JPEG
s1.5-2.2