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.
Result | Camera | File size | Resolution |
INTERACTIVE RAW | Fujifilm X-E1 | 24.9 MB | 4952 × 3288 |
BATCH 1 RAW | Canon EOS 5D | 15.8 MB | 4386 × 2920 |
BATCH 2 RAW | Nikon D600 | 20.5 MB | 6034 × 4028 |
BATCH 3 RAW | Nikon D800 | 72.2 MB | 7378 × 4924 |
BATCH 4 RAW | Canon EOS 5D | 13.5 MB | 4386 × 2920 |
BATCH 5 RAW | Olympus E-PL7 | 14.5 MB | 4640 × 3472 |
BATCH 6 RAW | Sony ILCE-7 | 23.8 MB | 6024 × 4024 |
BATCH 7 JPG | Nikon D3100 | 6.9 MB | 4608 × 3072 |
BATCH 8 JPG | Nikon D3 | 5.5 MB | 4256 × 2832 |
OUTPUT PNG | 27.8 MB | 4952 × 3288 | |
OUTPUT JPEG | 7.2–8.9 MB | 4952 × 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:
- Load and display a source image into the adjustment view.
- 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:
- Load each thumbnail one at a time into a preview matrix
- 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.
- 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)
Result | Definition | Unit | Typical range |
---|---|---|---|
R_1 | Thumbnail loading CPU | s | 0.32-0.70 |
R_2 | Color adjusting CPU | s | 4.9-10 |
R_4 | Noise adding CPU | s | 0.49-1.2 |
R_5 | Gaussian blur OCL | s | 0.60-3.0 |
R_6 | Local contrast OCL | s | 4.0-38 |
R_7 | Wavelet denoise OCL | s | 1.3-12 |
R_8 | Batch transformation OCL | s | 8.5-78 |
A_1 | Unsharp mask 1 CPU | s | 3.9-7.8 |
A_2 | Unsharp mask 2 OCL | s | 1.7-7.5 |
A_3 | Save PNG | s | 14-22 |
A_4 | Save JPEG | s | 1.5-2.2 |