📄 cv4.m
字号:
function cv4(name,s)
% three images are provided for test
img=imread(name); t=s; % example that CV model works well
U=img(:,:,1);
[nrow,ncol] =size(U);
ic=nrow/2;jc=ncol/2;r=15;
phi1= sdf2circle(nrow,ncol,ic,jc,r);
phi2= sdf2circle2(nrow,ncol,ic,jc,r);
phi3= sdf2circle3(nrow,ncol,ic,jc,r);
phi4= sdf2circle4(nrow,ncol,ic,jc,r);
delta_t = 0.1;
lambda_1=1;lambda_2=1;
nu=0;h = 1;epsilon=1;
mu = 0.01*255*255; % tune this parameter for different images
I=double(U);
imagesc(I,[0 255]);colormap(gray)
hold on;
plotLevelSet(phi1,0,'r');
plotLevelSet(phi2,0,'b');
plotLevelSet(phi3,0,'g');
plotLevelSet(phi4,0,'c');
numter =1;
for k=1:t,
phi1=evolution_cv(I, phi1, mu, nu, lambda_1, lambda_2, delta_t, epsilon, numter); % update level set function
phi2=evolution_cv(I, phi2, mu, nu, lambda_1, lambda_2, delta_t, epsilon, numter);
phi3=evolution_cv(I, phi3, mu, nu, lambda_1, lambda_2, delta_t, epsilon, numter);
phi4=evolution_cv(I, phi4, mu, nu, lambda_1, lambda_2, delta_t, epsilon, numter);
if mod(k,2)==0 %%%%%% 显示水平集变化过程
pause(.3);
imagesc(I,[0 255]);colormap(gray)
hold on;
plotLevelSet(phi1,0,'r');
plotLevelSet(phi2,0,'b');
plotLevelSet(phi3,0,'g');
plotLevelSet(phi4,0,'c');
end
end;
% figure;plotLevelSet(phi,0,'g');hold off;
figure;
subplot(2,2,1);
imshow(I,[]);title('原图像');
showtu4(phi1,phi2,phi3,phi4,nrow,ncol); %%% 显示分割前后的图像
showbianyuan4(phi1,phi2,phi3,phi4,nrow,ncol); %%%% 边缘提取
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -