-
Notifications
You must be signed in to change notification settings - Fork 6
Description
The resulting vector after convolution with color matching functions is highly correlated, particularly for red and green components. This means you can't work with the error propagation formula as before, you need a covariance matrix. Steps for replacing the standard deviation with the covariance matrix are taken in the separate branch.
Covariance matrices are rotated "uncertainty ellipsoids" in a color space (RGB space after all the transformations), and a triaxial ellipsoid is difficult to render in a traditional GUI application such as TCT. Especially if we need 1σ surface and the main color of the center at the same time.
The original Thomas Tarrants' suggestion was to show uncertainty on the chromaticity diagram. It could be done, but it has some problems. The most obvious one is the loss of brightness information.
My idea is to get eigenvectors of the color covariance matrix, then get 6 colors (2 opposing colors per a main axis of ellipsoid) that lie on the 1σ ellipsoid and render them like on the concept picture I drew in Krita:
Colors are random and contrasting for clarity. The color preview is supposed to be generated with numpy. It's easier to arrange the arrays in the correct order for the first option than it is to develop the rendering formulas for the second option. However, the last option could be implemented later.