【图像检测】基于形态学实现红细胞的识别和放大后的边缘检测matlab代码

171 阅读2分钟

1 简介

根据微生物显微图像中微生物形态各异,容易重叠,边缘灰度接近等特性,利用数学形态学方法的思想,用灰度形态学作初步边缘处理,用二值形态学的方法进行边缘修复.并对原始图像用其它微分算子进行边缘检测,实验结果表明基于数学形态学的边缘提取算法对于微生物显微图像边缘检测有很好的效果,能够满足后期识别处理的需求.

2 部分代码

%%
%--------第一部分:对血液图片进行处理,提取图片中的红细胞的形态特征,实现红细胞计数--------%
close all;
clear all;
clc;
I = imread('bloodtest1.jpg');%读取血液图像

%将彩图转为灰度图
I = rgb2gray(I);        
figure(1);
imshow(I);
title('灰度处理后的细胞图像');

%平滑处理
h = fspecial('average',3); %3*3均值滤波模板
I = imfilter(I, h, 'replicate'); %重复填充边界
figure(2);
imshow(I);
title('平滑处理后的细胞图像');

%二值化处理
t = graythresh(I);        %计算阈值t
C = im2bw(I,t);           %根据阈值二值化图像
figure(3);
subplot(1,3,1),imshow(C);title('二值化处理后的细胞图像');


%转换为灰度图
if dim>1
   imgsrc = rgb2gray(imgsrc);
end
sigma = 1;
gausFilter = fspecial('gaussian', [3,3], sigma);
img= imfilter(imgsrc, gausFilter, 'replicate');

%显示Grayscale三维图像
zz = double(img);
[xx, yy] = meshgrid(1:x, 1:y);
figure()
   surf(yy, xx, zz);
   xlabel('y');
   ylabel('x');
   zlabel('Grayscale');
   title('所截取的单个红细胞轮廓边缘的三维示意图');
   axis tight 

%边缘检测
BW = im2bw(img,0.4);
IBW = ~BW;
F1 = imfill(IBW,'holes');
SE = ones(3);
F2 = imdilate(F1,SE,'same');
BW2 = bwperim(F2);

%显示所截取疑似红细胞的轮廓边缘
figure()    
   subplot(2,2,1);
       imshow(imgsrc);
       title('灰度处理后的所截取的疑似红细胞图像');
   subplot(2,2,2);
       imshow(img);%高斯滤波后
       title('高斯滤波后的截取细胞图像');
   subplot(2,2,3);
       ed = edge(img, 'canny'0.5); %Matlab自带的canny边缘检测函数
       imshow(ed);
       title('Canny后的截取细胞图像');
   subplot(2,2,4);
       imshow(BW2);%边缘轮廓
       title('截取细胞图像的边缘检测');
       

3 仿真结果

4 参考文献

[1]于子翊, & 李晓娟. (2006). 基于数学形态学的显微图像边缘检测技术分析. 计算机技术与发展, 16(2), 3.

**部分理论引用网络文献,若有侵权联系博主删除。**