<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #888
PrimaryMid: #000
PrimaryMid1: #339
PrimaryDark: #01b
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
!Color Constancy Methods
;~Max-RGB or ~White-Patch
:The foundational colour constancy method, the so-called ~White-Patch or ~Max-RGB method, estimates the light source colour from the maximum response of the different colour channels. 
; Gray World
:Another well-known colour constancy method is based on the ~Grey-World hypothesis, which assumes that the average reflectance in the scene is achromatic.
; Gray Edge
:~Grey-Edge is a recent version of the ~Grey-World hypothesis that says: the average of the reflectance differences in a scene is achromatic.
; Gamut Mapping
:The Gamut Mapping algorithm, a more complex and more accurate algorithm,  is based on the assumption that in real-world images, for a given illuminant one observes only a limited number of colours. Several extensions have been proposed.
; Color by Correlation
:Color by Correlation is discrete implementation of gamut maping method, where canonical gamut is replaced with a correlation matrix. 
; Bayesian
:The variability of reflectance of illuminant is modeled as independent random variables. These methods estimate illuminant colour from  the posterior distribution condition learned from training images. The illuminant prior could be uniform over a subset of illuminants or an empirical distribution of illuminants in training images.
;Natural Image Statistics
:clustered the images by a k-means algorithm using natural image statistics to characterize the images on the basis of Weibull distribution parameters. Then each cluster is correspond  with the best single algorithm for training images for that cluster. To estimate the illuminant of a test image, they select the algorithm according to its cluster or combination of the individual algorithms according to the distances to neighbouring clusters. 

!Color Constancy Datasets
;[[SFU Laboratory|http://www.cs.sfu.ca/~colour/data/colour_constancy_test_images/index.html]] by Barnard 
:the SFU Laboratory dataset contains 321 measured images under 11 different measured illuminants.The scenes are divided into two sets as follows: minimal specularities (22 scenes, 223 images -- i.e., 19 missing images); and non-negligible dielectric specularities (9 scenes, 98 images  -- 1 illuminant is missing for 1 scene).
;[[Color Checker|http://people.kyb.tuebingen.mpg.de/pgehler/colour/]] by Gehler
:This dataset consists of 568 images, both indoor and outdoor. The illuminant ground truth for these images is known because each image has a Macbeth ~ColorChecker placed in the scene. The ~ColorChecker is masked off in tests.
;[[Reprocessed Color Checker|http://www.cs.sfu.ca/~colour/data/shi_gehler/]] by Shi
:The re-processed version of the Gehler colour constancy dataset.
;[[Gray Ball|http://www.cs.sfu.ca/~colour/publications/PCIC-2003/LargeImageDatabase.html]] by Ciurea and Funt
:The ~GreyBall dataset contains 11346 images extracted from video recorded under a wide variety of imaging conditions. The images are divided into 15 different clips taken at different locations. The ground truth was acquired by attaching a grey sphere to the camera,  displayed in the bottom-right corner of the image. This grey sphere must be masked during experiments.
;[[HDR| http://www.cs.sfu.ca/~colour/data/funt_hdr/]] by Funt
:This dataset contains 105 images constructed in the standard way from multiple exposures of the same scene. The color of the scene illumination was determined by photographing an extra HDR image of the scene with 4 Gretag Macbeth.

[[Home]]
[[Publications]]
[<img[Hamid's photo|BMVC_icon.jpg]]

Hamid Reza Vaezi Joze and Mark S. Drew  

The 23rd British Machine Vision Conference, Guildford, UK, September 2012.

!Abstract
Exemplar-based learning or, equally, nearest neighbour methods have recently gained
interest from researchers in a variety of computer science domains because of the prevalence
of large amounts of accessible data and storage capacity. In computer vision, these
types of technique have been successful in several problems such as scene recognition,
shape matching, image parsing, character recognition and object detection. Applying the
concept of exemplar-based learning to the problem of colour constancy seems odd at first
glance since, in the first place, similar nearest neighbour images are not usually affected
by precisely similar illuminants and, in the second place, gathering a dataset consisting
of all possible real-world images, including indoor and outdoor scenes and for all possible
illuminant colours and intensities, is indeed impossible. In this paper we instead
focus on surfaces in the image and address the colour constancy problem by unsupervised
learning of an appropriate model for each training surface in training images. We
find nearest neighbour models for each surface in a test image and estimate its illumination
based on comparing the statistics of pixels belonging to nearest neighbour surfaces
and the target surface. The final illumination estimation results from combining these
estimated illuminants over surfaces to generate a unique estimate. The proposed method
has the advantage of overcoming multi-illuminant situations, which is not possible for
most current methods. The concept proposed here is a completely new approach to the
colour constancy problem. We show that it performs very well, for standard datasets,
compared to current colour constancy algorithms.

[[Full Text|http://www.bmva.org/bmvc/2012/BMVC/paper097/paper097.pdf]]
;~ICIP2012 
: September 30 - October 3, 2012 at Lake Buena Vista, Florida
: Deadline: January 12, 2012 [[website|http://icip2012.com/]]
;~ECCV2012 
: 7-13 October 2012 at Firenze, Italy
: Deadline: March 5th, 2012  [[website|http://eccv2012.unifi.it]]
;~CIC20 
: 12-16 November, 2012 at, LA, USA
: Deadline: April 15th, 2012  [[website|http://www.imaging.org/IST/conferences/cic/]]
;~BMVC2012 
: 3-7 September 2012 at Surrey, UK
: Deadline: May 9th, 2012  [[website|http://bmvc2012.surrey.ac.uk/]]



[>img[Hamid's photo|http://www.cs.sfu.ca/people/images/GradStudents/hrv1.jpg]]
;Hamid Reza Vaezi Joze

;~PhD student
;[[Vision and Media Lab|http://www.cs.sfu.ca/research/groups/VML]]
;[[School of Computing Science|http://cs.sfu.ca]]
;[[Simon Fraser University|http://sfu.ca]]
;[[Vancouver|http://vancouver.ca/]] [[Canada|http://en.wikipedia.org/wiki/Canada]]

Address: TASC 8000, School of Computing Science, Simon Fraser University
888 University Dr., Burnaby, BC ~V5A 1S6

Email: hrv{one} at sfu.ca

I am currently a ~PhD student in Vision and Media lab at School of Computing Science at Simon Fraser University. 
My supervisor is [[Dr. Mark S. Drew|http://www.cs.sfu.ca/~mark/]]. 
My research interests include Computer Vision focusing on Colour and Illumination.

here is list of my [[Publications]]
here is my [[Resume|vaezi-cv.pdf]]

[<img[Hamid's photo|ICIP10_icon.jpg]]

Hamid Reza Vaezi Joze and Mark S. Drew

[[IEEE International Conference on Image Processing, Hong Kong (ICIP), September, 2010.| http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5651069&tag=1]]

!Abstract
Color constancy is the ability to recognize colors of objects invariant to the color of the light source. Systems for object detection or recognition in images use machine learning based on image descriptors to distinguish object and scene categories. However, there can be large variations in viewing and lighting conditions for real-world scenes, complicating the characteristics of images and consequently the image category recognition task. To reduce the effect of such variations, either color constancy algorithms or illumination-invariant color descriptors could be used. In this paper, we evaluate the performance of straightforward color constancy methods in practice, with respect to their utilization in a standard object classification problem, and also investigate their effects using local versions of these algorithms. These methods are then compared with color invariant descriptors. In a novel contribution, we ascertain that a combination of local color constancy methods and color invariant descriptors improve the performance of object recognition by as much as more than 10 percent, a significant improvement.

[[Full Text|http://www.cs.sfu.ca/~mark/ftp/Icip2010/icip2010.pdf]]

[[Home]]
[[Publications]]
[[Projects]]
[[Colour Constancy]]
[[Specular Reflection]]
[[Future Conferences]]
/%[[People]] [[Note]]%/
[[Programming in Objective-C|http://proquest.safaribooksonline.com/9780321712172]]


# ''[[Mark Drew|http://www.cs.sfu.ca/~mark]]''  //Simon Fraser University (Canada)//
# ''[[Graham Finlayson||http://www.uea.ac.uk/cmp/People/Faculty/Graham+Finlayson]]''  //University of East Anglia (UK)//
# ''[[Theo Gevers|http://staff.science.uva.nl/~gevers/]]''  //University of Amsterdam (Netherlands)//
# ''[[Todd Zickler|http://www.eecs.harvard.edu/~zickler/]]'' //Harvard University (US)// 
# ''[[Brian Funt|http://www2.fas.sfu.ca/fas/GCMS2/bio.php?FirstName=Brian&LastName=Funt]]'' //Simon Fraser University (Canada)//
# ''[[David Kriegman|http://cseweb.ucsd.edu/~kriegman/]]'' //UC San Diego (US)//
# ''[[Peter Belhumeur|http://www.cs.columbia.edu/~belhumeur/]]'' //Columbia University (US)//
# ''[[Robby Tan|http://www.staff.science.uu.nl/~tan00109/]]'' //Utrecht University(Netherlands)//
# ''[[Sabine Susstrunk|http://lcav.epfl.ch/people/sabine.susstrunk]]''  // EPFL (Switzerland)//
	
[<img[Hamid's photo|JOSA11_icon.jpg]]

Mark S. Drew and Hamid Reza Vaezi Joze

[[JOSA A, Vol. 28, Issue 9, pp. 1954-1961 (2011)|http://www.opticsinfobase.org/abstract.cfm?URI=josaa-28-9-1954]]

!Abstract
The correlated color temperature (CCT) provides a simple and useful descriptor for a given spectral power distribution as well as an approximation of the full spectrum of the measured illuminant. But typically, the CCT is calculated on the basis of distance in the chromaticity plane. Here we suggest that, while familiar, this metric is not the most effective for actually generating a useful spectral approximation. Given the recent interest in whole-spectrum calculations, we consider what optimization would be most sensible for identifying the nearest Planckian in terms of the whole-spectrum RMS error; in that case, we are calculating a variant of the distribution temperature, another simple descriptor. This effectively means that instead of one value T, we instead describe a spectrum in terms of both T and an intensity I. In general, we wish to balance the need for (i) a best mapping of the whole spectrum and (ii) the smallest CIELAB error. As a first step, we show how to calculate the spectrum analytically in the case when RMS spectral-error minimization is the sole goal. Generalizing, we consider an optimization that tries to minimize a balance of RMS and CIELAB error, leading to a family of solutions. Finally, we suggest a specific optimization that arguably forms a best trade-off of these two objectives, which we denote the Planckian regression temperature. Results are shown for some standard test illuminants and then for a further 102 measured spectra, with results separately reported for fluorescent and nonfluorescent illuminants.

[[Full Text|http://www.cs.sfu.ca/~mark/ftp/Josa2011/prt_josa2011.pdf]]
<<plugins>>
Type the text for 'PrimaryMid'
!Virtual Studio
[>img[vs01.jpg]]
Virtual studio or virtual set is a tool, which allows placing live actors or other real objects in graphically generated three-dimensional (3D) environments for live production, the actors will perform in front of a blue or green screen background.
Virtual studio originates in attempts to overcome the constraints of traditional chroma-keying. The problem is that camera motion in the foreground layer is not correlated with the background layer image.
Virtual studio systems operate by compositing live blue screen shots with 3D graphics that are generated in real time and synchronized with motion camera. The static background of traditional chroma-keying system is replaced by a dynamic, computer-generated, three-dimensional background. The foreground camera is then free to move but must be tracked so that the background can be generated with the proper view. 

[<img[vs02.jpg]]
My Virtual Studio System Project at [[Basir Technology Company|http://www.basirtech.com/]]

Basir Virtual Studio System not only contained all components and properties of a real-time Virtual Studio but also it support some optional properties as followed:

#   Up to 4 billboards in the virtual environment which can demonstrate movie or logo.
#   Animation in computer generated virtual scene as background.
#   Virtual shadow for real objects.
#  Reflection of the floor.
#  Supporting Virtual Camera for Virtual zoom, or position or orientation movement.
#    External tracking system.

;Technical 
: C++ for core and C# for user interface
: Image Processing : ~OpenCV
: Graphics : ~OpenGL + Irrlicht (Open Source 3D engine) 

!4-legged Robot Soccer

[<img[aibo_soccer.jpg]]
Two teams consisting of up to 4 four-legged robots (SONY's specially programmed [[AIBO|http://en.wikipedia.org/wiki/AIBO]] robots) with all sensors on-board, play soccer on a field. Relevant objects are marked by colors. Communication among robots is supported on wireless communications.
No external intervention by humans is allowed, except to insert or remove robots in/from the field. 

[[Official Hompepage of RoboCup4-legged soccer|http://tzi.de/4legged]] (switch to standard platform after discontinuing aibo in 2008 )

[>img[aibo.jpg]]
Technical for programming on aibo
OS: Aperios
Programming Languages: ~Open-R (written in C++)
18 PID joints (force sensing, update every 32ms), Video camera (208x160,30 fps), 3 IR distance sensors, X, Y, and Z accelerometers. 64 MB RAM
 and 802.11b wireless.

;[[Impossibles Team|http://ce.sharif.edu/~impossibles/]] [[Sharif University of Technology|http://www.sharif.ir/en/]]
: Competition : International ~RoboCup 4-legged league  2006, Bremen, Germany
: [[Team Description Paper|http://ce.sharif.edu/~impossibles/soccer_2006/Impossibles%20AIBO%204Legged_2006_TDP.pdf]]
: [[Team Report|http://ce.sharif.edu/~impossibles/soccer_2006/impossibles_report_2006.pdf]]
: [[Video|http://ce.sharif.edu/~impossibles/gallery.html]]
;
: Competition : International ~RoboCup 4-legged league  2007, Atlanta, USA
: [[Team Description Paper|http://ce.sharif.edu/~impossibles/soccer_2007/Impossibles%20AIBO%204Legged_2007_TDP.pdf]]
: [[Team Report|http://ce.sharif.edu/~impossibles/soccer_2007/impossibles_report_2007.pdf]]

!Rescue Simulation
[<img[http://ce.sharif.edu/~impossibles/images/rob-rescue.jpg]]
[>img[rescue-pic.jpg]]
The [[RoboCupRescue|http://www.robocuprescue.org/]]  Simulation League is an international testbed for the simulation of software agents and robots performing Urban Search And Rescue missions. The main purpose of the ~RoboCupRescue Simulation Project is to provide emergency decision support through the integration of disaster information, prediction, planning, and human interface. Heterogeneous intelligent agents conduct search and rescue activities in this virtual disaster world. This problem introduces researchers to advanced and interdisciplinary research themes. In AI/Robotics research, for example, behavior strategy (e.g. multi-agent planning, realtime/anytime planning, heterogeneity of agents, robust planning, mixed-initiative planning) is a challenging problem.
The agent competition is a modular large-scale disaster simulation in real time, to which multiple agent teams can connect in order to reduce human casualties and damage to buildings. Typical agent types are police forces, ambulance teams, and fire brigades. The rescue domain represents a real multi-agent scenario since most of the encountered problems cannot be solved by a single agent. For example, fire brigades depend on police forces to clear blocked roads in order to extinguish fires. Therefore, team cooperation and coordination is highly required in this domain. Moreover, the task is challenging due to the limited communication bandwidth, the agent's limited perception and the difficulty of predicting how disasters evolve over time. 

;[[Impossibles Team|http://ce.sharif.edu/~impossibles/]] [[Sharif University of Technology|http://www.sharif.ir/en/]]
: Competition : International ~RoboCup Rescue Simulation 2005, Osaka, Japan
: [[Team Description Paper|http://ce.sharif.edu/~impossibles/rescue_2005/Impossibles_Team_Description.pdf]]
: [[Source Code|http://ce.sharif.edu/~impossibles/rescue_2005/impossibles_only_src.tar]]
: Result : [[Champion|Japan2005.jpg]]
:M. S. Drew, H. R. Vaezi Joze, and G. D. Finlayson, [[Specularity, the Zeta-Image, and Information-Theoretic Illuminant Estimation]], ~CPCV2012: European Conference on Computer Vision Workshop on Color and Photometry in Computer Vision, Florence, Italy, October 2012

[<img[Hamid's photo|BMVC_icon.jpg]]
H. R. Vaezi Joze and M. S. Drew, [[Exemplar-Based Colour Constancy]], the 23rd British Machine Vision Conference, Guildford, UK, September 2012.
@@clear:both;display:block; @@
[<img[Hamid's photo|CIC12_icon.jpg]]
H. R. Vaezi Joze, M. S. Drew, Graham D. Finlayson and Perla Aurora Troncoso Rey, [[The Role of Bright Pixels in Illumination Estimation]], the 20th Color and Imaging Conference, Los Angeles, USA , November 2012.
@@clear:both;display:block; @@
[<img[Hamid's photo|ICIP12_icon.jpg]]
H. R. Vaezi Joze and M. S. Drew, [[White Patch Gamut Mapping Colour Constancy]], IEEE International Conference on Image Processing, Orlando, Florida (ICIP), October, 2012.
@@clear:both;display:block; @@
[<img[Hamid's photo|JOSA11_icon.jpg]]
M. S. Drew and H. R. Vaezi Joze, [[Planckian Regression Temperature for Least Spectral Error and Least CIELAB Error]], Journal of the Optical Society of America A, Vol. 28, Issue 9, pp. 1954-1961, 2011.
@@clear:both;display:block; @@
[<img[Hamid's photo|ICIP10_icon.jpg]]
H. R. Vaezi Joze and M. S. Drew, [[Improved Machine Learning for Image Category Recognition by Local Color Constancy]], IEEE International Conference on Image Processing, Hong Kong (ICIP), September, 2010.
@@clear:both;display:block; @@
[<img[Hamid's photo|CIC09_icon.jpg]]
M. S. Drew and H. R. Vaezi Joze, [[Sharpening from Shadows: Sensor Transforms for Removing Shadows using a Single Image]], The 17th Color Imaging Conference, Albuquerque, USA, November, 2009.
@@clear:both;display:block; @@
:H. R. Vaezi Joze and M. Jamzad, Iterative Fuzzy ~Rule-Based ~Multi-Chromatic Image Segmentation, The Fifth Iranian Conference on Machine Vision and Image Processing , Tabriz, Iran, November, 2008.

[<img[Hamid's photo|IMPS_icon.jpg]]
H. R. Vaezi Joze, J. Habibi, N. Asadi, Impossibles : a Fully Autonomous Four Legged Robot Soccer Team, Chapter 25, pp. 493-520, Pedro Lima Eds; Advanced Robotics Systems: Vienna, Austria, EU, September 2007.
@@clear:both;display:block; @@
[<img[Hamid's photo|JCSE05_icon.jpg]]
J. Habibi, H. R. Vaezi Joze, A New Architecture for Multi Agent System in Rescue Simulation Environment, the CSI Journal on Computer Science and Engineering, Vol. 3, No. 2&4, pp. 1-7, 2005.
@@clear:both;display:block; @@
[<img[Hamid's photo|TAROS_icon.jpg]]
H. R. Vaezi Joze, J. Habibi, S. Rahbar, Piecewise Linear Probability Distribution Localization: Fast and Inexpensive Approach for Mobile Robot Localization, In Proc. of 3rd Toward Autonomous Robotic Systems (~TAROS07), Aberystwyth, UK, September 2007.
@@clear:both;display:block; @@
[<img[Hamid's photo|CSI_icon.jpg]]
K. Mokhtarian, H. R. Vaezi Joze, J. Habibi, An Inexpensive Approach for ~Real-Time Vision on Four-legged Footballer Robots, In Proceeding of 12th International CSI Computer Conference (~CSICC07), pp. 1856-1861, February 2007. (in Farsi)
@@clear:both;display:block; @@
[<img[Hamid's photo|ARCS_icon.jpg]]
N. Asadi, S. H. Kaffash Bokharaei, S. Bagheri Shouraki, H. R. Vaezi Joze, S. H. Khasteh, 3-Dimensional ~Ellipse-Based Trajectory Generation Model for 4-Legged Robots, International Conference on Automation, Robotics and Control Systems(~ARCS08), pp. 9-16, Orlando, FL, USA, July, 2008.
@@clear:both;display:block; @@
[<img[Hamid's photo|IMPS_icon.jpg]]
H. R. Vaezi Joze, N. Asadi, S. H. Kaffash Bokharaei, N. Zolghadr, S. H. Khasteh, Impossibles & Autonomous 4-Legged Soccer Team on AIBO Platform, International Conference on Automation, Robotics and Control Systems(~ARCS08), pp. 38-44, Orlando, FL, USA, July, 2008.
@@clear:both;display:block; @@


[<img[Hamid's photo|CIC09_icon.jpg]]

Mark S. Drew and Hamid Reza Vaezi Joze

The 17th Color Imaging Conference, Albuquerque, USA, November, 2009.

!Abstract
Illumination conditions in images, such as shadows, can cause problems for both humans and computers. As well as shadows obscuring some features in images for human observers, many computer vision algorithms such as tracking, segmentation, recognition, and categorization are challenged by varying illumination.
Previously, shadow removal algorithms were proposed that require recording a sequence of calibration images of a fixed scene over different  illumination conditions, say over a day. As another alternative, calibration is replaced by using information in the single image itself, seeking a projection that minimizes entropy and allows one to generate a grayscale image that has shadows effectively eliminated. In this paper we wish to improve the entropy-based method by carrying out a sensor sharpening matrix transform first. In preceding work such a sensor transform for shadow removal was sought by utilizing many calibration images. Here, instead, we replace the calibration information by user interaction: we ask the user to identify two (or more) regions in a single image that correspond to the same surface(s) in shadow and not in shadow. Then using image data from these regions only, we generate a sensor sharpening transform via an optimization aimed at minimizing the difference between in-shadow and out-of-shadow pixel values once they are projected to grayscale. Again, entropy minimization is the driving force leading to a correct sensor matrix transform. Results show that, compared to using the camera sensors as-is, the sensor sharpening is beneficial for better shadow removal.

[[Full Text| http://www.cs.sfu.ca/~mark/ftp/Cic17/cic17.pdf]]
<<search>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>>
/%<<slider chkSliderOptionsPanel OptionsPanel "options ยป" "Change TiddlyWiki advanced options">>%/
/%<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>%/
Computing Science Department, Simon Fraser University                                                               
[img[http://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/SFU-block-logo.svg/200px-SFU-block-logo.svg.png]]    Hamid Reza Vaezi Joze
http://www2.cs.sfu.ca/~hrv1/personal/
Type the text for 'Specular Reflection'
.tiddler .subtitle {
     display: none;
} 

.tagged {
display: none;
} 
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid1]];}
a:hover {background-color:[[ColorPalette::PrimaryMid1]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid1]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid1]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid1]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid1]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid1]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid1]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid1]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid1]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid1]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid1]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/

|~ViewToolbar|closeTiddler closeOthers +editTiddler|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler > fields syncing permalink references jump|
[<img[Hamid's photo|ICIP12_icon.jpg]]

Hamid Reza Vaezi Joze and Mark S. Drew  

The 20th Color and Imaging Conference, Los Angeles, USA, , November 2012.

!Abstract
The ~White-Patch method, one of the first colour constancy methods, estimates the light source colour from the maximum response of the different colour channels. However, it has been eclipsed by the advent of more advanced physical or statistical methods, as well as complex learning based methods. Recently, a new independent line of work claims that the simple idea of using maximum pixel values is not as naive as it seems, but can also be made to perform very well via some manipulations.  The bright areas of images can include highlights and specularity as well as white surfaces or light sources, and indeed all may be helpful in the illumination estimation process.
In this paper, we define the White Patch Gamut as a new extension to the Gamut Mapping Colour Constancy method, comprising the bright pixels of the image.  Adding new constraints based on the possible White Patch Gamut to the standard gamut mapping constraints, a new combined method outperforms gamut mapping methods as well as other well-known colour constancy methods.The new constraints that are brought to bear are powerful, and indeed can be more discriminating than those in the original gamut mapping method itself.