本文共 1323 字,大约阅读时间需要 4 分钟。
图像处理—红细胞计数(Matlab)
红细胞计数
处理过程
使用全局阈值二值化图像,仅使白细胞可以在二值图像中显示;
调整二值化图像阈值,使白细胞和红细胞都可在二值图像中显示出来;
将两图像进行减操作,从第二幅图像中去除白细胞;
对去除白细胞的二值图像进行中值滤波,删除小面积对象,填充空洞等操作;
标记最后所得二值图像中的连通区域,并获取区域个数。
处理结果
最后结果为101。
处理效果不太理想。
程序清单
clear;
close all;
Image = imread('123.jpg');
subplot(3,2,1);
imshow(Image);
title('原图');
Image=rgb2gray(Image);%取灰度图像
subplot(3,2,2);
imshow(Image);
title('灰度图');
Theshold = graythresh(Image);%取得图象的全局域值
Image_BW = im2bw(Image,1.3*Theshold);%二值化图象
I=im2bw(Image,Theshold);
Reverse_Image_BW22=~Image_BW;%反相
subplot(3,2,3);
imshow(Image_BW);
title('初次二值化图像');
%Image_BW_medfilt= medfilt2(Image_BW,[13 13]);%中值滤波
Image_BW_medfilt=bwareaopen(Reverse_Image_BW22,50,4);
subplot(3,2,4);
imshow(~Image_BW_medfilt);
title('删除小面积对象后的二值化图像');
Reverse_Image_BW = ~Image_BW_medfilt;
I1=~Reverse_Image_BW-~I;
I2=imfill(I1,'holes');
subplot(3,2,5);
imshow(I);
title('白细胞');
I3=imclearborder(I2);
[Label, Number1]=bwlabel(I3,8);
Number1
subplot(3,2,6);imshow(~I1);title('相减图像');
I4=bwareaopen(I1,100,4);
I5=imfill(I4,'holes');
figure;
subplot(221);imshow(~I4);title('删除小面积对象');
subplot(222);imshow(~I5);title('空洞填充');
[Label, Number2]=bwlabel(I5,8);
Number2
I6=medfilt2(I5,[10 10]);
subplot(223);imshow(~I6);title('中值滤波后图像')
I7=bwareaopen(I6,100,4);
subplot(224);imshow(~I7);title('第三次删除小面积对象')
[Label, Number3]=bwlabel(I7,8);
Number3
转载地址:http://chjdv.baihongyu.com/