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

    clear all;clc;close all;imtool close all

%% 嬋柺傊偺夞婣
%   夋憸偺撉崬傒e僗僩
G = imread('I3_06_2_IMG_blockG.jpg');
G = im2double(G);
figure;imshow(G,[]);

%% 昞柺僾儘僢僩
figure;surf(double(G));shading interp;

%% 拞怱晹傪庢傝彍偔
s = G;
s(120:240, 70:190) = NaN;
figure;surf(double(s));shading interp;

%% 張棟懍搙岦忋偺偨傔丄僨乕僞揰偺娫堷偒 (NaN偺戙擖)
mask = true(size(s));
mask([1:20:end], [1:20:end]) = false;
s(mask) = NaN;

%% 僨乕僞偺弨旛丗NaN傪彍嫀偟丄xData,yData,zData偺儀僋僩儖偺宍傊曄姺
[xData, yData, zData] = prepareSurfaceData([1:size(s,1)], [1:size(s,2)], s);

%% GUI僣乕儖偱峴偆偲偒
%cftool  % X丒Y丒Z僨乕僞 => xData丒yData丒zData偲巜掕丄懡崁幃傪慖戰丄x偲y偺師悢傪係師傊
%        % 嬤帡僾儖僟僂儞儊僯儏乕 => "儚乕僋僗儁乕僗傊曐懚"傪慖戰
%        % "OK" => fittedmodel偺柤慜偱儚乕僋僗儁乕僗傊曐懚偝傟傞

%% 僐儅儞僪偱峴偆偲偒
% 嬤帡僞僀僾偲僆僾僔儑儞傪愝掕
ft = fittype( 'poly44' );
% 儌僨儖傪僨乕僞偵嬤帡偟傑偡丅
fittedmodel = fit( [xData, yData], zData, ft)

%% 嬤帡寢壥傪僾儘僢僩偟傑偡丅(娫堷偒偟偨 x丒y 揰偵懳偟)
figure( 'Name', '嬤帡');
% plots "z versus x and y" and plots "sfit over the range of x and y".
h = plot( fittedmodel, [xData, yData], zData );
legend( h, '嬤帡', 'z vs. x, y', 'Location', 'NorthEast' );
% 儔儀儖 Axes
xlabel( 'x' );
ylabel( 'y' );
zlabel( 'z' );
grid on
view( -98.5, 18.0 );

%% 攚宨偺柺傪丄尦夋憸偺x丒y偺嵶偐偝(慡僺僋僙儖埵抲)偱寁嶼偟丄
%   夋憸僨乕僞偵栠偡
[gridX gridY] = meshgrid([1:size(G,2)], [1:size(G,1)]);
backGround1 = fittedmodel(gridX(:), gridY(:));  % 楍儀僋僩儖
% 楍儀僋僩儖傪2師尦傊曄峏
backGround2 = reshape(backGround1, size(G,1), size(G,2));
figure;imshow(backGround2,[]);

%% 攚宨偺嬊柺傪嵎偟堷偒曗惓屻夋憸傪惗惉
finalImage = G - backGround2;
imtool(finalImage,[0,0.2]);

%% 廔椆











%% 擇抣壔偡傞偩偗偱偁傟偽丄揔墳擇抣壔偺巊梡傕壜擻
BW = imbinarize(G, 'adaptive','ForegroundPolarity','bright','Sensitivity',0.57);
figure; imshow(BW);

%% 夞婣偟偨柺偺嵟戝抣億僀儞僩傪扵偡 (Optimization Toolbox偑昁梫)
%       嬌戝偑暋悢偁傞応崌偵偼拲堄
% 栚揑娭悢 (曄悢偼堦偮乯傊偺僴儞僪儖惗惉
%    暋悢偺堷悢偑偁傞応崌偼丄柍柤娭悢傪嶌惉偟侾偮偺儀僋僩儖偵傑偲傔傞
%    fmincon偼嵟彫抣傪扵偡偺偱丄嵟戝抣傪扵偟偨偄娭悢偵-1傪妡偗傞
h = @(x) -1 * fittedmodel(x(1), x(2));
%% 専嶕弶婜抣偺愝掕
x0 = [200; 150];
%% 惂栺忦審丗y 偺傒慄宍晄摍幃惂栺  0<= x <=250, 0<= y <=200
l = [  0;   0]
u = [250; 200]
%% 嵟揔壔僆僾僔儑儞偺愝掕
options = optimset('LargeScale', 'off');
%% 惂栺忦審晅偺嵟揔壔
[x, fval] = fmincon(h, x0, [], [], [], [], l, u, [], options)

%%



%% (嶲峫) 嬋柺夞婣梡僥僗僩夋憸偺嶌惉梡僗僋儕僾僩 %%%%%%
% 僼傽僀儖偐傜夋憸撉崬傒丒昞帵

I=imread('rice.png');        % 僼傽僀儖偐傜夋憸撉崬傒
figure; imshow(I);           % 夋憸偺昞帵
figure; surf(double(I));     % 昞柺僾儘僢僩
        shading interp;      % 昞帵傪尒傗偡偔

Ierode=imerode(I, ones(15));     % 廂弅張棟偵傛傞暷棻偺徚嫀
figure;imshow(Ierode);
figure; ...
surf(double(Ierode));shading interp;     % 攚宨昞柺僾儘僢僩

Fave = fspecial('average', 30);
Iave = imfilter(Ierode,Fave,'replicate');
figure;imshow(Iave,[]);
a = Iave*2;

b = imread('coins.png');
imtool(b)
c = (b(177:246, 86:155)-72)/4;
d = imresize(c,1.7);
figure;imshow(d);

a(121:239, 71:189) = a(121:239, 71:189) + d;
figure;imshow(a,[]);
figure;surf(double(a));shading interp;
imwrite(a, 'IMG_blockG.jpg');

%%

% Copyright 2014 The MathWorks, Inc.