• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: Matlab
  • 标签:

资源简介

实现变分水平集图像分割方法中的 “C-V”模型(Active contour without edge)

资源截图

代码片段和文件信息

%%% 本程序采用半隐式方案实现变分水平集图像分割方法中的
%%% “C-V”模型(Active contour without edge)
clear all;
close all;
clc;

Img=imread(‘3-1.bmp‘);
Img=double(rgb2gray(Img));
% Img=imresize(Img[8080]);
figure(1); imshow(uint8(Img));

[nxny]=size(Img);
%%- 将初始曲线C设置为圆
ic=floor(nx/2);         % 计算初始圆形曲线的圆心
jc=floor(ny/2);
r=ic/3;                 % 圆形曲线的半径

%%- 初始化u为距离函数
u = zeros([nxny]);     
for i=1:nx
    for j=1:ny
        u(ij)= r-sqrt((i-ic).^2+(j-jc).^2);
    end
end
%%- 将初始圆形曲线叠加在原始图片上
figure(2);              
imshow(uint8(Img));
hold on;
[ch] = contour(u[0 0]‘r‘);


%%- 初始化参数
epsilon=1.0;            % Heaviside函数参数设置
nu=250;                 
delta_t=0.1;

nn=0;
%%- 迭代计算开始
for n=1:1000
    %%- 计算正则化的Heavside函数
    H_u = 0.5*(1+(2/pi)*atan(u/epsilon));

    %%- 由当前u计算参数c1和c2
    c1=sum(sum(H_u.*Img))/sum(sum(H_u));
    c2=sum(sum((1-H_u).*Img))/sum(sum(1-H_u));

    %%- 由当前c1和c2更新u
    delta_H = (1/p

评论

共有 条评论

相关资源