www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I3_06_1_Excel_curvefit.m

    clear all;clc;close all;imtool close all

%% 夋憸偺撉崬傒
rgb=imread('I3_06_1_color_chart8.jpg');
figure;imshow(rgb);

%% 僌儕僢僪暘妱
%[x y] = getpts        % 儅僂僗偱24枃偺奺僷僱儖拞怱嬤曈傪僋儕僢僋 (嵍忋偐傜塃傊)
                      % 巜掕屻丄儕僞乕儞僉乕

% 僐儅儞僪偱x, y傪惗惉偡傞
[y,x] = meshgrid(size(rgb,1)/8:size(rgb,1)/4:size(rgb,1),...
    size(rgb,2)/12:size(rgb,2)/6:size(rgb,2));
x = x(:);
y = y(:);
hold on;
plot(x,y,'o-');

%% 儅僂僗偱奺僷僱儖埵抲傪巜掕偟丄R(愒)G(椢)B(惵)抣 傪庢摼(僙僋僔儑儞幚峴)
Col = uint32(x);
Row = uint32(y);
% (Row, Col, R/G/B) 傪慄宍僀儞僨僢僋僗傊曄姺 
r_ind = sub2ind(size(rgb), Row, Col, repmat(uint32(1),24,1));
g_ind = sub2ind(size(rgb), Row, Col, repmat(uint32(2),24,1));
b_ind = sub2ind(size(rgb), Row, Col, repmat(uint32(3),24,1));
rgb = double(rgb);
% RGB抣傪屄暿偺儀僋僩儖傊奿擺
r_camera = rgb(r_ind)
g_camera = rgb(g_ind)
b_camera = rgb(b_ind)

%% EXCEL儕僼傽儗儞僗 R 僨乕僞撉傒崬傒 (I3_06_1_color_checker_ref.xls)
% winopen('I3_06_1_color_checker_ref.xls');
%傕偟偔偼丄I3_06_1_color_checker_ref.xls傪塃僋儕僢僋偟偰丄"MATLAB偺奜晹偱奐偔"
% 惗惉嵪傒偺importfile娭悢傪巊偆
rgb_ref = importfile('I3_06_1_color_checker_ref.xls');
rgb_ref = rgb_ref(:,4:6);

r_ref = rgb_ref(:,1);
cftool;      %嬋慄嬤帡 GUI僣乕儖乮Curve Fitting Toolbox)偑婲摦偝傟傞
             % cftool撪偺愝掕丗X僨乕僞偵r_camera丄Y僨乕僞偵r_ref
             %                 懡崁幃傪慖戰丄師悢偼俀師傪慖戰
             %                 嬤帡儊僯儏乕 -> 儚乕僋僗儁乕僗偵曐懚 -> OK  偱丄
             %                 嬤帡傪MATLAB僆僽僕僃僋僩偲偟偰曐懚 (fittedmodel)

%% 儚乕僋僗儁乕僗偵曐懚偝傟偨寢壥傪妋擣
if exist('fittedmodel','var')
    fittedmodel
end

%% 椢丄惵偵懳偟偰偼丄僐儅儞僪儔僀儞偱嬤帡懡崁幃傪帺摦惗惉丒昞帵
if exist('fittedmodel','var')
    curveRed   = fittedmodel;
else
    curveRed = fit(r_camera, rgb_ref(:,1),'poly2');      % 愒偺僼傿僢僥傿儞僌傪傪僐儅儞僪儔僀儞偱峴偆偲偒
end
curveGreen = fit(g_camera, rgb_ref(:,2),'poly2');
curveBlue  = fit(b_camera, rgb_ref(:,3),'poly2');

%% 摼傜傟偨僩乕儞儅僢僺儞僌曗惓嬋慄偵傛傝夋憸偺怓曗惓
rgb_op(:,:,1) = reshape(  curveRed(rgb(:,:,1)), size(rgb(:,:,1)));
rgb_op(:,:,2) = reshape(curveGreen(rgb(:,:,2)), size(rgb(:,:,1)));
rgb_op(:,:,3) = reshape( curveBlue(rgb(:,:,3)), size(rgb(:,:,1)));

%% 尦夋憸(嵍)偲丄曗惓偟偨夋憸(塃)偺昞帵
figure; imshowpair(uint8(rgb), uint8(rgb_op), 'montage');

%% 廔椆









%% Spreadsheet Link EX 偑柍偄応崌偼丄壓婰傪幚峴
% open('I3_06_1_color_checker_ref.xls');
%     忋婰僐儅儞僪傪幚峴屻丄嵍忋偱丄僀儞億乕僩偡傞MATLAB曄悢偺宆偲偟偰丄"峴楍"傪慖戰
%     僥乕僽儖僨乕僞晹暘R,G,B偺悢帤晹暘(3楍暘)丒2峴乣25峴栚傪慖戰偟丄
%     僀儞億乕僩儃僞儞傪僋儕僢僋 => colorcheckref偲偄偆曄悢柤偱儚乕僋僗儁乕僗偵僀儞億乕僩偝傟傞
% rgb_ref = colorcheckerref;       % colorcheckref 傪 rgb_ref 偲偄偆曄悢柤傊


% Copyright 2014 The MathWorks, Inc.