植物细胞分割的源代码

来源:互联网 发布:杭州淘宝拍摄基地在哪 编辑:程序博客网 时间:2024/04/30 11:36

       细胞分割的源代码

%function seg0(img)
clc;
close all;
tic;
Files = dir(strcat('E:\细胞原始图\7-24帧原始图\','*.tif'));
for i = 1:33
IM = imread(strcat('E:\细胞原始图\7-24帧原始图\',Files(i).name));
if size(IM, 3) == 1
    gray = IM;
elseif size(IM, 3) == 3
    gray = rgb2gray(IM);
else
    gray = IM(:, :, 1);
end
%subplot(2,3,1);imshow(gray);title('Original ');
gray_med = medfilt2(gray, [5, 5]);
%subplot(2,3,2);imshow(gray_med);title('median filter ');
se1 = strel('diamond', 1);
gray_med = imclose(gray_med, se1); 
%figrue;imshow(gray_med);title('imclose');
tmp = filter2(fspecial('average', 3), gray_med);
%subplot(2,3,3);imshow(tmp,[]);title('mean filter');
bw = tmp > 50;  
%subplot(2,3,4);imshow(bw,[]);title('threshold ');
bw = bwareaopen(bw, 100);
%subplot(2,3,5);imshow(bw,[]);title('bwareaopen');
hole = imfill(bw, 'holes') - bw;
%figure;imshow(hole,[]);title('imfill');
hole = hole - bwareaopen(hole, 50); 
%figure;imshow(bw,[]);title('hole2');
bw = bw + hole;
dist = 255 - bwdist(bw);
mask = imextendedmin(dist, 2);  
dist2 = imimposemin(dist, mask);
bd = watershed(dist2) == 0;
bd = bwareaopen(bd, 500);
bd = imdilate(bd, se1);
[m n] = size(bd);
bd([1 m], :) = 0;
bd(:, [1 n]) = 0;
bd = watershed(bd) == 0;
%subplot(2,3,6);imshow(bd);title('result');
%figure;imshow(bd);
%title('result');
%figure;imshow(uint8(uint8(gray) + uint8(bd * 255)));title ('add');
%[z1,num1]=bwlabel(1-bd);
%D1=regionprops(z1,'area','centroid','EquivDiameter');
%D1(1)=[];
%c1_cen=cat(1,D1.Centroid); 
%figure,imshow(bd);title ('number ');
%hold on
%for i0=1:length(D1)
   % text(c1_cen(i0,1)-5,c1_cen(i0,2),num2str(i0),'Color','g','FontSize',12);%在第一帧各个区域标号
%     plot(c1_cen(i0,1),c1_cen(i0,2),'*','MarkerSize',10);
%end
path = strcat('E:\细胞原始图\seg\',Files(i).name);

imwrite(bd,path);

toc

end

原创粉丝点击