- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字图像处理大作业
题目:红细胞数目检测
组员:陈宏尘
游晓康
陈林禾
张红双一、主要内容
1、现实意义
2、设计步骤
3、算法分析
4、实例分析
二、现实意义:
细胞数目检测在现实生活中的意义主要体现在医学上的作用,可通过细胞数目的检测来查看并估计病人或动物的血液中细胞数,如估测血液中红细胞、白细胞、血小板、淋巴细胞等细胞的数目,同时也可检测癌细胞的数目来查看医疗效果,根据这一系列的指标来对病人或动物进行治疗,是具有极其重要的现实作用的。
三、设计步骤:
1、读入红细胞图片
2、中值滤波
3、闭运算
4、开运算
5、贴标签
6、得到细胞个数
四、算法分析
(1)中值滤波
利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。
而且中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。能更好的区别开每一个红细胞。
(2)开运算 先腐蚀后膨胀的过程称为开运算。用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。(消除细胞碎片)
(3)闭运算 先膨胀后腐蚀的过程称为闭运算。用来填充物体内细 小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。
(3)贴标签
bwlabel函数是用来标记二维的二值图像中的connected components的,简言之,就是黑背景下面有多少白的块(连通组件?真别扭),反正就是从黑背景甄别白块块的。就这么理解吧。
五、实例分析:
第一步:读取原图,并显示
Image = imread('红细胞5.jpg');
figure,imshow(Image);
title(' 【原图】');
第二步:进行二值化
Theshold = graythresh(Image);%取得图象的全局域值
Image_BW = im2bw(Image,Theshold);%二值化图象
figure,imshow(Image_BW);
title(' 【初次二值化图像】');
第三步:进行二值化图像
Image_BW_medfilt= medfilt2(Image_BW,[13 13]);
figure,imshow(Image_BW_medfilt);
title(' 【中值滤波后的二值化图像】');
第四步:通过“初次二值化图像”与“中值滤波后的二值化图像”进行“或”运算优化图像效果
Optimized_Image_BW = Image_BW_medfilt|Image_BW;
figure,imshow(Optimized_Image_BW);
title(' 【进行“或”运算优化图像效果】');
第五步:优化后二值化图象取反,保证:'1'为'白色',0'为'黑色'
Reverse_Image_BW = ~Optimized_Image_BW;
figure,imshow(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_BW,SE);
figure, imshow(Open_Image_BW);
title(' 【开运算后的图像】');
第八步:开始计算细胞数
[Label Number]=bwlabel(Open_Image_BW,8)%初步取得细胞个数
Array = bwlabel(Open_Image_BW,8);%取得贴标签处理后的图像
Sum = [];
%依次统计贴标签后数组
for i=1:Number
[r,c] = find(Array==i);%获取相同标签号的位置,将位置信息存入[r,c]
rc = [r c];
Num = length(rc);%取得vc数组的元素的个数
Sum([i])=Num;%将元素个数存入Sum数组
end
Sum
N = 0;
-----假如Sum数组中的元素大于了1
文档评论(0)