Color Constancy by Learning to Predict\\Chromaticity from Luminance
Ayan Chakrabarti
Toyota Technological Institute at Chicago
6045 S. Kenwood Ave.
Chicago
IL 60637
ayanc@ttic.edu
Color constancy is the recovery of true surface color from observed color, and requires estimating the chromaticity of scene illumination to correct for the bias it induces. In this paper, we show that the per-pixel color statistics of natural scenes---without any spatial or semantic context---can by themselves be a powerful cue for color constancy. Specifically, we describe an illuminant estimation method that is built around a ``classifier'' for identifying the true chromaticity of a pixel given its luminance (absolute brightness across color channels). During inference, each pixel's observed color restricts its true chromaticity to those values that can be explained by one of a candidate set of illuminants, and applying the classifier over these values yields a distribution over the corresponding illuminants. A global estimate for the scene illuminant is computed through a simple aggregation of these distributions across all pixels. We begin by simply defining the luminance-to-chromaticity classifier by computing empirical histograms over discretized chromaticity and luminance values from a training set of natural images. These histograms reflect a preference for hues corresponding to smooth reflectance functions, and for achromatic colors in brighter pixels. Despite its simplicity, the resulting estimation algorithm outperforms current state-of-the-art color constancy methods. Next, we propose a method to learn the luminance-to-chromaticity classifier ``end-to-end''. Using stochastic gradient descent, we set chromaticity-luminance likelihoods to minimize errors in the final scene illuminant estimates on a training set. This leads to further improvements in accuracy, most significantly in the tail of the error distribution.
hcc.tex
\pdfoutput=1
\documentclass{article}
\usepackage{nips15submit_e,times}
\usepackage[colorlinks=true]{hyperref}
\usepackage{url}
\usepackage{graphicx,amsmath,amssymb}
\usepackage{multirow}
\usepackage[T1]{fontenc}

\title{Color Constancy by Learning to Predict\\Chromaticity from Luminance}

\newcommand{\cc}{$^\circ$}
\newcommand{\diag}{\mbox{diag}}

\author{
Ayan Chakrabarti\\
Toyota Technological Institute at Chicago\\
6045 S. Kenwood Ave., Chicago, IL 60637\\
\texttt{ayanc@ttic.edu}
}

\newcommand{\fix}{\marginpar{FIX}}
\newcommand{\new}{\marginpar{NEW}}

\nipsfinalcopy

\renewcommand{\Re}{\mathbb{R}}

\begin{document}


\maketitle

\begin{abstract}
Color constancy is the recovery of true surface color from observed color, and requires estimating the chromaticity of scene illumination to correct for the bias it induces. In this paper, we show that the per-pixel color statistics of natural scenes---without any spatial or semantic context---can by themselves be a powerful cue for color constancy. Specifically, we describe an illuminant estimation method that is built around a ``classifier'' for identifying the true chromaticity of a pixel given its luminance (absolute brightness across color channels). During inference, each pixel's observed color restricts its true chromaticity to those values that can be explained by one of a candidate set of illuminants, and applying the classifier over these values yields a distribution over the corresponding illuminants. A global estimate for the scene illuminant is computed through a simple aggregation of these distributions across all pixels. We begin by simply defining the luminance-to-chromaticity classifier by computing empirical histograms over discretized chromaticity and luminance values from a training set of natural images. These histograms reflect a preference for hues corresponding to smooth reflectance functions, and for achromatic colors in brighter pixels. Despite its simplicity, the resulting estimation algorithm outperforms current state-of-the-art color constancy methods. Next, we propose a method to learn the luminance-to-chromaticity classifier ``end-to-end''. Using stochastic gradient descent, we set chromaticity-luminance likelihoods to minimize errors in the final scene illuminant estimates on a training set. This leads to further improvements in accuracy, most significantly in the tail of the error distribution.
\end{abstract}

\section{Introduction}

The spectral distribution of light reflected off a surface is a function of an intrinsic material property of the surface---its reflectance---and also of the spectral distribution of the light illuminating the surface. Consequently, the observed color of the same surface under different illuminants in different images will be different. To be able to reliably use color computationally for identifying materials and objects, researchers are interested in deriving an encoding of color from an observed image that is invariant to changing illumination. This task is known as color constancy, and requires resolving the ambiguity between illuminant and surface colors in an observed image. Since both of these quantities are unknown, much of color constancy research is focused on identifying models and statistical properties of natural scenes that are informative for color constancy. While pschophysical experiments have demonstrated that the human visual system is remarkably successful at achieving color constancy~\cite{brainard}, it remains a challenging task computationally.

Early color constancy algorithms were based on relatively simple models for pixel colors. For example, the gray world method~\cite{gw} simply assumed that the average true intensities of different color channels across all pixels in an image would be equal, while the white-patch retinex method~\cite{wpatch} assumed that the  true color of the brightest pixels in an image is white. Most modern color constancy methods, however, are based on more complex reasoning with higher-order image features. Many methods~\cite{gengamut,gedge,SSS} use models for image derivatives instead of individual pixels. Others are based on recognizing and matching image segments to those in a training set to recover true color~\cite{exemplar}. A recent method proposes the use of a multi-layer convolutional neural network (CNN) to regress from image patches to illuminant color. There are also many ``combination-based'' color constancy algorithms, that combine illuminant estimates from a number of simpler ``unitary'' algorithms~\cite{elm,sgcomb,nperccomb,icomb}, sometimes using image features to give higher weight to the outputs of some subset of methods. 

In this paper, we demonstrate that by appropriately modeling and reasoning with the statistics of individual pixel colors, one can computationally recover illuminant color with high accuracy. We consider individual pixels in isolation, where the color constancy task reduces to discriminating between the possible choices of true color for the pixel that are feasible given the observed color and a candidate set of illuminants. Central to our method is a function that gives us the relative likelihoods of these true colors, and therefore a distribution over the corresponding candidate illuminants. Our global estimate for the scene illuminant is then computed by simply aggregating these distributions across all pixels in the image.

We formulate the likelihood function as one that measures the conditional likelihood of true pixel chromaticity given observed luminance, in part to be agnostic to the scalar (i.e., color channel-independent) ambiguity in observed color intensities. Moreover, rather than committing to a parametric form, we quantize the space of possible chromaticity and luminance values, and define the function over this discrete domain. We begin by setting the conditional likelihoods purely empirically, based simply on the histograms of true color values over all pixels in all images across a training set. Even with this purely empirical approach, our estimation algorithm yields estimates with higher accuracy than current state-of-the-art methods. Then, we investigate learning the per-pixel belief function by optimizing an objective based on the accuracy of the final global illuminant estimate. We carry out this optimization using stochastic gradient descent, and using a sub-sampling approach (similar to ``dropout''~\cite{dropout}) to improve generalization beyond the training set. This further improves estimation accuracy, without adding to the computational cost of inference.

\section{Preliminaries}
\label{sec:prelim}

Assuming Lambertian reflection, the spectral distribution of light reflected by a material is a product of the distribution of the incident light and the material's reflectance function. The color intensity vector $\mathbf{v}(n)\in\Re^3$ recorded by a tri-chromatic sensor at each pixel $n$ is then given by
\begin{equation}
  \label{eq:specobs}
  \mathbf{v}(n) = \int \kappa(n,\lambda) \ell(n,\lambda)~s(n)~\mathbf{\Pi}(\lambda)~d\lambda,
\end{equation}
where $\kappa(n,\lambda)$ is the reflectance at $n$, $\ell(n,\lambda)$ is the spectral distribution of the incident illumination, $s(n)$ is a geometry-dependent shading factor, and $\mathbf{\Pi}(\lambda) \in \Re^3$ denotes the spectral sensitivities of the color sensors. Color constancy is typically framed as the task of computing from $\mathbf{v}(n)$ the corresponding color intensities $\mathbf{x}(n) \in \Re^3$ that would have been observed under some canonical illuminant $\ell_{\mbox{\tiny ref}}$ (typically chosen to be $\ell_{\mbox{\tiny ref}}(\lambda)=1$). We will refer to $\mathbf{x}(n)$ as the ``true color'' at $n$.

Since \eqref{eq:specobs} involves a projection of the full incident light spectrum on to the three filters $\mathbf{\Pi}(\lambda)$, it is not generally possible to recover $\mathbf{x}(n)$ from $\mathbf{v}(n)$ even with knowledge of the illuminant $\ell(n,\lambda)$. However, a commonly adopted approximation (shown to be reasonable under certain assumptions~\cite{diag3}) is to relate the true and observed colors $\mathbf{x}(n)$ and $\mathbf{v}(n)$ by a simple per-channel adaptation:
\begin{equation}
  \label{eq:vkries}
\mathbf{v}(n) = \mathbf{m}(n) \circ \mathbf{x}(n),  
\end{equation}
where $\circ$ refers to the element-wise Hadamard product, and $\mathbf{m}(n) \in \Re^3$ depends on the illuminant $\ell(n,\lambda)$ (for $\ell_{\mbox{\tiny ref}}$, $\mathbf{m}=[1,1,1]^T$). With some abuse of terminology, we will refer to $\mathbf{m}(n)$ as the illuminant in the remainder of the paper. Moreover, we will focus on the single-illuminant case in this paper, and assume $\mathbf{m}(n) = \mathbf{m},~ \forall n$ in an image. Our goal during inference will be to estimate this global illuminant $\mathbf{m}$ from the observed image $\mathbf{v}(n)$. The true color image $\mathbf{x}(n)$ can then simply be recovered as $\mathbf{m}^{-1}\circ \mathbf{v}(n)$, where  $\mathbf{m}^{-1}\in\Re^3$ denotes the element-wise inverse of $\mathbf{m}$. 

Note that color constancy algorithms seek to resolve the ambiguity between $\mathbf{m}$ and $\mathbf{x}(n)$ in \eqref{eq:vkries} only up to a channel-independent scalar factor. This is because scalar ambiguities show up in $\mathbf{m}$ between $\ell$ and $\ell_{\mbox{\tiny ref}}$ due to light attenuation, between $\mathbf{x}(n)$ and $\kappa(n)$ due to the shading factor $s(n)$, and in the observed image $\mathbf{v}(n)$ itself due to varying exposure settings. Therefore, the performance metric typically used is the angular error $\cos^{-1}\left(\frac{\mathbf{m}^T\bar{\mathbf{m}}}{\|\mathbf{m}\|_2\|\bar{\mathbf{m}}\|_2}\right)$ between the true and estimated illuminant vectors $\mathbf{m}$ and $\bar{\mathbf{m}}$.


\paragraph{Database} For training and evaluation, we use the database of 568 natural indoor and outdoor images captured under various illuminants by Gehler et al.~\cite{bayes2}. We use the version from Shi and Funt~\cite{shidb} that contains linear images (without gamma correction) generated from the RAW camera data. The database contains images captured with two different cameras (86 images with a Canon 1D, and 482 with a Canon 5D). Each image contains a color checker chart placed in the image, with its position manually labeled. The colors of the gray squares in the chart are taken to be the value of the true illuminant $m$ for each image, which can then be used to correct the image to get true colors at each pixel (of course, only up to scale). The chart is masked out during evaluation. We use k-fold cross-validation over this dataset in our experiments. Each fold contains images from both cameras corresponding to one of k roughly-equal partitions of each camera's image set (ordered by file name/order of capture). Estimates for images in each fold are based on training only with data from the remaining folds. We report results with three- and ten-fold cross-validation. These correspond to average training set sizes of 379 and 511 images respectively.

\section{Color Constancy with Pixel-wise Chromaticity Statistics}

A color vector $\mathbf{x} \in \mathbb{R}^3$ can be characterized in terms of (1) its \emph{luminance}  $\|\mathbf{x}\|_1$, or absolute brightness across color channels; and (2) its \emph{chromaticity}, which is a measure of the relative ratios between intensities in different channels. While there are different ways of encoding chromaticity, we will do so in terms of the unit vector $\hat{\mathbf{x}} = \mathbf{x} / \|\mathbf{x}\|_2$ in the direction of $\mathbf{x}$. Note that since intensities can not be negative, $\hat{\mathbf{x}}$ is restricted to lie on the non-negative eighth of the unit sphere $\mathbb{S}^2_+$. Remember from Sec.~\ref{sec:prelim} that our goal is to resolve the ambiguity between the true colors $\mathbf{x}(n)$ and the illuminant $\mathbf{m}$ only up to scale. In other words, we need only estimate the illuminant chromaticity $\hat{\mathbf{m}}$ and true chromaticities $\hat{\mathbf{x}}(n)$ from the observed image $\mathbf{v}(n)$, which we can relate from \eqref{eq:vkries} as
\begin{equation}
  \label{eq:chobs}
\hat{\mathbf{x}}(n) = \frac{\mathbf{x}(n)}{\|\mathbf{x}(n)\|_2} =  \frac{\hat{\mathbf{m}}^{-1}\circ \mathbf{v}(n)}{\|\hat{\mathbf{m}}^{-1}\circ \mathbf{v}(n)\|_2} \overset{\Delta}{=} g(\mathbf{v}(n),\hat{\mathbf{m}}).
\end{equation}

A key property of natural illuminant chromaticities is that they are known to take a fairly restricted set of values, close to a one-dimensional locus predicted by Planck's radiation law~\cite{planck}. To be able to exploit this, we denote $\mathcal{M} = \{\hat{\mathbf{m}}_i\}_{i=1}^M$ as the set of possible values for illuminant chromaticity $\hat{\mathbf{m}}$, and construct it from a training set. Specifically, we quantize%
\footnote{Quantization is over uniformly sized bins in $\mathbb{S}^2_+$. See supplementary material for details.}
the chromaticity vectors $\{\hat{\mathbf{m}}_t\}_{t=1}^T$ of the illuminants in the training set, and let $\mathcal{M}$ be the set of unique chromaticity values. Additionally, we define a ``prior'' $b_i = \log (n_i/T)$ over this candidate set, based on the number $n_i$ of training illuminants that were quantized to $\hat{\mathbf{m}}_i$.

Given the observed color $\mathbf{v}(n)$ at a single pixel $n$, the ambiguity in $\hat{\mathbf{m}}$ across the illuminant set $\mathcal{M}$ translates to a corresponding ambiguity in the true chromaticity $\hat{\mathbf{x}}(n)$ over the set $\{g(\mathbf{v}(n),\hat{\mathbf{m}}_i)\}_i$. Figure~\ref{fig:hdist}(a) illustrates this ambiguity for a few different observed colors $v$.  We note that while there is significant angular deviation within the set of possible true chromaticity values for any observed color, values in each set lie close to a one dimensional locus in chromaticity space. This suggests that the illuminants in our training set are indeed a good fit to Planck's law\footnote{In fact, the chromaticities appear to lie on two curves, that are slightly separated from each other. This separation is likely due to differences in the sensor responses of the two cameras in the Gehler-Shi dataset.}.

\begin{figure}[!t]
  \centering
  \includegraphics[height=42em]{Figs/DistFig.pdf}
  \caption{Color Constancy with Per-pixel Chromaticity-luminance distributions of natural scenes. (a) Ambiguity in true chromaticity given observed color: each set of points corresponds to the possible true chromaticity values (location in $\mathbb{S}^2_+$, see legend) consistent with the pixel's observed chromaticity (color of the points) and different candidate illuminants $\hat{\mathbf{m}}_i$. (b) Distributions over different values for true chromaticity of a pixel conditioned on its observed luminance, computed as empirical histograms over the training set. Values $y$ are normalized per-image by the median luminance value over all pixels. (c) Corresponding distributions learned with end-to-end training to maximize accuracy of overall illuminant estimation.}% (These plots are from training data excluding one fold when using ten-fold cross-validation).}
  \label{fig:hdist}
\end{figure}

The goal of our work is to investigate the extent to which we can resolve the above ambiguity in true chromaticity on a per-pixel basis, without having to reason about the pixel's spatial neighborhood or semantic context. Our approach is based on computing a likelihood distribution over the possible values of $\hat{\mathbf{x}}(n)$, given the observed luminance $\|\mathbf{v}(n)\|_1$. But as mentioned in Sec.~\ref{sec:prelim}, there is considerable ambiguity in the scale of observed color intensities. We address this partially by applying a simple per-image global normalization to the observed luminance to define $y(n) = \|\mathbf{v}(n)\|_1 / \mbox{median} \{\|\mathbf{v}(n')\|_1\}_{n'}$. This very roughly compensates for variations across images due to exposure settings, illuminant brightness, etc. However, note that since the normalization is global, it does not compensate for variations due to shading.

The central component of our inference method is a function $L[\hat{\mathbf{x}},y]$ that encodes the belief that a pixel with normalized observed luminance $y$ has true chromaticity $\hat{\mathbf{x}}$. This function is defined over a discrete domain by quantizing both chromaticity and luminance values: we clip luminance values $y$ to four (i.e., four times the median luminance of the image) and quantize them into twenty equal sized bins; and for chromaticity $\hat{\mathbf{x}}$, we use a much finger quantization with $2^{14}$ equal-sized bins in $\mathcal{S}^2_+$ (see supplementary material for details). In this section, we adopt a purely empirical approach and define $L[\hat{\mathbf{x}},y]$ as $L[\hat{\mathbf{x}},y] = \log \left(N_{\hat{\mathbf{x}},y} / \sum_{\hat{\mathbf{x}}'}N_{\hat{\mathbf{x}}',y}\right),$ where $N_{\hat{\mathbf{x}},y}$ is the number of pixels across all pixels in a set of images in a training set that have true chromaticity $\hat{\mathbf{x}}$ and observed luminance $y$.

We visualize these empirical versions of $L[\hat{\mathbf{x}},y]$ for a subset of the luminance quantization levels in Fig.~\ref{fig:hdist}(b). We find that in general, desaturated chromaticities with similar intensity values in all color channels are most common. This is consistent with findings of statistical analysis of natural spectra~\cite{hss}, which shows the ``DC'' component (flat across wavelength) to be the one with most variance. We also note that the concentration of the likelihood mass in these chromaticities increasing for higher values of luminance $y$. This phenomenon is also predicted by traditional intuitions in color science: materials are brightest when they reflect most of the incident light, which typically occurs when they have a flat reflectance function with all values of $\kappa(\lambda)$ close to one. Indeed, this is what forms the basis of the white-patch retinex method~\cite{wpatch}. Amongst saturated colors, we find that hues which combine green with either red or blue occur more frequently than primary colors, with pure green and combinations of red and blue being the least common. This is consistent with findings that reflectance functions are usually smooth (PCA on pixel spectra in \cite{hss} revealed a Fourier-like basis). Both saturated green and red-blue combinations would require the reflectance to  have either a sharp peak or crest, respectively, in the middle of the visible spectrum.

We now describe a method that exploits the belief function $L[\hat{\mathbf{x}},y]$ for illuminant estimation. Given the observed color $\mathbf{v}(n)$ at a pixel $n$, we can obtain a distribution $\{L[g(\mathbf{v}(n),\hat{\mathbf{m}}_i),y(n)]\}_i$ over the set of possible true chromaticity values $\{g(\mathbf{v}(n),\hat{\mathbf{m}}_i)\}_i$, which can also be interpreted as a distribution over the corresponding illuminants $\hat{\mathbf{m}}_i$. We then simply aggregate these distributions across all pixels $n$ in the image, and define the global probability of $\hat{\mathbf{m}}_i$ being the scene illuminant $\mathbf{m}$ as $p_i = \exp(l_i)/\left(\sum_{i'}\exp(l_{i'})\right)$, where
\begin{equation}
  \label{eq:agg}
l_i = \frac{\alpha}{N} \sum_n L[g(\mathbf{v}(n),\hat{\mathbf{m}}_i),y(n)] + \beta b_i,
\end{equation}
$N$ is the total number of pixels in the image, and $\alpha$ and $\beta$ are scalar parameters. The final illuminant chromaticity estimate $\bar{\mathbf{m}}$ is then computed as
\begin{equation}
  \label{eq:mbar}
  \bar{\mathbf{m}} = \underset{\mathbf{m}', \|\mathbf{m}'\|_2 = 1}{\arg \min} \mathbb{E}~[\cos^{-1}(\mathbf{m}^T\mathbf{m}')] \approx \underset{\mathbf{m}', \|\mathbf{m}'\|_2 = 1}{\arg \max} \mathbb{E}[\mathbf{m}^T\mathbf{m}'] =\frac{\sum_i p_i \mathbf{\hat{m}}_i}{\|\sum_i p_i \mathbf{\hat{m}}_i\|_2}.
\end{equation}
Note that \eqref{eq:agg} also incorporates the prior $b_i$ over illuminants. We set the parameters $\alpha$ and $\beta$ using a grid search, to values that minimize mean illuminant estimation error over the training set. The primary computational cost of inference is in computing the values of $\{l_i\}$. We pre-compute values of $g(\hat{\mathbf{x}},\hat{\mathbf{m}})$ using \eqref{eq:chobs} over the discrete domain of quantized chromaticity values for $\hat{\mathbf{x}}$ and the candidate illuminant set $\mathcal{M}$ for $\hat{\mathbf{m}}$. Therefore, computing each $l_i$ essentially only requires the addition of $N$ numbers from a look-up table. We need to do this for all $M=|\mathcal{M}|$ illuminants, where summations for different illuminants can be carried out in parallel. Our implementation takes roughly 0.3 seconds for a 9 mega-pixel image, on a modern Intel 3.3GHz CPU with 6 cores, and is available at \url{http://www.ttic.edu/chakrabarti/chromcc/}.

This empirical version of our approach bears some similarity to the Bayesian method of \cite{bayes2} that is based on  priors for illuminants, and for the likelihood of different true reflectance values being present in a scene. However, the key difference is our modeling of true chromaticity \emph{conditioned} on luminance that explicitly makes estimation agnostic to the absolute scale of intensity values. We also reason with all pixels, rather than the set of unique colors in the image.


\paragraph{Experimental Results.} Table \ref{tab:etab} compares the performance of illuminant estimation with our method (see rows labeled ``Empirical'') to the current state-of-the-art, using different quantiles of angular error across the Gehler-Shi database~\cite{bayes2,shidb}. Results for other methods are from the survey by Li et al.~\cite{survey}. (See the supplementary material for comparisons to some other recent methods).% that were evaluated with a different ground truth). %For our method, we show results with both three- and ten-fold cross-validation. Results for the exemplar-based~\cite{exemplar} and deep-CNN~\cite{deepcc} methods are using illuminant estimates made available by their authors, and were computed with respect to images and a ground-truth that did not account for a black-level offset correction in the images from the Canon 5D camera. Since source code for these methods is not available, we apply an offset correction to the provided illuminant estimates before computing errors with respect to the true ground truth. This correction step, as well as alternate comparisons, are described in the supplementary material.

%Table \ref{tab:etab} compares the performance of illuminant estimation with our method (see rows labeled ``Empirical'') to the current state-of-the-art, using different quantiles of angular error across the Gehler-Shi database~\cite{bayes2,shidb}. Results for most other methods are from the survey by Li et al.~\cite{survey}. For all methods that required training, three-fold cross validation was used in \cite{survey}. For our method, we show results with both three- and ten-fold cross-validation. Results for the exemplar-based~\cite{exemplar} and deep-CNN~\cite{deepcc} methods are using illuminant estimates made available by their authors, and were computed with respect to images and a ground-truth that did not account for a black-level offset correction in the images from the Canon 5D camera. Since source code for these methods is not available, we apply an offset correction to the provided illuminant estimates before computing errors with respect to the true ground truth. This correction step, as well as alternate comparisons, are described in the supplementary material.

We show results with both three- and ten-fold cross-validation. We find that our errors with three-fold cross-validation have lower mean, median, and tri-mean values than those of the best performing state-of-the-art method from \cite{elm}, which combines illuminant estimates from twelve different ``unitary'' color-constancy method (many of which are also listed in Table~\ref{tab:etab}) using support-vector regression. The improvement in error is larger with respect to the other combination methods~\cite{elm,sgcomb,nperccomb,icomb}, as well as those based %on semantic reasoning~\cite{exemplar,deepcc}, and% 
the statistics of image derivatives~\cite{gengamut,gedge,SSS}. Moreover, since our method has more parameters than most previous algorithms ($L[\hat{\mathbf{x}},y]$ has $2^{14}\times 20\approx 300$k entries), it is likely to benefit from more training data. We find this to indeed be the case, and observe a considerable decrease in error quantiles when we switch to ten-fold cross-validation.

Figure.~\ref{fig:efig} shows estimation results with our method for a few sample images. For each image, we show the input image (indicating the ground truth color chart being masked out) and the output image with colors corrected by the global illuminant estimate. To visualize the quality of contributions from individual pixels, we also show a map of angular errors for illuminant estimates from individual pixels. These estimates are based on values of $l_i$ computed by restricting the summation in \eqref{eq:agg} to individual pixels. We find that even these pixel-wise estimates are fairly accurate for a lot of pixels, even when it's true color is saturated (see cart in first row). Also, to evaluate the weight of these per-pixel distributions to the global $l_i$, we show a map of their variance on a per-pixel basis. As expected from Fig.~\ref{fig:hdist}(b), we note higher variances in relatively brighter pixels. The image in the last row represents one of the poorest estimates across the entire dataset (higher than $90\%-$ile). Note that much of the image is in shadow, and  contain only a few distinct (and likely atypical) materials.

\begin{table}[!t]
\renewcommand{\arraystretch}{1.2}
\centering
\caption{Quantiles of Angular Error for Different Methods on the Gehler-Shi Database~\cite{bayes2,shidb}}~\\
\label{tab:etab}
\begin{tabular}{|r||c|c|c|c|c|c|}
\hline
Method & Mean & Median & Tri-mean &  25\%-ile & 75\%-ile & 90\%-ile\\\hline\hline

Bayesian~\cite{bayes2}             &6.74\cc&5.14\cc&5.54\cc&2.42\cc&9.47\cc&14.71\cc\\\hline
Gamut Mapping~\cite{forsyth1}        &6.00\cc&3.98\cc&4.52\cc&1.71\cc&8.42\cc&14.74\cc\\\hline
Deriv.~Gamut Mapping~\cite{gengamut}   &5.96\cc&3.83\cc&4.32\cc&1.68\cc&7.95\cc&14.72\cc\\\hline
Gray World~\cite{gw}           &4.77\cc&3.63\cc&3.92\cc&1.81\cc&6.63\cc&10.59\cc\\\hline
Gray Edge$^{(1,1,6)}$~\cite{gedge}  &4.19\cc&3.28\cc&3.54\cc&1.87\cc&5.72\cc&8.60\cc\\\hline
SV-Regression~\cite{svru}        &4.14\cc&3.23\cc&3.35\cc&1.68\cc&5.27\cc&8.87\cc\\\hline
Spatio-Spectral~\cite{SSS}      &3.99\cc&3.24\cc&3.45\cc&2.38\cc&4.97\cc&7.50\cc\\\hline
Scene Geom. Comb.~\cite{sgcomb}    &4.56\cc&3.15\cc&3.46\cc&1.41\cc&6.12\cc&10.39\cc\\\hline
Nearest-30\% Comb.~\cite{nperccomb}   &4.26\cc&2.95\cc&3.19\cc&1.49\cc&5.39\cc&9.67\cc\\\hline
Classifier-based Comb.~\cite{icomb} &3.83\cc&2.75\cc&2.93\cc&1.34\cc&4.89\cc&8.19\cc\\\hline
Neural Comb. (ELM)~\cite{elm}   &3.43\cc&2.37\cc&2.62\cc&1.21\cc&4.53\cc&6.97\cc\\\hline
SVR-based Comb.~\cite{elm}      &2.98\cc&1.97\cc&2.35\cc&1.13\cc&4.33\cc&6.37\cc\\\hline
\multicolumn{7}{l}{}\vspace{-0.75em}\\
\multicolumn{7}{l}{\bf Proposed}\\\hline
(3-Fold)\hfill Empirical& 2.89\cc&1.89\cc&2.15\cc&1.15\cc&3.68\cc&6.24\cc\\
End-to-end Trained&2.56\cc&1.67\cc&1.89\cc&0.91\cc&3.30\cc&5.56\cc\\\hline
(10-Fold)\hfill~~~~~Empirical&2.55\cc&1.58\cc&1.83\cc&0.85\cc&3.30\cc&5.74\cc\\
End-to-end Trained&2.20\cc&1.37\cc&1.53\cc&0.69\cc&2.68\cc&4.89\cc\\\hline
\end{tabular}
%~\\~
%{\footnotesize *Errors after correcting estimates from \cite{oldsurvey} for black level offset (see text and supplementary material).\\Data for all other methods is from \cite{survey}.\hspace{24em}~}
\end{table}

\begin{figure}[!t]
\centering
\newcommand{\sz}{\footnotesize}

\begin{tabular}{ccccc}
&~\hspace{-5em}~&\sz ~~~Global Estimate&\sz ~~~~~Per-Pixel Estimate Error&\sz Belief Variance\\\hline\vspace{-0.5em}\\


%%%%
\includegraphics[height=5em]{Figs/185_a.jpg}\hspace{-1em}~&
\rotatebox{90}{\sz \bf ~~Empirical}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/185_c.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/185_g.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/185_e.jpg}\vspace{-0.25em}\\

\sz ~~~~~~Input+Mask&&~~~~~\sz Error = 0.56\cc\\

\includegraphics[height=5em]{Figs/185_b.jpg}\hspace{-1em}~&
\rotatebox{90}{\sz \bf ~End-to-end}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/185_d.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/185_h.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/185_f.jpg}\vspace{-0.25em}\\

\sz ~~~~~~Ground Truth&&~~~~~\sz Error = 0.24\cc\\\hline\vspace{-0.5em}\\
%%%%

%%%%
\includegraphics[height=5em]{Figs/552_a.jpg}\hspace{-1em}~&
\rotatebox{90}{\sz \bf ~~Empirical}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/552_c.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/552_g.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/552_e.jpg}\vspace{-0.25em}\\

\sz ~~~~~~Input+Mask&&~~~~~\sz Error = 4.32\cc\\

\includegraphics[height=5em]{Figs/552_b.jpg}\hspace{-1em}~&
\rotatebox{90}{\sz \bf ~End-to-end}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/552_d.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/552_h.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/552_f.jpg}\vspace{-0.25em}\\

\sz ~~~~~~Ground Truth&&~~~~~\sz Error = 3.15\cc\\\hline\vspace{-0.5em}\\
%%%%

%%%%
\includegraphics[height=5em]{Figs/397_a.jpg}\hspace{-1em}~&
\rotatebox{90}{\sz \bf ~~Empirical}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/397_c.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/397_g.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/397_e.jpg}\vspace{-0.25em}\\

\sz ~~~~~~Input+Mask&&~~~~~\sz Error = 16.22\cc\\

\includegraphics[height=5em]{Figs/397_b.jpg}\hspace{-1em}~&
\rotatebox{90}{\sz \bf ~~End-to-end}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/397_d.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/397_h.jpg}\hspace{-1em}~&
\includegraphics[height=5em]{Figs/397_f.jpg}\vspace{-0.25em}\\

\sz ~~~~~~Ground Truth&&~~~~~\sz Error = 10.31\cc\\\hline\vspace{-0.5em}\\
%%%%
\end{tabular}\\
~\hfill\includegraphics[height=1.5em]{Figs/cb2.pdf}

\caption{Estimation Results on Sample Images. Along with output images corrected with the global illuminant estimate from our methods, we also visualize illuminant information extracted at a local level. We show a map of the angular error of pixel-wise illuminant estimates (i.e., computed with $l_i$ based on distributions from only a single pixel). We also show a map of the variance Var($\{l_i\}_i$) of these beliefs, to gauge the weight of their contributions to the global illuminant estimate.}
\label{fig:efig}
\end{figure}

\section{Learning $L[\hat{\mathbf{x}},y]$ End-to-end }

While the empirical approach in the previous section would be optimal if pixel chromaticities in a typical image were infact i.i.d., that is clearly not the case. Therefore, in this section we propose an alternate approach method to setting the beliefs in $L[\hat{\mathbf{x}},y]$, that optimizes for the accuracy of the final global illuminant estimate. However, unlike previous color constancy methods that explicitly model statistical co-dependencies between pixels---for example, by modeling spatial derivatives~\cite{gengamut,gedge,SSS}, or learning functions on whole-image histograms~\cite{svru}---we retain the overall parametric ``form'' by which we compute the illuminant in \eqref{eq:agg}. Therefore, even though $L[\hat{\mathbf{x}},y]$ itself is learned through knowledge of co-occurence of chromaticities in natural images, estimation of the illuminant during inference is still achieved through a simple aggregation of per-pixel distributions.

Specifically, we set the entries of $L[\hat{\mathbf{x}},y]$ to minimize a cost function $C$ over a set of training images:
\begin{equation}
  \label{eq:dcost}
  C(L) = \sum_{t=1}^T C^t(L), \qquad C^t = \sum_i \cos^{-1}(\hat{\mathbf{m}}_i^T\hat{\mathbf{m}}^t)~p^t_i,
\end{equation}
where $\hat{\mathbf{m}}^t$ is the true illuminant chromaticity of the $t^{th}$ training image, and $p^t_i$ is computed from the observed colors $\mathbf{v}^t(n)$ using \eqref{eq:agg}. We augment the training data available to us by ``re-lighting'' each image with different illuminants from the training set. We use the original image set and six re-lit copies for training, and use a seventh copy for validation. 

We use stochastic gradient descent to minimize \eqref{eq:dcost}. We initialize $L$ to empirical values as described in the previous section (for convenience, we multiply the empirical values by $\alpha$, and then set $\alpha=1$ for computing $l_i$), and then consider individual images from the training set at each iteration. We make multiple passes through the training set, and at each iteration, we randomly sub-sample the pixels from each training image. Specifically, we only retain $1/128$ of the total pixels in the image by randomly sub-sampling $16\times 16$ patches at a time. This approach, which can be interpreted as being similar to ``dropout''~\cite{dropout}, prevents over-fitting and improves generalization.

Derivatives of the cost function $C^t$ with respect to the current values of beliefs $L[\hat{\mathbf{x}},y]$ are given by
\begin{align}
  \frac{\partial C^t}{\partial L[\hat{\mathbf{x}},y]} &= \frac{1}{N}\sum_i \left(\sum_n \delta\left(g(\mathbf{v}^t(n),\hat{\mathbf{m}}_i) = \hat{\mathbf{x}}\right)\delta\left(y^t(n) = y\right)\right) \times \frac{\partial C^t}{\partial l^t_i},\\
\mbox{where~~}\frac{\partial C^t}{\partial l^t_i} &= p_i^t\left(\cos^{-1}(\hat{\mathbf{m}}_i^T\hat{\mathbf{m}}^t) - C^t\right).
\end{align}
We use momentum to update the values of $L[\hat{\mathbf{x}},y]$ at each iteration based on these derivative as
\begin{equation}
  \label{eq:lupd}
  L[\hat{\mathbf{x}},y] = L[\hat{\mathbf{x}},y] - L^\nabla[\hat{\mathbf{x}},y],\quad L^\nabla[\hat{\mathbf{x}},y] = r\frac{\partial C^t}{\partial L[\hat{\mathbf{x}},y]} + \mu L^\nabla_*[\hat{\mathbf{x}},y],
\end{equation}
where $L^\nabla_*[\hat{\mathbf{x}},y]$ is the previous update value,  $r$ is the learning rate, and $\mu$ is the momentum factor. In our experiments, we set $\mu=0.9$, run stochastic gradient descent for 20 epochs with $r = 100$, and another 10 epochs with $r = 10$. We retain the values of $L$ from each epoch, and our final output is the version that yields the lowest mean illuminant estimation error on the validation set. 

We show the belief values learned in this manner in Fig.~\ref{fig:hdist}(c). Notice that although they retain the overall biases towards desaturated colors and combined green-red and green-blue hues, they are less ``smooth'' than their empirical counterparts in Fig.~\ref{fig:hdist}(b)---in many instances, there are sharp changes in the values $L[\hat{\mathbf{x}},y]$ for small changes in chromaticity. While harder to interpret, we hypothesize that these variations result from shifting beliefs of specific $(\hat{\mathbf{x}},y)$ pairs to their neighbors, when they correspond to incorrect choices within the ambiguous set of specific observed colors.

\paragraph{Experimental Results.} We also report errors when using these end-to-end trained versions of the belief function $L$ in Table~\ref{tab:etab}, and find that they lead to an appreciable reduction in error in comparison to their empirical counterparts. Indeed, the errors with end-to-end training using three-fold cross-validation begin to approach those of the empirical version with ten-fold cross-validation, which has access to much more training data. Also note that the most significant improvements (for both three- and ten-fold cross-validation) are in ``outlier'' performance, i.e., in the $75$ and $90\%$-ile error values. Color constancy methods perform worst on images that are dominated by a small number of materials with ambiguous chromaticity, and our results indicate that end-to-end training increases the reliability of our estimation method in these cases.

We also include results for the end-to-end case for the example images in Figure.~\ref{fig:efig}. For all three images, there is an improvement in the global estimation error. More interestingly, we see that the per-pixel error and variance maps now have more high-frequency variation, since $L$ now reacts more sharply to slight chromaticity changes from pixel to pixel. Moreover, we see that a larger fraction of pixels generate fairly accurate estimates by themselves (blue shirt in row 2). There is also a higher disparity in belief variance, including within regions that visually look homogeneous in the input, indicating that the global estimate is now more heavily influenced by a smaller fraction of pixels.

\section{Conclusion and Future Work}

In this paper, we introduced a new color constancy method that is based on a conditional likelihood function for the true chromaticity of a pixel, given its luminance. We proposed two approaches to learning this function. The first was based purely on empirical pixel statistics, while the second was based on maximizing accuracy of the final illuminant estimate. Both versions were found to outperform state-of-the-art color constancy methods, including those that employed more complex features and semantic reasoning.  While we assumed a single global illuminant in this paper, the underlying per-pixel reasoning can likely be extended to the multiple-illuminant case, especially since, as we saw in Fig.~\ref{fig:efig}, our method was often able to extract reasonable illuminant estimates from individual pixels. Another useful direction for future research is to investigate the benefits of using likelihood functions that are conditioned on \emph{lightness}---estimated using an intrinsic image decomposition method---instead of normalized luminance. This would factor out the spatially-varying scalar ambiguity caused by shading, which could lead to more informative distributions.% A reference implementation of our method is available at \url{http://www.ttic.edu/chakrabarti/chromcc/}.

\subsubsection*{Acknowledgments}
We thank the authors of \cite{survey} for providing estimation results of other methods for comparison. The author was supported by a gift from Adobe.

\subsubsection*{References}
\renewcommand{\section}[2]{}
{\small
\input{hcc.bbl}
}

\newpage
\pagenumbering{roman}

\paragraph{Supplementary Material}% Color Constancy by Learning to Predict Chromaticity from Luminance\\


\subsection*{A: Quantizing the space of valid chromaticity values}

We adopt a standard approach to uniformly quantize unit vectors. Consider a chromaticity unit vector $\hat{\mathbf{x}} = [\hat{\mathbf{x}}_R, \hat{\mathbf{x}}_G, \hat{\mathbf{x}}_B]^T$. We parametrize this vector in terms of $u = \hat{\mathbf{x}}_G$, and $\theta = \tan^{-1}(\hat{\mathbf{x}}_B / \hat{\mathbf{x}}_R)$. Since the elements of $\hat{\mathbf{x}}$ are constrained to be positive, it follows that $u \in [0,1]$ and $\theta \in [0,\pi/2]$. We uniformly quantize $u$ and $\theta$ in their respective domains, using $64$ bins for each when quantizing illuminant chromaticities to construct $\mathcal{M}$, and $128$ bins for true pixel chromaticities to define $L[\hat{\mathbf{x}},y]$.

\subsection*{B: Black-level offset issues with results of Exemplar-based~\cite{exemplar} and deep-CNN methods~\cite{deepcc}}

In this section, we compare our method to two recent semantic reasoning-based methods---exemplar-based~\cite{exemplar} and deep-CNN~\cite{deepcc}. While the illuminant estimates computed by these methods on the Gehler-Shi database were made available by their authors, unfortunately, they are based on training and testing with older incorrect versions of the ground-truth and intensity data for images from one of the cameras.

Specifically, the intensities in the image files from the Canon 5D camera in the Gehler-Shi dataset includes a ``black-level'' offset of 129, that needs to be subtracted from the intensities of all pixels in all color channels. This offset affects both the observed image data, as well as the ground truth computed from the color checker chart.  While this was eventually clarified by the authors of \cite{shidb} (and the ground-truth made available by them reflects this correction), there remain older versions of the ground truth without this correction, and the estimated illuminants for \cite{exemplar} and \cite{deepcc} made available are with respect to these old versions.

We attempt to compare the performance of our method with that of \cite{exemplar,deepcc} in two ways. First, we generate corrected estimates $\bar{\mathbf{m}}^*$ from the illuminant chromaticities $\bar{\mathbf{m}}$ estimated by these methods, by ``subtracting'' the effect of the black level offset. This is done based on the true ``un-normalized'' ground truth illuminants $m$ (i.e., the color of the gray squares in the color chart) as:
\begin{equation}
  \label{eq:cor1}
\bar{\mathbf{m}}^- = \frac{\bar{\mathbf{m}}}{|\bar{\mathbf{m}}|_1}\times (|\mathbf{m}|_1 + 129\times 3) - [129,129,129]^T.  
\end{equation}
Essentially, we rendered the color of the  gray square by multiplying the luminance of non-corrected ground-truth with the estimated illuminant $\bar{\mathbf{m}}$, and then subtracted the black level offset. We show the errors of these corrected illuminant estimates with respect to the actual ground truth in Table \ref{tab:etab2a}, and also copy the results of our method from Table \ref{tab:etab}.

Next, we do the reverse. We ``add'' the offset back to the  illuminant estimates from our method:
\begin{equation}
  \label{eq:cor2}
  \bar{\mathbf{m}}^+ = \frac{\bar{\mathbf{m}}}{|\bar{\mathbf{m}}|_1}\times |\mathbf{m}|_1 + [129,129,129]^T,
\end{equation}
and compare these to the non-corrected ground truth with respect to which the results of \cite{exemplar} and \cite{deepcc} are reported.
Table \ref{tab:etab2} provides this comparison.

We find that the proposed method outperforms \cite{exemplar} and \cite{deepcc} in both comparisons. However, the quantiles reported in both Table \ref{tab:etab2a} and Table \ref{tab:etab2} for \cite{exemplar,deepcc} should be interpreted only as a conservative estimate of their performance. While the corrections in \eqref{eq:cor1},\eqref{eq:cor2} allowed us to report errors for these methods and ours with respect to a common ground truth, it does \emph{not} correct for the fact that estimates for \cite{exemplar,deepcc} were computed on offset data. In particular, the presence of this offset means that the linear relationship \eqref{eq:vkries} between observed colors and the scene illuminant no longer holds.

\clearpage
\begin{table}[!t]
\renewcommand{\arraystretch}{1.2}
\centering
\caption{Comparison with respect to actual ground-truth, with correction \eqref{eq:cor1} applied to \cite{exemplar,deepcc}.}~\\
\label{tab:etab2a}
\begin{tabular}{|r||c|c|c|c|c|c|}
\hline
Method & Mean & Median & Tri-mean &  25\%-ile & 75\%-ile & 90\%-ile\\\hline\hline
\hfill Exemplar-Based~\cite{exemplar} &3.66\cc&2.91\cc&3.04\cc&1.52\cc&4.81\cc&7.22\cc\\\hline
\hfill Deep-CNN~\cite{deepcc}           &3.45\cc&2.45\cc&2.65\cc&1.40\cc&4.29\cc&7.23\cc\\\hline
\multicolumn{7}{l}{}\vspace{-0.75em}\\
\multicolumn{7}{l}{\bf Proposed}\\\hline
(3-Fold)\hfill Empirical& 2.89\cc&1.89\cc&2.15\cc&1.15\cc&3.68\cc&6.24\cc\\
End-to-end Trained&2.56\cc&1.67\cc&1.89\cc&0.91\cc&3.30\cc&5.56\cc\\\hline
(10-Fold)\hfill~~~~~Empirical&2.55\cc&1.58\cc&1.83\cc&0.85\cc&3.30\cc&5.74\cc\\
End-to-end Trained&2.20\cc&1.37\cc&1.53\cc&0.69\cc&2.68\cc&4.89\cc\\\hline
\end{tabular}
\end{table}
\begin{table}[!t]
\renewcommand{\arraystretch}{1.2}
\centering
\caption{Comparison with respect to non-corrected ground-truth used in \cite{exemplar,deepcc}, with correction \eqref{eq:cor2} applied to our estimates.}~\\
\label{tab:etab2}
\begin{tabular}{|r||c|c|c|c|c|c|}
\hline
Method & Mean & Median & Tri-mean &  25\%-ile & 75\%-ile & 90\%-ile\\\hline\hline

Exemplar-Based~\cite{exemplar} &2.89\cc&2.27\cc&2.42\cc&1.29\cc&3.84\cc&5.68\cc\\\hline
Deep-CNN~\cite{deepcc}           &2.63\cc&1.98\cc&2.13\cc&1.16\cc&3.41\cc&5.46\cc\\\hline
\multicolumn{7}{l}{}\vspace{-0.75em}\\
\multicolumn{7}{l}{\bf Proposed}\\\hline
(3-Fold)\hfill Empirical& 2.46\cc&1.55\cc&1.75\cc&0.89\cc&3.04\cc&5.05\cc\\
End-to-end Trained&2.21\cc&1.39\cc&1.54\cc&0.71\cc&2.65\cc&4.79\cc\\\hline
(10-Fold)\hfill~~~~~Empirical&2.18\cc&1.23\cc&1.46\cc&0.65\cc&2.73\cc&4.63\cc\\
End-to-end Trained&1.91\cc&1.11\cc&1.24\cc&0.54\cc&2.21\cc&4.08\cc\\\hline
\end{tabular}
\end{table}
\vfill~
\end{document}

hcc.bbl
\begin{thebibliography}{10}

\bibitem{brainard}
D.H. Brainard and A~Radonjic.
\newblock Color constancy.
\newblock {\em {In The new visual neurosciences}}, 2014.

\bibitem{gw}
G.~Buchsbaum.
\newblock {A spatial processor model for object colour perception}.
\newblock {\em J. Franklin Inst}, 1980.

\bibitem{wpatch}
E.H. Land.
\newblock {The retinex theory of color vision}.
\newblock {\em Scientific American}, 1971.

\bibitem{gengamut}
A.~Gijsenij, T.~Gevers, and J.~van~de Weijer.
\newblock {Generalized gamut mapping using image derivative structures for
  color constancy}.
\newblock {\em IJCV}, 2010.

\bibitem{gedge}
J.~van~de Weijer, T.~Gevers, and A.~Gijsenij.
\newblock {Edge-Based Color Constancy}.
\newblock {\em IEEE Trans. Image Proc.}, 2007.

\bibitem{SSS}
A.~Chakrabarti, K.~Hirakawa, and T.~Zickler.
\newblock {Color Constancy with Spatio-spectral Statistics}.
\newblock {\em PAMI}, 2012.

\bibitem{exemplar}
H.~R.~V. Joze and M.~S. Drew.
\newblock Exemplar-based color constancy and multiple illumination.
\newblock {\em PAMI}, 2014.

\bibitem{elm}
B.~Li, W.~Xiong, and D.~Xu.
\newblock {A supervised combination strategy for illumination chromaticity
  estimation}.
\newblock {\em ACM Trans.~Appl.~Percept.}, 2010.

\bibitem{sgcomb}
R.~Lu, A.~Gijsenij, T.~Gevers, V.~Nedovic, and D.~Xu.
\newblock {Color constancy using 3D scene geometry}.
\newblock In {\em ICCV}, 2009.

\bibitem{nperccomb}
S.~Bianco, F.~Gasparini, and R.~Schettini.
\newblock Consensus-based framework for illuminant chromaticity estimation.
\newblock {\em J.~Electron.~Imag.}, 2008.

\bibitem{icomb}
S.~Bianco, G.~Ciocca, C.~Cusano, and R.~Schettini.
\newblock Automatic color constancy algorithm selection and combination.
\newblock {\em Pattern recognition}, 2010.

\bibitem{dropout}
N.~Srivastava, G.~Hinton, A.~Krizhevsky, I.~Sutskever, and R.~Salakhutdinov.
\newblock Dropout: A simple way to prevent neural networks from overfitting.
\newblock {\em JMLR}, 2014.

\bibitem{diag3}
H.~Chong, S.~Gortler, and T.~Zickler.
\newblock The von {K}ries hypothesis and a basis for color constancy.
\newblock In {\em Proc. ICCV}, 2007.

\bibitem{bayes2}
P.V. Gehler, C.~Rother, A.~Blake, T.~Minka, and T.~Sharp.
\newblock {Bayesian Color Constancy Revisited}.
\newblock In {\em CVPR}, 2008.

\bibitem{shidb}
L.~Shi and B.~Funt.
\newblock Re-processed version of the gehler color constancy dataset of 568
  images.
\newblock Accessed from \url{http://www.cs.sfu.ca/~colour/data/}.

\bibitem{planck}
D.B. Judd, D.L. MacAdam, G.~Wyszecki, H.W. Budde, H.R. Condit, S.T. Henderson,
  and J.L. Simonds.
\newblock Spectral distribution of typical daylight as a function of correlated
  color temperature.
\newblock {\em JOSA}, 1964.

\bibitem{hss}
A.~Chakrabarti and T.~Zickler.
\newblock {Statistics of Real-World Hyperspectral Images}.
\newblock In {\em Proc. CVPR}, 2011.

\bibitem{survey}
B.~Li, W.~Xiong, W.~Hu, and B.~Funt.
\newblock Evaluating combinational illumination estimation methods on
  real-world images.
\newblock {\em IEEE Trans.~Imag.~Proc.}, 2014.
\newblock Data at \url{http://www.escience.cn/people/BingLi/Data_TIP14.html}.

\bibitem{deepcc}
S.~Bianco, C.~Cusano, and R.~Schettini.
\newblock Color constancy using cnns.
\newblock {\em arXiv:1504.04548[cs.CV]}, 2015.

\bibitem{forsyth1}
D.~Forsyth.
\newblock A novel algorithm for color constancy.
\newblock {\em IJCV}, 1990.

\bibitem{svru}
W.~Xiong and B.~Funt.
\newblock {Estimating illumination chromaticity via support vector regression}.
\newblock {\em J.~Imag.~Sci.~Technol.}, 2006.

\bibitem{oldsurvey}
A.~Gijsenij, T.~Gevers, and J.~van~de Weijer.
\newblock Computational color constancy: Survey and experiments.
\newblock {\em IEEE Trans. Image Proc.}, 2011.
\newblock Data at \url{http://www.colorconstancy.com/}.

\end{thebibliography}
