matlab细胞计数并求目标区域求面积

简介: matlab细胞计数并求目标区域求面积

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


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

3fa02b4913ebfe5c5a09eb1aa299e632_b4a760dccb754fcfa1bd4526c6669b01.png


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


去除红色杂质细胞


在这里我们的思路是将原图转换到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)
    flagne
w_hsv(row(k),col(k),:) = Ecoli_hsv(row(k),col(k),:);
end


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

Ecoli_green = hsv2rgb(flagnew_hsv);


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

b89382bf6c293d4def45712b86900bce_ade331c3dbf2463b92f3f32e5e8b8fe0.png


图像的预处理操作

阈值操作:
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');


470d2f17e1d520da753e37429a5801a3_9668b544c1eb47838a12fa25aede8634.png

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

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;


65258f91d0310b5fd00365b8e9680ffc_c42a492ce6334addb8d13e9414030385.png


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


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

%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 mark
    text(centroid(i,1).Centroid(1,1)-15,centroid(i,1).Centroid(1,2)-15, num2str(i),'Color', 'r')
end


67614157f87910ec7e53950f9030365e_ed9f591898bb4331a43f4778700b5004.png


计算细胞的一些面积信息

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

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)');


e7f970ce50e0acd33a5784fde7be7510_ae78f4967b4246c09172b6f8ef8898cd.png


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

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


图片

57447db00aab8b87f76b4aa35c59b022_c731861c74e34e3fad95ef5a72e70911.png

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


相关文章
|
11月前
|
机器学习/深度学习 传感器 算法
基于干部-群众关系的教与学优化算法TLOCTO求解单目标优化问题附matlab代码
基于干部-群众关系的教与学优化算法TLOCTO求解单目标优化问题附matlab代码
|
3月前
|
算法 计算机视觉 异构计算
基于FPGA的图像差分运算及目标提取实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像差分运算及目标提取实现,包含testbench和MATLAB辅助验证程序
|
2月前
|
存储 算法
基于布谷鸟搜索的多目标优化matlab仿真
该程序运用布谷鸟搜索算法进行多目标优化,设置三个目标函数,生成三维优化曲面和收敛曲线。在MATLAB2022a中运行,显示了迭代过程中的优化结果图。算法基于布谷鸟的寄生繁殖和列维飞行行为,通过非支配排序和拥挤度计算处理多目标问题。迭代中,新解不断被评估、更新并加入帕累托前沿,最终输出帕累托前沿作为最优解集。
|
3月前
|
算法 SoC
基于多目标粒子群算法的配电网储能选址定容(含MATLAB程序)
基于多目标粒子群算法的配电网储能选址定容(含MATLAB程序)
配电网多目标pareto重构+智能算法matlab
配电网多目标pareto重构+智能算法matlab
|
3月前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
3月前
|
调度
Matlab|面向低碳经济运行目标的多微网能量互联优化调度
Matlab|面向低碳经济运行目标的多微网能量互联优化调度
|
11月前
|
机器学习/深度学习 传感器 算法
【智能优化算法】基于带电粒子优化算法ECPO求解单目标优化问题附matlab代码
【智能优化算法】基于带电粒子优化算法ECPO求解单目标优化问题附matlab代码
|
11月前
|
算法 计算机视觉
基于图像形态学处理的目标几何形状检测算法matlab仿真
基于图像形态学处理的目标几何形状检测算法matlab仿真
|
11月前
|
传感器 机器学习/深度学习 算法
【卫星轨道】基于matlab模拟卫星轨道和地面(空中)目标探测(双星不同轨)
【卫星轨道】基于matlab模拟卫星轨道和地面(空中)目标探测(双星不同轨)

热门文章

最新文章