一、简介

很多临床病症表现为白细胞数目增多、肿大或者白细胞中细胞核形状与数目发生变化,所以对白细胞数目和形状的研究有着重要意义。但是由于染色条件、涂片制备、图像来源、采样光照条件的差异以及细胞间相互重叠、粘连情况的发生,使得对白细胞的计数和识别等后续分析变得困难。为此,将粘连细胞分割成为单个细胞,就成为医学图像处理中必须解决的问题。本文基于MATLAB语言进行图像的处理以及分割,准确的处理图片,采用分水岭算法和阈值分割来实现,在现有研究基础之上,重点基于数字图像处理技术解决显微图像细胞计数这一思路,结合血液红细胞的主要特点,设定所要达到的目标和要求,设计和实现一个快速有效的血液显微图像红细胞数量自动统计系统。

1 课程设计任务
细胞数目检测在现实生活中的意义主要体现在医学上的作用,可通过细胞数目的检测来查看并估计病人或动物的血液中细胞数,如估测血液中红细胞、白细胞、血小板、淋巴细胞等细胞的数目,同时也可检测癌细胞的数目来查看医疗效果,根据这一系列的指标来对病人或动物进行治疗。
(1)对细胞图像进行预处理;
(2)进行图像分割;
(3)统计细胞数目;
(4)要求自行设计方案,编写代码实现上述功能,并设计细胞统计的软件界面。

2 设计原理
图像分割是根据医学图像的某个可以处理的特性(如光学密度值、灰度值、CT值、频谱等),利用医学图像区域内的相似性和区域间的差异性将医学图像分割成若干个互不连通区域的过程。
将图像表示为物理上有意义的连通区域的集合,也就是根据目标与背景的先验知识,对图像中的目标、背景进行标记、定位,然后将目标从背景或其他伪目标中分离出来。由于这些被分割的区域在某些特性上相近,因而,图像分割常用于模式识别与图像理解以及图像压缩与编码两大类不同的应用目的。

3 设计流程
流程:首先将图像依次转化为灰度图像,二值图像。然后对二值图像进行中值滤波,并删除小面积对象(删除白色底面里面的黑色小点)。 其次,将图像反相,并删除小面积对象(相当于删除了二值图像里面黑色底面的白色小点)。 再次,对图像进行形态学运算处理。最后,标记红细胞,用贴标签的方法统计红细胞数目,目标实现。

二、源代码

function varargout = untitled(varargin)
% UNTITLED M-file for untitled.fig
%      UNTITLED, by itself, creates a new UNTITLED or raises the existing
%      singleton*.
%
%      H = UNTITLED returns the handle to a new UNTITLED or the handle to
%      the existing singleton*.
%
%      UNTITLED('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in UNTITLED.M with the given input arguments.
%
%      UNTITLED('Property','Value',...) creates a new UNTITLED or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before untitled_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to untitled_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help untitled% Last Modified by GUIDE v2.5 02-Dec-2015 08:59:09% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @untitled_OpeningFcn, ...'gui_OutputFcn',  @untitled_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before untitled is made visible.
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to untitled (see VARARGIN)% Choose default command line output for untitled
handles.output = hObject;% Update handles structure
guidata(hObject, handles);% UIWAIT makes untitled wait for user response (see UIRESUME)
% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.
function varargout = untitled_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Get default command line output from handles structure
varargout{1} = handles.output;% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
axes(handles.axes1);
I=imread('blood.BMP');imshow(I);
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
axes(handles.axes2);
I=imread('blood.BMP');imshow(I);
gg=im2bw(I);
imshow(gg)
% hObject    handle to pushbutton4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
axes(handles.axes2);
I=imread('blood.BMP');
imshow(I);
gg=im2bw(I);
imshow(gg)
J=medfilt2(gg,[3 3]);
imshow(J);
% hObject    handle to pushbutton5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
axes(handles.axes2);
I=imread('blood.BMP');
imshow(I);
gg=im2bw(I);
imshow(gg)
J=medfilt2(gg,[3 3]);
imshow(J);
M=gg|J;
imshow(M);
% hObject    handle to pushbutton6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
axes(handles.axes2);
I=imread('blood.BMP');
imshow(I);
gg=im2bw(I);
imshow(gg)
J=medfilt2(gg,[3 3]);
imshow(J);
M=gg|J;
imshow(M);
R=~M;
imshow(R)
% hObject    handle to pushbutton7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
axes(handles.axes2);
I=imread('blood.BMP');
imshow(I);
gg=im2bw(I);
imshow(gg)
J=medfilt2(gg,[3 3]);
imshow(J);
M=gg|J;
imshow(M);
R=~M;
imshow(R)
F=bwfill(R,'holes');
imshow(F);

三、运行结果

【细胞分割】基于形态学算法实现红细胞计数matlab源码含 GUI相关推荐

  1. 【细胞分割】基于阙值+边缘+形态学+种子点图像分割matlab源码含 GUI

    一.简介 数学形态学操作可以分为二值形态学和灰度形态学,灰度形态学由二值形态学扩展而来.数学形态学有2个基本的运算,即腐蚀和膨胀,而腐蚀和膨胀通过结合又形成了开运算和闭运算. 开运算就是先腐蚀再膨胀, ...

  2. 【图像分割】基于FCM+KFCM MRI图像分割matlab源码含GUI

    一.简介 1 如何理解模糊聚类\ 事物间的界线,有些是明确的,有些则是模糊的.当聚类涉及到事物之间的模糊界线时,需要运用模糊聚类分析方法.\ 如何理解模糊聚类的"模糊"呢:假设有两 ...

  3. qr-rls算法matlab实现,【预测模型】基于RLS算法进行预测matlab源码

    一.简介 1 概述 递归最小二乘(RLS)算法是一种典型的数据处理方法,由著名学者高斯在1795年提出,高斯认为,根据所获得的观测数据来推断未知参数时,未知参数最可能的值是这样一个数据,即它使各项实际 ...

  4. 【TSP问题】基于灰狼算法求解旅行商问题matlab源码

    1 算法介绍 1.1 TSP介绍 "旅行商问题"(Traveling Salesman Problem,TSP)可简单描述为:一位销售商从n个城市中的某一城市出发,不重复地走完其余 ...

  5. 【图像配准】基于Horn-Schunck和Lucas-Kanade等光流场实现图像配准matlab源码含GUI界面

    光流法理论背景 1.什么是光流 光流(optical flow)是空间运动物体在观察成像平面上的像素运动的瞬时速度. 光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前 ...

  6. 【图像识别】基于 Haar分类器实现五官定位matlab源码含 GUI

    一.简介 1 Haar分类器的前世今生 人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的 ...

  7. 【身份证识别】基于形态学实现二代身份证号码识别系统matlab源码含GUI

    一.简介 首先从身份证图像上获取0-9和X共十一个号码字符的样本图像作为后续识别的字符库样本,其次将待测身份证图像进行去噪.灰度化.二值化.水平投影切割,垂直投影并切割,将待测身份证号码分割出来,然后 ...

  8. 【路径规划】基于萤火虫算法求解旅行商问题matlab源码

    1 简介 基于求解TSP问题,提出一种离散型萤火虫群优化(DGSO)算法,该算法结合TSP问题特点,给出一种有效编码和解码方法,并定义适合编码的个体间距离计算公式和编码更新公式.同时,为增强算法求解T ...

  9. 【路径规划】基于蚁群算法求解电动汽车充电站与换电站协调路径规划matlab源码含GUI

    1.蚁群算法(ant colony algorithm,ACA)起源和发展历程 Marco Dorigo等人在研究新型算法的过程中,发现蚁群在寻找食物时,通过分泌一种称为信息素的生物激素交流觅食信息从 ...

  10. 【图像处理】基于ART算法实现图像重建matlab源码

    1 简介 ART算法是一个不断迭代的图像重建方法,提高该算法的重建速度一直是研究的重要方面.针对ART算法简化权因子重建模型,提出了一种快速网格遍历算法,通过简单的加减法和比较运算,即可确定射束穿过的 ...

最新文章

  1. 电影天堂React Native 客户端
  2. TortoiseGit密钥的配置
  3. 华为ebgp_BGP选路原则之首选值(华为特性)
  4. Shell入门教程:命令替换 $() 和 ``
  5. 深入理解jvm运行时区域
  6. maven仓库没有fastdfs_client.jar的解决方案
  7. 多普达D700手机利用USB电缆与电脑连接上网方法
  8. 台式机dp接口_2K至4K显示器性价比线材选购攻略,毕亚兹 DP高清线入手
  9. 《Node Web开发》((美)David Herron)【摘要 书评 试读】- 京东图书
  10. cadnaa噪声分析测试软件,德国Cadna/A环境噪声模拟软件系统介绍
  11. 解读审计领域国内外资质认证CISA、ISO27001 Auditor
  12. ROS | 机器人操作系统简介
  13. 同一网络俩台计算机连接,两台电脑连接同一个wifi算是局域网么
  14. P01914100尹自杨
  15. 微信小程序----运动社区开发(一)
  16. android设置高度比例,android开发layout按比例布局(详解)
  17. Python抓图必学的8种方式!
  18. “BBEdit”代码与文本编辑功能有哪些?
  19. 10种宝宝取名的方法
  20. C++:小包包的玩具

热门文章

  1. 求两函数交点c语言,怎样求两个函数关系式的交点坐标
  2. Auto Layout 使用心得—— 实现三等分
  3. 硬件之OC、OD、推挽解释
  4. Java 表格文字垂直居中_itextpdf中表格中单元格的文字水平垂直居中的设置
  5. 几本开关电源书籍 pdf格式 (来源中国电子开发网)
  6. 凡泰极客:远程办公,你礼貌吗?
  7. win10隐藏网络计算机,Win10怎么连接隐藏的wifi?
  8. AUTOCAD——线宽设置
  9. FILD和FSTP转换成C语言
  10. 微信H5开发,怎样禁止手机横屏