[37] | 1 | function test_colorimetry |
---|
| 2 | % TEST_COLORIMETRY Test color space conversion functons |
---|
| 3 | |
---|
| 4 | [a,b]= meshgrid(0:.01:1,0:.01:1) ; |
---|
| 5 | c = ones(size(a)) ; |
---|
| 6 | d = zeros(size(a)) ; |
---|
| 7 | |
---|
| 8 | % 2-D charts |
---|
| 9 | figure(1) ; set(gcf,'Renderer','OpenGL') ; clf ; test('CIE') ; |
---|
| 10 | figure(2) ; set(gcf,'Renderer','OpenGL') ; clf ; test('Adobe') ; |
---|
| 11 | |
---|
| 12 | % 3-D charts |
---|
| 13 | figure(3) ; clf ; test3('CIE') ; |
---|
| 14 | |
---|
| 15 | % -------------------------------------------------------------------- |
---|
| 16 | function test(ws) |
---|
| 17 | % -------------------------------------------------------------------- |
---|
| 18 | % xy + Luv + Lab diagrams |
---|
| 19 | [a,b]= meshgrid(0:.01:1,0:.01:1) ; |
---|
| 20 | c = ones(size(a)) ; |
---|
| 21 | d = zeros(size(a)) ; |
---|
| 22 | |
---|
| 23 | draw(a,b,c,ws) ; |
---|
| 24 | draw(c,a,b,ws) ; |
---|
| 25 | draw(b,c,a,ws) ; |
---|
| 26 | |
---|
| 27 | % -------------------------------------------------------------------- |
---|
| 28 | function test3(ws) |
---|
| 29 | % -------------------------------------------------------------------- |
---|
| 30 | % 3-D Lab diagram |
---|
| 31 | |
---|
| 32 | [a,b]= meshgrid(0:.01:1,0:.01:1) ; |
---|
| 33 | c = ones(size(a)) ; |
---|
| 34 | d = zeros(size(a)) ; |
---|
| 35 | |
---|
| 36 | draw3(a,b,c,ws) ; |
---|
| 37 | draw3(c,a,b,ws) ; |
---|
| 38 | draw3(b,c,a,ws) ; |
---|
| 39 | draw3(a,b,d,ws) ; |
---|
| 40 | draw3(d,a,b,ws) ; |
---|
| 41 | draw3(b,d,a,ws) ; |
---|
| 42 | set(gca,'Box','on') ; |
---|
| 43 | |
---|
| 44 | function draw(r,g,b,ws) ; |
---|
| 45 | |
---|
| 46 | I = cat(3,r,g,b) ; |
---|
| 47 | J = rgb2xyz(I,ws) ; |
---|
| 48 | |
---|
| 49 | X = J(:,:,1) ; |
---|
| 50 | Y = J(:,:,2) ; |
---|
| 51 | Z = J(:,:,3) ; |
---|
| 52 | |
---|
| 53 | x = X./(X+Y+Z) ; |
---|
| 54 | y = Y./(X+Y+Z) ; |
---|
| 55 | |
---|
| 56 | J = xyz2luv( cat(3,X,Y,Z) ) ; |
---|
| 57 | u = J(:,:,2) ; |
---|
| 58 | v = J(:,:,3) ; |
---|
| 59 | |
---|
| 60 | J = xyz2lab( cat(3,X,Y,Z) ) ; |
---|
| 61 | L = J(:,:,1) ; |
---|
| 62 | a = J(:,:,2) ; |
---|
| 63 | b = J(:,:,3) ; |
---|
| 64 | |
---|
| 65 | xc = mean(x(:)) ; |
---|
| 66 | yc = mean(y(:)) ; |
---|
| 67 | |
---|
| 68 | uc = mean(u(:)) ; |
---|
| 69 | vc = mean(v(:)) ; |
---|
| 70 | |
---|
| 71 | ac = mean(a(:)) ; |
---|
| 72 | bc = mean(b(:)) ; |
---|
| 73 | |
---|
| 74 | tightsubplot(4,1,'Box','outer') ; hold on ;title([ws ' RGB gamut in xyY']) ; |
---|
| 75 | z0 = zeros(size(X)) ; |
---|
| 76 | h=mesh(x,y,z0) ; |
---|
| 77 | set(h, 'CData', I, 'FaceColor', 'texturemap') ; |
---|
| 78 | campos([xc,yc,1]) ; |
---|
| 79 | camtarget([xc,yc,0]) ; |
---|
| 80 | axis square ; |
---|
| 81 | xlabel('y') ; |
---|
| 82 | ylabel('b') ; |
---|
| 83 | |
---|
| 84 | tightsubplot(4,2,'Box','outer') ; hold on ; title([ws ' RGB gamut in Luv']) ; |
---|
| 85 | h=mesh(u,v,z0) ; |
---|
| 86 | set(h, 'CData', I, 'FaceColor', 'texturemap') ; |
---|
| 87 | campos([uc,vc,1]) ; |
---|
| 88 | camtarget([uc,vc,0]) ; |
---|
| 89 | axis square ; |
---|
| 90 | xlabel('u') ; |
---|
| 91 | ylabel('v') ; |
---|
| 92 | |
---|
| 93 | tightsubplot(4,3,'Box','outer') ; hold on ; title([ws ' RGB gamut in Lab']) ; |
---|
| 94 | h=mesh(a,b,z0) ; |
---|
| 95 | set(h, 'CData', I, 'FaceColor', 'texturemap') ; |
---|
| 96 | campos([ac,bc,1]) ; |
---|
| 97 | camtarget([ac,bc,0]) ; |
---|
| 98 | axis square ; |
---|
| 99 | xlabel('a') ; |
---|
| 100 | ylabel('b') ; |
---|
| 101 | |
---|
| 102 | % -------------------------------------------------------------------- |
---|
| 103 | function draw3(r,g,b,ws) |
---|
| 104 | % -------------------------------------------------------------------- |
---|
| 105 | |
---|
| 106 | I = cat(3,r,g,b) ; |
---|
| 107 | J = rgb2xyz(I,ws) ; |
---|
| 108 | |
---|
| 109 | X = J(:,:,1) ; |
---|
| 110 | Y = J(:,:,2) ; |
---|
| 111 | Z = J(:,:,3) ; |
---|
| 112 | |
---|
| 113 | J = xyz2lab( cat(3,X,Y,Z) ) ; |
---|
| 114 | L = J(:,:,1) ; |
---|
| 115 | a = J(:,:,2) ; |
---|
| 116 | b = J(:,:,3) ; |
---|
| 117 | |
---|
| 118 | hold on ; |
---|
| 119 | title([ws ' RGB gamut in Lab space']) ; |
---|
| 120 | h=mesh(a,b,L) ; |
---|
| 121 | set(h, 'CData', I, 'FaceColor', 'texturemap') ; |
---|
| 122 | xlabel('a') ; |
---|
| 123 | ylabel('b') ; |
---|
| 124 | zlabel('L') ; |
---|
| 125 | axis square ; |
---|
| 126 | grid on ; |
---|