Revert of Add the perceptual difference metric to the rebaseline server (https:/...
authorcommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 11 Feb 2014 13:30:33 +0000 (13:30 +0000)
committercommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 11 Feb 2014 13:30:33 +0000 (13:30 +0000)
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

gm/rebaseline_server/imagediffdb.py
gm/rebaseline_server/imagediffdb_test.py
gm/rebaseline_server/results.py
gm/rebaseline_server/static/view.html

index d168c88..936301e 100644 (file)
@@ -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)."""
index b1d534a..558a816 100755 (executable)
@@ -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():
index 3b57bc1..fff0a94 100755 (executable)
@@ -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:
index 9ce3fae..79335ca 100644 (file)
                    value="weightedDiffMeasure"
                    ng-checked="(sortColumn == 'weightedDiffMeasure')"
                    ng-click="sortResultsBy('weightedDiffMeasure')">
-            perceptual difference
+            difference per pixel
             <br>
             <input type="range" ng-model="pixelDiffBgColorBrightness"
                    ng-init="pixelDiffBgColorBrightness=64; pixelDiffBgColor=brightnessStringToHexColor(pixelDiffBgColorBrightness)"
           <!-- diffs: per-channel RGB deltas -->
           <td valign="bottom" width="{{imageSize}}">
             <div ng-hide="result.expectedHashDigest == result.actualHashDigest"
-                 title="Perceptual difference measure is {{result.perceptualDifference.toFixed(4)}}%.  Maximum difference per channel: R={{result.maxDiffPerChannel[0]}}, G={{result.maxDiffPerChannel[1]}}, B={{result.maxDiffPerChannel[2]}}">
+                 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}}
               <br/>
               <a href="/static/generated-images/diffs/{{result.expectedHashDigest}}-vs-{{result.actualHashDigest}}.png" target="_blank">View Image</a><br/>