資源簡介
此代碼中m文件內容為對細胞的圖像分割,包括對圖像前期預處理,分割出細胞核,并在后期對細胞進行計數,對黏連的細胞有一定的分割功能,對于圖像處理相關初學者有一定幫助
代碼片段和文件信息
Image?=?imread(‘spots.tif‘);
figureimshow(Image);
title(‘原圖‘);
Theshold?=?graythresh(Image);%取得圖象的全局域值
Image_BW?=?im2bw(ImageTheshold);%二值化圖象
figureimshow(Image_BW);
title(‘初次二值化圖像‘);
%第三步二值化圖像進行
Image_BW_medfilt=?medfilt2(Image_BW[13?13]);
figureimshow(Image_BW_medfilt);
title(‘中值濾波后的二值化圖像‘);
%第四步:通過“初次二值化圖像”與“中值濾波后的二值化圖像”進行“或”運算優化圖像效果
Optimized_Image_BW?=?Image_BW_medfilt|Image_BW;
figureimshow(Optimized_Image_BW);
title(‘進行“或”運算優化圖像效果‘);
%第五步:優化后二值化圖象取反,保證:‘1’-〉‘白色’,‘0’-〉‘黑色’
%方便下面的操作
Reverse_Image_BW?=?~Optimized_Image_BW;
figureimshow(Reverse_Image_BW);
title(‘優化后二值化圖象取反‘);
%第六步:填充二進制圖像的背景色,去掉細胞內的黑色空隙
Filled_Image_BW?=?bwfill(Reverse_Image_BW‘holes‘);
figure?imshow(Filled_Image_BW);
title(‘已填充背景色的二進制圖像‘);
%第七步:對圖像進行開運算,去掉細胞與細胞之間相粘連的部分
SE?=?strel(‘disk‘4);
Open_Image_BW?=?imopen(Filled_Image_BWSE);
figure?imshow(Open_Image_BW);
title(‘開運算后的圖像‘);
%-----------------------------------------------
%-------------開始計算細胞數--------------------
%-----------------------------------------------
[LabelNumber]=bwlabel(Open_Image_BW8)%初步取得細胞個數
Array?=?bwlabel(Open_Image_BW8);%取得貼標簽處理后的圖像
Sum?=?[];
%依次統計貼標簽后數組
for?i=1:Number
[rc]?=?find(Array==i);%獲取相同標簽號的位置,將位置信息存入[rc]
rc?=?[r?c];
Num?=?length(rc);%取得vc數組的元素的個數
Sum([i])=Num;%將元素個數存入Sum數組
end
Sum
N?=?0;
%假如Sum數組中的元素大于了1500,表示有兩個細胞相連,像素點較多,即分為兩個細胞數
for?i=1:length(Sum)
if(Sum([i]))?>?500
N?=?N+1;
end
end
%-------------------------------------------
%------------------統計最終細胞數-----------
%-------------------------------------------
Number?=?Number+N
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1918??2015-10-21?20:58??celll\cells.m
?????目錄??????????0??2018-02-05?13:25??celll
-----------?---------??----------?-----??----
?????????????????1918????????????????????2
評論
共有 條評論