color image: kitchen1.tif
grayscale image: kitchen2.tif
W = k1 * R + k2 * G + k3 *B
Find k1, k2, k3 by least-squares
gray=imread('kitchen2.tif'); gray=im2double(gray); rgb=imread('kitchen1.tif'); rgb=im2double(rgb); len=size(rgb); rgbd=reshape(rgb,len(1)*len(2),3); grayd=reshape(gray,len(1)*len(2),1); C=rgbd'*rgbd; d=rgbd'*grayd; k=C\d; diff = gray - k(1)*rgb(:,:,1) - k(2)*rgb(:,:,2) - k(3)*rgb(:,:,3); a(1) = max(diff(:)); a(2) = min(diff(:)); rms = std2(diff); scd = (diff-a(2))/(a(1)-a(2)); imhist(scd);
C = 1.0e+004 * 6.9239 6.4029 5.6287 6.4029 6.1035 5.3815 5.6287 5.3815 5.1229 d = 1.0e+004 * 6.4717 6.1061 5.4191 k = 0.3277 0.5617 0.1077 a = 0.0789 -0.0369 rms = 0.0105
m = mean(rgbd) m(4) = mean(grayd) for i=1:3 rgbd(:,i) = rgbd(:,i)-m(i); end grayd = grayd - m(4); C=rgbd'*rgbd; d=rgbd'*grayd; k=C\d; diff = gray - k(1)*rgb(:,:,1) - k(2)*rgb(:,:,2) - k(3)*rgb(:,:,3); a = [max(diff(:)) min(diff(:))]; rms = std2(diff); scd = (diff-a(2))/(a(1)-a(2)); imhist(scd);
m = 0.5353 0.5053 0.4753 0.5125 C = 1.0e+004 * 1.8216 1.5864 1.0986 1.5864 1.5566 1.1051 1.0986 1.1051 1.1008 d = 1.0e+004 * 1.5867 1.4947 1.0819 k = 0.3222 0.5653 0.0937 a = 0.0831 -0.0309 rms = 0.0097
Maintained by John Loomis, last updated 18 Jan 2003