Pnmpsnr User Manual(1) General Commands Manual Pnmpsnr User Manual(1)
NAME
pnmpsnr - compute the difference between two images (the PSNR)
SYNOPSIS
pnmpsnr
[pnmfile1]
[pnmfile2]
[-rgb] [-machine] [-max=n] [-target=n] [-target1=n] [-target2=n] [-tar-
get3=n]
Minimum unique abbreviations of options are acceptable. You may use
double hyphens instead of single hyphen to denote options. You may use
white space in place of the equals sign to separate an option name from
its value.
DESCRIPTION
This program is part of Netpbm(1).
pnmpsnr reads two PBM, PGM, or PPM files, or PAM equivalents, as input
and computes the magnitude of difference between the two images as a
peak signal-to-noise ratio (PSNR) This metric is typically used in image
compression papers to rate the distortion between original and decoded
image.
pnmpsnr either prints these values or compares them to thresholds you
specify.
The PSNR of a given component is the ratio of the maximum mean square
difference of component values that could exist between the two images
(a measure of the information content in an image) to the actual mean
square difference for the two subject images. It is expressed as a
decibel value.
The mean square difference of a component for two images is the mean
square difference of the component value, comparing each pixel with the
pixel in the same position of the other image. For the purposes of this
computation, components are normalized to the scale [0..1].
The maximum mean square difference is identically 1.
So the higher the PSNR, the closer the images are. A luminance PSNR of
20 means the mean square difference of the luminances of the pixels is
100 times less than the maximum possible difference, i.e. 0.01.
Note that the word "peak" is a misnomer; there is no maximum involved;
the metric is a mean. But "peak signal to noise ratio" is for some rea-
son the common term for this measurement.
If the inputs are PBM or PGM, pnmpsnr computes the PSNR of the luminance
only. Otherwise, it computes three separate PSNRs: either the lumi-
nance, and chrominance (Cb and Cr) components of the colors or the red,
green, and blue components.
By default, the program prints the PSNRs to Standard Output in human-
friendly form.
With the -machine option, the program prints the PSNRs, but in machine-
friendly form.
With a -target[x] option, the program just prints 'match' or 'nomatch',
depending on whether the PSNRs exceed targets you specify.
pnmpsnr reports the PSNR either in human-friendly form or in machine-
friendly form (see -machine).
OPTIONS
In addition to the options common to all programs based on libnetpbm
(most notably -quiet, see ]8;;index.html#commonoptions\ Common Options]8;;\ ), pnmpsnr recognizes the fol-
lowing command line options:
-rgb This option causes pnmpsnr to compare the red, green, and blue
components of the color rather than the luminance and chrominance
components. It has no effect on a monotone image.
This option was new in Netpbm 10.71 (June 2015).
-machine
This option causes pnmpsnr to report the PSNRs in machine-
friendly form, so another program can easily use the information.
The output is a single line. It contains one floating point dec-
imal number for each color component, with a single space between
every two. (This means there are either 1 or 3 numbers). For
the YCbCr color space (no -rgb), they are in the order Y, Cb, Cr.
For the RGB color space (-rgb), they are in R, G, B order. For a
monotone image, there is one number.
Where the component does not differ between the images, so the
PSNR is infinite, the number is inf
But note that the number displayed is also modified by the effect
of -max. In particular, with -max, you will never see inf.
This option has no effect when you also specify -target[n].
This option was new in Netpbm 10.74 (March 2016).
-max=n This is meaningful only with -machine.
It specifies the maximum number pnmpsnr will print as a PSNR. If
the PSNR is greater than n, pnmpsnr just prints n. n is a deci-
mal floating point number. An infinite PSNR is considered
greater than any number.
This is mainly useful to deal with infinite PSNRs. It is often
much more convenient to have a program process only numbers than
to make it deal with infinity, and often a very large number has
the same effect on a program as infinity.
Note that the output is logarithmic, which means you will not see
really large but finite numbers. If you specify -max=1000, the
only way you will see 1000 in the output is if the PSNR is really
infinite. Two images with as many pixels as there are electrons
in the universe, differing in only one pixel, and only in the
smallest amount representable in the Netpbm format, have a PSNR
less than 1000.
This option was new in Netpbm 10.74 (March 2016).
-target=n
This option causes pnmpsnr to run in comparison mode - rather
than print the PSNRs, it just tells you whether the PSNRs exceed
n (a floating point number), i.e. whether the compared images are
the same within a given margin of error. If all the computed
PSNRs (luminance for a PBM or PGM; luminance and chrominance or
red, green, and blue for PPM) exceed n, the program prints
'match' to Standard Output. Otherwise, it prints 'nomatch'.
If you also specify any of -target1, -target2, or -target3, and
the images are color, pnmpsnr ignores -target.
This is mainly useful for use in a program. If you're running
pnmpsnr manually, you could just run pnmpsnr without -target and
compare the PSNRs to your targets yourself.
This option was new in Netpbm 10.82 (March 2018).
-target{1,2,3}=n
Like -target, these options cause pnmpsnr to run in comparison
mode. But they provide separate targets for the individual color
component PSNRs. -target1, target-2, and -target3 are for either
the Y, Cb, and Cr components, respectively, or the red, green,
and blue components, respectively, depending upon whether you
specified -rgb.
If you don't specify the corresponding -targetn option for a com-
ponent, pnmpsnr ignores the PSNR of that component in deciding
whether the images match.
If the image is a PBM or PGM, these options have no effect, ex-
cept that it stilll selects comparison mode, so if you don't also
specify -target, and the image is PBM or PGM, the program fails.
Note that the options are defined so that you could code a pnmp-
snr command in a program that works on both color and monotone
images, specifying individual PSNR targets for use on the color
images and the single target for use on the monotone images.
These options were new in Netpbm 10.82 (March 2018).
SEE ALSO
pnm(1)
DOCUMENT SOURCE
This manual page was generated by the Netpbm tool 'makeman' from HTML
source. The master documentation is at
http://netpbm.sourceforge.net/doc/pnmpsnr.html
netpbm documentation 06 January 2018 Pnmpsnr User Manual(1)
Generated by dwww version 1.16 on Tue Dec 16 04:50:21 CET 2025.