# HG changeset patch # User Sean Russell # Date 1340586333 14400 # Sun Jun 24 21:05:33 2012 -0400 # Node ID 7c4e6fdb8b1d3712e339a84c145ece6eff138044 # Parent acbbafbf76e8dcd3319e90a0b50e1d5cd44a7869 Updated readme ---------------- Doc changes diff --git a/README.txt b/README.txt --- a/README.txt +++ b/README.txt @@ -5,6 +5,7 @@ http://pdiff.sourceforge.net/ Go version Copyright (C) 2012 Sean Russell + This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. @@ -14,45 +15,62 @@ PARTICULAR PURPOSE. See the GNU General Public License for more details in the file gpl.txt. +This is a translation of Yangli Hector Yee's C++ perceptual diffing algorithm +for images; you can find the original source here: + + http://pdiff.sourceforge.net/ + +Version 1.0.0 of the Go version is a literal translation, with very little +alteration for Go idioms; one exception is RGBAImage, which was largely +unnecessary due to Go's image library. Another was the removal of the hand-coded +parseargs code in favor of Go's flag library. A third was some re-partitioning +of code for the arguments handling and set-up. + +Some notes about this translation: + +1. There were no tests in the original software, and the first Go version also + has no automated tests. +2. Yangli's code was a pleasure to translate: it was optimized, but + selectively; it was readable; it was clean. +3. I've included an executable analog for Yangli's executable, but a library + can also be built for inclusion in other programs. + Build Instructions -1. Download cross platform make from http://www.cmake.org -2. Download freeimage from https://sourceforge.net/projects/freeimage -3. Edit CMakeLists.txt to tell it where to find your free image build -4. Type cmake . -5. Type make . (or on Windows systems cmake makes a Visual Studio -Project file) -6. To specify the install directory, use make install DESTDIR="/home/me/mydist" + +For the library: + go get hg.germane-software.com/perceptualdiff + +For the executable: + + go get hg.germane-software.com/perceptualdiff/perceptualdiff + +There are no other dependencies. + Usage -perceptualdiff image1.(tif | png) image2.(tif | png) [options] --verbose : Turns on verbose mode --fov deg: field of view, deg, in degrees. Usually between 10.0 to 85.0. -This controls how much of the screen the oberserver is seeing. Front row of -a theatre has a field of view of around 25 degrees. Back row has a field of - view of around 60 degrees. --threshold p : Sets the number of pixels, p, to reject. For example if p is - 100, then the test fails if 100 or more pixels are perceptably different. --gamma g : The gamma to use to convert to RGB linear space. Default is 2.2 --luminance l: The luminance of the display the observer is seeing. Default - is 100 candela per meter squared --colorfactor : How much of color to use, 0.0 to 1.0, 0.0 = ignore color. --downsample : How many powers of two to down sample the image. --output foo.ppm : Saves the difference image to foo.ppm +perceptualdiff [options] image1.(jpg | png) image2.(jpg | png) + -verbose : Turns on verbose mode + -fov deg : field of view, deg, in degrees. Usually between 10.0 to 85.0. + This controls how much of the screen the oberserver is seeing. + Front row of a theatre has a field of view of around 25 degrees. + Back row has a field of view of around 60 degrees. + -threshold p : Sets the number of pixels, p, to reject. For example if p is + 100, then the test fails if 100 or more pixels are perceptably + different. + -gamma g : The gamma to use to convert to RGB linear space. Default is 2.2 + -luminance l: The luminance of the display the observer is seeing. Default + is 100 candela per meter squared + -colorfactor : How much of color to use, 0.0 to 1.0, 0.0 = ignore color. + -downsample : How many powers of two to down sample the image. + -output foo.(jpg|png) : Saves the difference image Credits Hector Yee, project administrator and originator - hectorgon.blogspot.com -Scott Corley, for png file IO code -Tobias Sauerwein, for make install, package_source Cmake configuration Cairo Team for bugfixes -Jim Tilander, Rewrote the IO to use FreeImage. +Sean Russell did the Go translation Version History -1.0 - Initial distribution -1.0.1 - Fixed off by one convolution error and libpng interface to 1.2.8 -1.0.2 - [jt] Converted the loading and saving routines to use FreeImage -1.1 - Added colorfactor and downsample options. Also always output -difference file if requested. Always print out differing pixels even if the test passes. -1.1.1 - Turn off color test in low lighting conditions. +1.0.0 - Initial distribution diff --git a/perceptualdiff/main.go b/perceptualdiff/main.go --- a/perceptualdiff/main.go +++ b/perceptualdiff/main.go @@ -28,7 +28,9 @@ "perceptualdiff" ) -const copyright = `PerceptualDiff version 1.1.1, Copyright (C) 2006 Yangli Hector Yee +const copyright = `PerceptualDiff Go version 1.0.0 +Original Copyright (C) 2006 Yangli Hector Yee +Go version Copyright (C) 2012 Sean E. Russell PerceptualDiff comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions @@ -68,9 +70,6 @@ fmt.Printf("PeceptualDiff \n\n") fmt.Printf("Compares image1 and image2 using a perceptually based image metric\n") flag.PrintDefaults() - fmt.Printf("Note: Input or Output files can also be in the PNG or JPG format ") - fmt.Printf("or any format\n") - fmt.Printf("that FreeImage supports.\n") } flag.Parse()