SmartColor

 

A video demonstrating SmartColor in action on a few real life scenarios.

During my internship at University of Manitoba Human - Computer Interaction Lab, I worked together with Juan David Hincapié-Ramos on a project that aimed to improve color reproduction on head-worn transparent displays (HMDs). 

Users of optical see-through head-mounted displays (OHMD) perceive color as a blend of the display color and the background. Color-blending is a major usability challenge as it leads to loss of color encodings and poor text legibility. Color correction aims at mitigating color blending by producing an alternative color which, when blended with the background, more closely approaches the color originally intended. To date, approaches to color correction do not yield optimal results or do not work in real-time. This paper makes two contributions. First, we present QuickCorrection, a real-time color correction algorithm based on display profiles. We describe the algorithm, measure its accuracy and analyze two implementations for the OpenGL graphics pipeline. Second, we present SmartColor, a middleware for color management of user-interface components in OHMD. SmartColor uses color correction to provide three management strategies: correction, contrast, and show-upon-contrast. Correction determines the alternate color which best preserves the original color. Contrast determines the color which best warranties text legibility while preserving as much of the original hue. Show-upon-contrast makes a component visible when a related component does not have enough contrast to be legible. We describe the SmartColor’s architecture and illustrate the color strategies for various types of display content.

Citation: 

Hincapié-Ramos, J.D., Ivanchuk, L., Sridharan, S.K. and Irani, P. 2014. SmartColor: Real-Time Color Correction and Contrast for Optical See-Through Head-Mounted Displays. In Proc. ISMAR ’14. ACM. To Appear.

Here is an example of SmartColor in action: 

From Top Left to Bottom Right - 1) Not corrected, 2) Corrected using Fragment Shader Correction, 3) Corrected using Vertex shader Correction, 4) Corrected using Vertex Shader Correction + Voting mechanism

From Top Left to Bottom Right - 1) Not corrected, 2) Corrected using Fragment Shader Correction, 3) Corrected using Vertex shader Correction, 4) Corrected using Vertex Shader Correction + Voting mechanism