今天的任务是教会大家利用Matlab对大肠杆菌细胞进行计数这是一个非常基础的图像任务,利用Matlab能够快速的实现。

让我们,先看看我们今天要处理的图像长什么样子:

看上去,很乱很复杂哈,有没有!其中绿色部分为大肠杆菌,红色部分为其他杂质。

去除红色杂质细胞

在这里我们的思路是将原图转换到HSV空间,新建一个黑色背景,将绿色的大肠杆菌复制到黑色背景里面。

Ecoli_hsv = rgb2hsv(Ecoli);%转到hsv空间
% 创建一个黑色的背景
flagnew = zeros(size(Ecoli));

在图中找寻绿色的像素

%在图中找寻绿色的像素
[row, col] = ind2sub(size(Ecoli_hsv),find(Ecoli_hsv(:,:,1)>0.12...& Ecoli_hsv(:,:,1)< 0.6 & Ecoli_hsv(:,:,2)>0.16 & Ecoli_hsv(:,:,3)>0.18));

遍历循环到黑色背景中

%遍历循环到黑色背景中
for k = 1 : length(row)flagnew_hsv(row(k),col(k),:) = Ecoli_hsv(row(k),col(k),:);
end

最重要的是将图像从hsv转到rgb空间:

Ecoli_green = hsv2rgb(flagnew_hsv);

看看这提取效果,我都要啧啧称赞

图像的预处理操作

阈值操作:
level = graythresh(Ecoli_green);
disp(level)转到灰色空间并二值化:
Ecoli_green_gray=rgb2gray(Ecoli_green)
BW_Ecoli_green = imbinarize(Ecoli_green_gray,level);
图片利用bwareaopen函数删除小于指定面积的连通域,用来剔除无用的细胞:
BW_Ecoli_green = bwareaopen(BW_Ecoli_green,15);
imshow(BW_Ecoli_green)
图片

利用 bwconncomp - 查找二值图像中的连通分量,默认对二维使用 8连通,对三维使用 26 连通。

colorc = bwconncomp(BW_Ecoli_green,8)

给你的细胞染色看看:

labeled = labelmatrix(colorc );
RGB_Ecoli = label2rgb(labeled,'spring','c','shuffle');

边缘检测,与叠加掩膜操作

Ecoli_green_edge=edge(BW_Ecoli_green,'Canny',0.5);
double_BW_Ecoli_green=im2double(BW_Ecoli_green)
double_Ecoli_green_edge=im2double(Ecoli_green_edge)
B=labeloverlay(double_Ecoli_green_edge,double_BW_Ecoli_green)
hold on;

给你的图像进行一些神操作

把上图染色后的图像进行框选:

%for loop
for k=1:Num_obj[row,cum] = find(L == k);rbar = mean(row);cbar = mean(cum);plot(cbar,rbar,'marker','S','markeredgecolor','m','markersize',25,'LineWidth',2);
end
图片

将计数标在细胞旁边上:

status=regionprops(L,'BoundingBox');
centroid = regionprops(L,'Centroid');
figure();
imshow(L);
for i=1:Num_obj%Number marktext(centroid(i,1).Centroid(1,1)-15,centroid(i,1).Centroid(1,2)-15, num2str(i),'Color', 'r')
end

计算细胞的一些面积信息
希望能够得到的信息自动弹出计算了多少个细胞:

box_1 = dialog('Name','Number of targets','position',[580 300 220 100]);
uicontrol('Style','text','units','pixels','position',[45 40 120 50],'fontsize',15,'parent',box_1,'string',strcat("The number of cell:",num2str(Num_obj)));
uicontrol('units','pixels','position',[80 10 50 20],'fontsize',15,'parent',box_1,'string','OK','callback','delete(gcf)');

82个细胞,如果想每个都各个统计太费时间啦。我们试着利用在命令行输入需要计算那个细胞的面积和其他信息就算哪个,不就可以了图片

input_num=int32(input("please input number:\n"))if input_num>Num_obj ||input_num<=0errordlg("Please enter the correct integer!")else input_num<=Num_obj ||input_num>0image_part=(copy_mark_L==input_num)part=regionprops(image_part,'Area')%Please note: the unit is pixel squaredisp(part.Area)end

图片

我们就可以得到编号为1的像素面积值了。

matlab细胞计数并求目标区域求面积相关推荐

  1. matlab单个像素面积,我用MATLAB计算出了图像目标区域的像素点个数,请问知道了目标区域的像素点怎么计算目标区域的面积?...

    满意答案 下面是一个简单的计算轮廓包含起来的像素点的个数的程序: %% step 1 clear all clc I=imread('test.bmp');%读入图片 bwI=im2bw(I,0.5) ...

  2. MATLAB:regionprops函数求取最大连通域面积

    MATLAB:regionprops函数求取最大连通域面积 regionprops统计被标记的区域的面积分布,显示区域总数. 函数regionprops语法规则为:STATS = regionprop ...

  3. matlab中p是什意思,如下的用matlab进行编程的勒让德函数,求解释,看不懂什么意思。如:p和t分别代表什么?p(1,:)是什么意思...

    答:找本数学物理方法的书,弄好两件事: 1.勒让德函数与缔合勒让德函数,MATLAB的legendre函数是后者. 2.顺便找一下勒让德函数的递推公式. 我刚才粗看了一下,可能P(2,:),t(2,: ...

  4. MATLAB新手简明使用教程(七)——使用matlab建立多项式以及求导,商求导乘积求导等——新手来看,保证看懂。

    前期回顾 上一期中,我们学了下面的知识: 定积分的基本概念和一些简单的几何意义. 使用 int 函数计算不定积分. 使用 int 函数计算定积分. 本期内容 本期我打算给大家介绍一下使用matlab对 ...

  5. matlab优化问题约束不取等号6,matlab中fmincon函数中不含等号的边界值怎么设置?,matlab中的fmincon函数一直求不出为什么...

    导航:网站首页 > matlab中fmincon函数中不含等号的边界值怎么设置?,matlab中的fmincon函数一直求不出为什么 matlab中fmincon函数中不含等号的边界值怎么设置? ...

  6. 给定一个二维的 0-1 矩阵,其中 0 表示海洋,1 表示陆地。单独的或相邻的陆地可以形成岛屿,每个格子只与其上下左右四个格子相邻。求最大的岛屿面积。

    给定一个二维的 0-1 矩阵,其中 0 表示海洋,1 表示陆地.单独的或相邻的陆地可以形成岛屿,每个格子只与其上下左右四个格子相邻.求最大的岛屿面积. function func(arr) {/*** ...

  7. 设计立方体类(求出立方体的面积和体积 分别用全局函数和成员函数判断两个立方体是否相等)

    练习案例1:设计立方体类 设计立方体类(Cube) 求出立方体的面积和体积 分别用全局函数和成员函数判断两个立方体是否相等. #include <iostream> using names ...

  8. 5.2 matlab多项式计算(多项式的四则运算、求导、求值、求根)

    1.多项式的表示 在MATLAB中创建多项式向量时,注意三点: (1)多项式系数向量的顺序是从高到低. (2)多项式系数向量包含0次项系数,所以其长度为多项式最高次数加1. (3)如果有的项没有,系数 ...

  9. 两条曲线所围成的面积_三个视频搞定:求曲边梯形面积的思想、微积分基本定理及其几何意义、微积分理论的可视化解读、...

    ● 本文适合高二下学期.高三一轮复习的同学阅读.先看视频再看文字,看视频时注意利用暂停,想清楚每一步变形的依据. 01 曲边梯形的面积.微积分基本定理的内容 视频讲解 1.曲边梯形的概念及面积求法 ( ...

  10. python计算多边形面积_Python求凸包及多边形面积教程

    一般有两种算法来计算平面上给定n个点的凸包:Graham扫描法(Graham's scan),时间复杂度为O(nlgn):Jarvis步进法(Jarvis march),时间复杂度为O(nh),其中h ...

最新文章

  1. Linux管道的原子性,管道机制
  2. 开发日记-20190903 关键词 C程序gcc编译过程
  3. 叶明回归IBM 负责大中华区合作伙伴业务
  4. Unity c# 状态机的简单入门
  5. JQuery学习笔记12——GET请求和POST请求
  6. 电机的入门之路系列2--电机驱动芯片2003的用法
  7. Theano 中文文档 0.9 - 4. 要求
  8. OpenXava 4.5支持JPA继承映射和自动化业务逻辑
  9. 普通人,如何实现年收入百万?
  10. C#字符串转Json,Json解析
  11. 点云定义、PCL数据类型和点云处理方式
  12. java a标签实现文件下载_a标签实现文件下载 避免直接打开问题
  13. ARM体系结构与编程笔记
  14. win7 x64部署和串口调试虚拟驱动toaster
  15. Lonlife-ACM 1010 - Alarm(找规律+素数打表)
  16. 不登高山,不知天之高也;不临深溪,不知地之厚也
  17. mysql存储过程中使用select count(*) into 变量名 from +表+ where条件的用法
  18. 天融信上网行为管理如何做短信验证?
  19. fckeditor是什么咚咚?
  20. NRF52832与NRF52840的性能区别

热门文章

  1. dev 居中_css的div垂直居中的方法,百分比div垂直居中
  2. 【算法笔记】树形DP算法总结详解
  3. MariaDB数据库导出导入
  4. 以太坊(ethereum)开发DApp应用的入门区块链技术教程
  5. 个人学习笔记附Markdown格式下载
  6. 计算机网络知识总结(韩立刚老师视频)
  7. 155页4万字智慧交通电子警察系统平台解决方案
  8. 软件设计与体系结构:设计过程
  9. Tomcat架构解析之Digester
  10. Java实验14 计算多个二维图形的面积之和