From: commit-bot@chromium.org Date: Tue, 11 Feb 2014 13:30:33 +0000 (+0000) Subject: Revert of Add the perceptual difference metric to the rebaseline server (https:/... X-Git-Tag: accepted/tizen/5.0/unified/20181102.025319~9060 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=589bd3da3403e305af802d412d14213f64478b2d;p=platform%2Fupstream%2FlibSkiaSharp.git Revert of Add the perceptual difference metric to the rebaseline server (https://codereview.chromium.org/147453003/) Reason for revert: Caused failure in RunGmSelfTests: http://108.170.219.160:10117/builders/Housekeeper-PerCommit/builds/154/steps/RunGmSelfTests/logs/stdio Filed: https://code.google.com/p/skia/issues/detail?id=2160 Original issue's description: > Add the perceptual difference metric to the rebaseline server > > * Finds the location of the skpdiff binary. > * Calculates the perceptual difference percentage using the skpdiff binary. > * Replaces the weightedDiffMeasure in view.html with perceptualDifferent. > > BUG=skia:2019 > NOTRY=true > > Committed: http://code.google.com/p/skia/source/detail?r=13398 R=epoger@google.com TBR=epoger@google.com NOTREECHECKS=true NOTRY=true BUG=skia:2019 Author: rmistry@google.com Review URL: https://codereview.chromium.org/131453017 git-svn-id: http://skia.googlecode.com/svn/trunk@13399 2bbb7eff-a529-9590-31e7-b0007b416f81 --- diff --git a/gm/rebaseline_server/imagediffdb.py b/gm/rebaseline_server/imagediffdb.py index d168c88..936301e 100644 --- a/gm/rebaseline_server/imagediffdb.py +++ b/gm/rebaseline_server/imagediffdb.py @@ -10,13 +10,10 @@ Calulate differences between image pairs, and store them in a database. """ import contextlib -import csv import logging import os import re import shutil -import sys -import tempfile import urllib try: from PIL import Image, ImageChops @@ -24,15 +21,6 @@ except ImportError: raise ImportError('Requires PIL to be installed; see ' + 'http://www.pythonware.com/products/pil/') -# Set the PYTHONPATH to include the tools directory. -sys.path.append( - os.path.join( - os.path.dirname(os.path.realpath(__file__)), os.pardir, os.pardir, - 'tools')) -import find_run_binary - -SKPDIFF_BINARY_NAME = 'skpdiff' - DEFAULT_IMAGE_SUFFIX = '.png' DEFAULT_IMAGES_SUBDIR = 'images' @@ -111,27 +99,6 @@ class DiffRecord(object): whitediff_image = (graydiff_image.point(lambda p: p > 0 and VALUES_PER_BAND) .convert('1', dither=Image.NONE)) - # Calculate the perceptual difference percentage. - skpdiff_csv_dir = tempfile.mkdtemp() - try: - skpdiff_csv_output = os.path.join(skpdiff_csv_dir, 'skpdiff-output.csv') - skpdiff_binary = find_run_binary.find_path_to_program(SKPDIFF_BINARY_NAME) - expected_img = os.path.join(storage_root, expected_images_subdir, - str(expected_image_locator) + image_suffix) - actual_img = os.path.join(storage_root, actual_images_subdir, - str(actual_image_locator) + image_suffix) - find_run_binary.run_command( - [skpdiff_binary, '-p', expected_img, actual_img, - '--csv', skpdiff_csv_output, '-d', 'perceptual']) - with contextlib.closing(open(skpdiff_csv_output)) as csv_file: - for row in csv.DictReader(csv_file): - perceptual_similarity = float(row[' perceptual'].strip()) - # skpdiff returns the perceptual similarity, convert it to get the - # perceptual difference percentage. - self._perceptual_difference = 100 - (perceptual_similarity * 100) - finally: - shutil.rmtree(skpdiff_csv_dir) - # Final touches on diff_image: use whitediff_image as an alpha mask. # Unchanged pixels are transparent; differing pixels are opaque. diff_image.putalpha(whitediff_image) @@ -161,10 +128,6 @@ class DiffRecord(object): return ((float(self._num_pixels_differing) * 100) / (self._width * self._height)) - def get_perceptual_difference(self): - """Returns the perceptual difference percentage.""" - return self._perceptual_difference - def get_weighted_diff_measure(self): """Returns a weighted measure of image diffs, as a float between 0 and 100 (inclusive).""" diff --git a/gm/rebaseline_server/imagediffdb_test.py b/gm/rebaseline_server/imagediffdb_test.py index b1d534a..558a816 100755 --- a/gm/rebaseline_server/imagediffdb_test.py +++ b/gm/rebaseline_server/imagediffdb_test.py @@ -19,8 +19,7 @@ import unittest import imagediffdb -IMG_URL_BASE = ('http://chromium-skia-gm.commondatastorage.googleapis.com/gm/' - 'bitmap-64bitMD5/') +IMG_URL_BASE = 'http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/' class ImageDiffDbTest(unittest.TestCase): @@ -57,22 +56,21 @@ class ImageDiffDbTest(unittest.TestCase): # 3. actual image URL # 4. expected percent_pixels_differing (as a string, to 4 decimal places) # 5. expected weighted_diff_measure (as a string, to 4 decimal places) - # 6. expected perceptual difference (as a string, to 4 decimal places) - # 7. expected max_diff_per_channel + # 6. expected max_diff_per_channel selftests = [ [ 'arcofzorro/16206093933823793653', IMG_URL_BASE + 'arcofzorro/16206093933823793653.png', 'arcofzorro/13786535001616823825', IMG_URL_BASE + 'arcofzorro/13786535001616823825.png', - '0.0662', '0.0113', '0.0662', [255, 255, 247], + '0.0662', '0.0113', [255, 255, 247], ], [ 'gradients_degenerate_2pt/10552995703607727960', IMG_URL_BASE + 'gradients_degenerate_2pt/10552995703607727960.png', 'gradients_degenerate_2pt/11198253335583713230', IMG_URL_BASE + 'gradients_degenerate_2pt/11198253335583713230.png', - '100.0000', '66.6667', '100.0000', [255, 0, 255], + '100.0000', '66.6667', [255, 0, 255], ], ] @@ -90,8 +88,7 @@ class ImageDiffDbTest(unittest.TestCase): self.assertEqual('%.4f' % record.get_percent_pixels_differing(), selftest[4]) self.assertEqual('%.4f' % record.get_weighted_diff_measure(), selftest[5]) - self.assertEqual('%.4f' % record.get_perceptual_difference(), selftest[6]) - self.assertEqual(record.get_max_diff_per_channel(), selftest[7]) + self.assertEqual(record.get_max_diff_per_channel(), selftest[6]) def main(): diff --git a/gm/rebaseline_server/results.py b/gm/rebaseline_server/results.py index 3b57bc1..fff0a94 100755 --- a/gm/rebaseline_server/results.py +++ b/gm/rebaseline_server/results.py @@ -432,7 +432,6 @@ class Results(object): results_for_this_test['numDifferingPixels'] = 0 results_for_this_test['percentDifferingPixels'] = 0 results_for_this_test['weightedDiffMeasure'] = 0 - results_for_this_test['perceptualDifference'] = 0 results_for_this_test['maxDiffPerChannel'] = 0 else: try: @@ -445,8 +444,6 @@ class Results(object): diff_record.get_percent_pixels_differing()) results_for_this_test['weightedDiffMeasure'] = ( diff_record.get_weighted_diff_measure()) - results_for_this_test['perceptualDifference'] = ( - diff_record.get_perceptual_difference()) results_for_this_test['maxDiffPerChannel'] = ( diff_record.get_max_diff_per_channel()) except KeyError: diff --git a/gm/rebaseline_server/static/view.html b/gm/rebaseline_server/static/view.html index 9ce3fae..79335ca 100644 --- a/gm/rebaseline_server/static/view.html +++ b/gm/rebaseline_server/static/view.html @@ -263,7 +263,7 @@ value="weightedDiffMeasure" ng-checked="(sortColumn == 'weightedDiffMeasure')" ng-click="sortResultsBy('weightedDiffMeasure')"> - perceptual difference + difference per pixel
+ title="Weighted difference measure is {{result.weightedDiffMeasure.toFixed(4)}}%. Maximum difference per channel: R={{result.maxDiffPerChannel[0]}}, G={{result.maxDiffPerChannel[1]}}, B={{result.maxDiffPerChannel[2]}}"> - {{result.perceptualDifference.toFixed(4)}}% + {{result.weightedDiffMeasure.toFixed(4)}}% {{result.maxDiffPerChannel}}
View Image