基于区域生长的图像分割算法
clear;clc
global R BW counter row col
%读取图像,初始G用于保存分割后的文件
nii = load_nii('a00d15.nii');
a = nii.img;
G = zeros(256,256,20);
for i=1:1:20
Ig = double(uint16(rot90(a(:,:,i))));
PQ = paddedsize(size(Ig));
D0 = 0.005 * PQ(1);
HBW = hp2filter('btw', PQ(1), PQ(2), D0, 1);
I = uint16(dftfilt(Ig, HBW)); %频域滤波
[row, col] = size(I);
figure, imshow(I, [])
level = graythresh(I);
BW = im2bw(I, level);
[y0, x0] = getpts;
x0 = int16(x0);
y0 = int16(y0);
counter = 0;
R = zeros(row,col);
R = uint8(R);
fsrRegiongrow(x0,y0,4);
figure,imshow(R)
M = logical(R);
Im = uint16(Ig .* M);
figure, imshow(Im,[])
figure,imshowpair(Im,Ig)
G(:,:,i) = Im;
end
%nii文件的保存
datatype = 4;
origin = [0 0 0];
g = make_nii(G, [], origin, datatype);
save_nii(g, 'newa00d15.nii')