图像处理—红细胞计数(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);Number1subplot(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);Number2I6=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