资源简介
代码是基于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
评论
共有 条评论