myrao / libyuv

Automatically exported from code.google.com/p/libyuv
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

SSIM tool #204

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
The compare utility does PSNR, but not SSIM.
Add SSIM support.

SSIM, unlike MSE, PSNR etc, requires a spatially aware image format.
Would also be nice if the tool were available as binary.

Original issue reported on code.google.com by fbarch...@chromium.org on 18 Mar 2013 at 7:26

GoogleCodeExporter commented 9 years ago
https://webrtc-codereview.appspot.com/1216005/

Original comment by fbarch...@chromium.org on 19 Mar 2013 at 7:15

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
r612 adds a 'psnr' tool which supports SSIM, PSNR and MSE.

e.g.
psnr -ssim tulip_vp9.webm.1280x720_30Hz_P420.yuv tulip.1280x720_30Hz_P420.yuv
Frame     SSIM-Y          SSIM-U          SSIM-V          SSIM-All       Frame
Avg:      0.912013        0.944272        0.945908        0.923039        500
Min:      0.889490        0.926664        0.928087        0.902563        125

r613 adds a Makefile in the util/ folder.

Original comment by fbarch...@chromium.org on 21 Mar 2013 at 1:09

GoogleCodeExporter commented 9 years ago
r616 fixes this:
util\psnr_main.cc(21) : warning C4005: '_CRT_SECURE_NO_WARNINGS' : macro 
redefinition

Original comment by fbarch...@chromium.org on 22 Mar 2013 at 6:58

GoogleCodeExporter commented 9 years ago
Future work
1. convert to c - allows msys cross compile.  needs to use malloc instead of new
2. move psnr.cc and ssim.cc into source/ folder, asis.
3. remove compare.cc psnr/ssim functions - move to psnr.cc and ssim.cc
4. add sln for windows

Original comment by fbarch...@chromium.org on 23 Mar 2013 at 9:19

GoogleCodeExporter commented 9 years ago
I've been asked for pre-compiled binaries of PSNR tool.  The plan is to post 
them on 'downloads'.  Likely one per platform, but may contain more than one 
binary for 32 vs 64 or openmp vs single thread, or sse2 vs non-sse2.

The Makefile works for g++, but fails for c++ (clang) on OSX?

make
c++ -msse2 -O3 -fopenmp -o psnr psnr.cc ssim.cc psnr_main.cc
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)

This works
g++ -msse2 -O3 -fopenmp -o psnr psnr.cc ssim.cc psnr_main.cc

Its also unlikely to work for icc, which seems to use -openmp option.

Original comment by fbarch...@chromium.org on 25 Mar 2013 at 7:43

GoogleCodeExporter commented 9 years ago
r621 makes -t option visible only to omp build

Original comment by fbarch...@chromium.org on 26 Mar 2013 at 9:37

GoogleCodeExporter commented 9 years ago
Changes planned for next version of binaries:
-static -m32 for linux, so it will work on more cpus and distros
-minos for osx
omp build only
Provide sample data in another download for testing.

Original comment by fbarch...@google.com on 27 Mar 2013 at 5:38

GoogleCodeExporter commented 9 years ago
r634 posted for windows and linux
https://code.google.com/p/libyuv/downloads/list

Built with:
g++ -msse2 -O3 -static -fopenmp -o psnr psnr.cc ssim.cc psnr_main.cc 
-Wl,--strip-all

-static used to run on most OSs.  tested on lucid and precise.
-omp for best performance
-strip-all produces smaller binary than strip -g
-msse2 for both psnr and ssim optimization

For windows the following static pthread lib is used with g++ 4.6:
ftp://sourceware.org/pub/pthreads-win32

copy c:\pthreads-w32-2-9-1-release\Pre-built.2\lib\x86\libpthreadGC2.a 
c:\MinGW\lib\libpthread.a

Original comment by fbarch...@chromium.org on 3 Apr 2013 at 5:08

GoogleCodeExporter commented 9 years ago
Mac version of r634 posted.  Its built with
g++ -msse2 -O3 -fopenmp -o psnr psnr.cc ssim.cc psnr_main.cc 

Linux version tested on Fedora 13, Ubuntu Lucid and Ubuntu Precise.

Initial tool complete.  Report issues/feature requests for additional changes.

Original comment by fbarch...@chromium.org on 4 Apr 2013 at 7:18

GoogleCodeExporter commented 9 years ago

Original comment by fbarch...@chromium.org on 4 Apr 2013 at 7:19