資源簡介
代碼是基于MATLAB的移動最小二乘法MLS的曲面擬合。代碼是從mathworks上下載的MLS2D,經過自己的分析改進,有較大的提速,在i5 3450機上一幅98*144的圖片以10等步長采樣擬合只需要3s。代碼僅供學習參考,我的博客有相關說明:https://blog.csdn.net/liumangmao1314/article/details/89421806

代碼片段和文件信息
%?two-DIMENSIONAL?MLS?APPROXIMATION
%?by?Jin?Jia
%%?圖像等步長采樣
clc
clear?all
I=imread(‘22result.jpg‘);
[rowcolchn]=size(I);
%?I=I(1:col::);
%?設置節點坐標
step=10;%步長
xII=1:?step?:?row;
yII=1:?step?:?col;
[xIyI]?=?meshgrid(yIIxII);
nnodes?=?size(xI1)*size(yI2);
%?設置評估點的坐標
[xy]?=?meshgrid(1:?1?:?col1:?1:?row);
npoints?=?size(x1)*size(y2);
scale?=?30;
%?確定每個節點的支持半徑
dmI?=?scale?*0.5*?ones(1?nnodes);
tic
%?評估所有評估點x的MLS形狀函數
[PHI?DPHIx?DPHIy]?=?MLS2DShape(6?nnodes?xIyI?npoints?xy?dmI?‘GAUSS‘?3.0?);?
toc
?
%?曲線擬合.?y?=?peaks(xy)
ZII??=I(xIIyII:);????%?節點函數值?
%?z??=x.*exp(-x.^2-?y.^2);%?確切的解決方案
Zpoints=zeros(1npoints);
xh=zeros(1npoints);
yh=zeros(1npoints);
II=I-I;
for?i=1:npoints
%?Zpoints(1i)=z(i);
xh(1i)=x(i);
yh(1i)=y(i);
end
Znodes=zeros(1nnodes);
for?j=1:1
????ZI=ZII(::j);
????for?i=1:nnodes
????????Znodes(1i)=ZI(i);
????end????????????????????????%將二維數據轉換為一維數據
????zh?=?PHI?*Znodes‘;??%?逼近函數
????II(::j)=reshape(zhrowcol);
end
ZI=double(ZI);
plot3(?xI?yI?ZI‘k.‘‘LineWidth‘2);
hold?on
surf(xyII(::j));
toc
%?imshow(II);
%?III=imsubtract(III);
%?sum(sum(sum(III)))/(row*col*3)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????61762??2019-04-21?09:57??MLS2D\111.jpg
?????文件??????62925??2019-04-21?10:31??MLS2D\2222.jpg
?????文件???????5259??2014-11-18?09:45??MLS2D\22result.jpg
?????文件???????1266??2019-04-21?10:04??MLS2D\MLS2D.m
?????文件???????3251??2018-12-23?21:54??MLS2D\MLS2DShape.m
?????文件???????4207??2018-12-21?16:38??MLS2D\rectangleWeight.m
?????文件???13805040??2019-04-21?10:29??MLS2D\unti
?????目錄??????????0??2019-04-21?10:57??MLS2D
-----------?---------??----------?-----??----
?????????????13943710????????????????????8
評論
共有 條評論