clc;
clear;
path='F:\带束层分割\拟合及分割\first\head\';
% path='F:\带束层分割\拟合及分割\second\tail\';
% path='F:\矫正\second\tail\';
FilesBack = dir(strcat([path,'back\'],'*.mat'));
LengthFiles = length(FilesBack);
FilesImg = dir(strcat([path,'Img\'],'*.tif'));
for k=1:1
load (strcat([path,'back\'],FilesBack(k).name));
Img=mat2gray(imread(strcat([path,'Img\'],FilesImg(k).name)));
tic;
for iter=1:100
R=randperm(length(back)); %随机排列length(back) 把所有的点打乱
%%%%i-y,j-x
for cc=1:6 %6个参数 取前六个
ii=back(R(cc),1);%这六个点的横纵坐标
jj=back(R(cc),2);
H(cc,1)=Img(ii,jj);
xy=[jj^2,ii^2,ii*jj,jj,ii,1];
XY(cc,:)=xy;
end
A=XY\H;
% A=H\XY;
count1=0;
for cc1=1:length(back)
i=back(cc1,1);
j=back(cc1,2);
xy=[j^2,i^2,i*j,j,i,1];
h=xy*A;%拟合的高度
dd=abs(h-Img(i,j));
if dd<0.1
count1=count1+1;
end
end
count(iter)=count1;
AA(:,iter)=A;
disp(iter);
end
[~,ind]=max(count);
Af=AA(:,ind);
[m,n]=size(Img);
he=zeros(m,n);
for i=1:m
for j=1:n
xy=[j^2,i^2,i*j,j,i,1];
he(i,j)=xy*Af;
end
end
hh=Img-he;
% figure,mesh(he);%title('The Fitting Result');
% figure,mesh(Img);title('Img');
% figure,mesh(hh);title('correct');
Z=imcrop(hh,[1 1 1279 1791]);
% figure,imshow(hh);
Z1=imadjust(Z);
% imwrite(Z,[[path,'有噪\'],num2str(k+1000),'.png'],'png');
% imwrite(Z,'F:\大论文\校正.png');
% imwrite(Z1,'F:\大论文\校正增强3.png');
toc;
end
评论0