memory color

Recently I read a paper about exploring the use of memory colors for image enhancement. Memory colors have been defined as “those colors that are recalled in association with familiar objects”. Several early psychophysical studies support that the majority of people associate and ideal color with an array of everyday objects (skin, grass, sky, plant, sand, and etc).

An interesting fact is that when people use Photoshop to polish their photos, they inadvertently apply a lot of memory colors. Think about some of the modern famous photo apps like Instagram, which also applies memory color to enhance the photos, it has proven that memory color make people more pleasing than the original color.

There are also situations where the association with memory color is less appropriate; for example, the images that convey a certain mood, memory color can make the mood disappear.

The basic idea of using memory color to enhance an image is to shift the original color in some region of that image towards the memory color.

The following is a little experiment I did in Matlab to see how variation goes within an image.

For the common object that people might see every day: grass, brick, sky.

brick  grass  sky

I obtained the following graphs:

brick_rgbgrass_rgb  sky_rgb

The following is the Matlab code that does the trick:

function [ ] = generate_3d_plot( img_str )
  img = imread(img_str);
  [height, width, dim] = size(img);

  s = height*width;
  R = double(reshape(img(:,:,1), 1, s));
  G = double(reshape(img(:,:,2), 1, s));
  B = double(reshape(img(:,:,3), 1, s));
  scatter3(R,G,B,30,[R' G' B']./255,'filled','Marker','o');
  title('RGB values');

Thanks for reading.