資源簡介
采用半隱式方“C-V”模型(Active contour without edge)案實現變分水平集圖像分割方法中的
代碼片段和文件信息
%%%?本程序采用半隱式方案實現變分水平集圖像分割方法中的
%%%?“C-V”模型(Active?contour?without?edge)
clear?all;
close?all;
clc;
Img=imread(‘brain.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/
評論
共有 條評論