1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
clc;clear all;close all;
info = dicominfo('C:\Users\dell\Documents\images\Ax DIFFUSION _converti 1_-OT--13');
X = dicomread(info);
Img=rgb2gray(X);
Img = double(Img(:,:,1));
NumIter = 250; %iterations
timestep=0.1; %time step
mu=0.1/timestep;% level set regularization term, please refer to "Chunming Li and et al. Level Set Evolution Without Re-initialization: A New Variational Formulation, CVPR 2005"
sigma = 5;%size of kernel
epsilon = 1;
c0 = 2; % the constant value
lambda1=1.0;%outer weight, please refer to "Chunming Li and et al, Minimization of Region-Scalable Fitting Energy for Image Segmentation, IEEE Trans. Image Processing, vol. 17 (10), pp. 1940-1949, 2008"
lambda2=1.0;%inner weight
%if lambda1>lambda2; tend to inflate
%if lambda1<lambda2; tend to deflate
nu = 0.001*255*255;%length term
alf = 20;%data term weight
figure,imagesc(uint8(Img),[0 255]),colormap(gray),axis off;axis equal
[Height Wide] = size(Img);
[xx yy] = meshgrid(1:Wide,1:Height);
phi = (sqrt(((xx - 40).^2 + (yy - 50).^2 )) - 15);
phi = sign(phi).*c0;
Ksigma=fspecial('gaussian',round(2*sigma)*2 + 1,sigma); % kernel
ONE=ones(size(Img));
KONE = imfilter(ONE,Ksigma,'replicate');
KI = imfilter(Img,Ksigma,'replicate');
KI2 = imfilter(Img.^2,Ksigma,'replicate');
figure,imagesc(uint8(Img),[0 255]),colormap(gray),axis off;axis equal,
hold on,[c,h] = contour(phi,[0 0],'r','linewidth',1); hold off
pause(0.5)
tic
for iter = 1:NumIter
phi =evolution_LGD(Img,phi,epsilon,Ksigma,KONE,KI,KI2,mu,nu,lambda1,lambda2,timestep,alf);
if(mod(iter,10) == 0)
figure(2),
imagesc(uint8(Img),[0 255]),colormap(gray),axis off;axis equal,title(num2str(iter))
hold on,[c,h] = contour(phi,[0 0],'r','linewidth',1); hold off
pause(0.01);
end
end
toc |
Partager