主要内容

细胞计数

此示例显示如何使用基本形态运算符和BLOB分析的组合来从视频流中提取信息。在这种情况下,该示例计算每个视频帧中的大肠杆菌细菌的数量。注意,细胞具有不同的亮度,这使得分割的任务更具挑战性。

初始化

使用以下部分代码才能初始化所需的变量和对象。

视频= [432 528];

创建一个系统对象以从AVI文件读取视频。

filename =.'Ecolicells.avi';hvfr = VideoReader(文件名);

创建一个blobanalysis system对象,以查找视频中分段单元格的质心。

hblob = Vision.BlobanAlysis(......'AreaOutputport', 错误的,......“BoundingBoxOutputPort”, 错误的,......'outputdatatype''单身的'......“MinimumBlobArea”7,......'maintureblobarea'300,......“MaximumCount”, 1500);%确认acktext = ['数据集提供了Jonathan Young和Michael Elowitz的礼貌,'......加州理工学院];

创建一个系统对象以显示视频。

hvideo = Vision.videoplayer;hvideo.name =.'结果';hvideo.position(1)= round(hvideo.position(1));hvideo.position(2)= round(hvideo.position(2));hvideo.position([4 3])= 30 +视频化;

流处理循环

创建一个处理循环以计算输入视频中的单元格数。此循环使用上面实例化的系统对象。

framecount = int16(1);尽管Hasfame(HVFR)%读取输入视频帧image = im2gray(im2single(ReadFrame(HVFR)));%应用形态扩张和图像算术的组合%操作以消除不均匀的照明,并强调单元格之间的边界。Y1 = 2 *图像 -  Imdilate(图像,光线('正方形'7));日元(y1 < 0) = 0;y1 (> 1) = 1;Y2 = imdilate(y1, strel('正方形',7)) -  Y1;th =多线程(Y2);%用大津法确定阈值Y3 =(Y2 <= TH * 0.7);将图像二值化。Centroid =步骤(HBLOB,Y3);%计算质心numBlobs =大小(重心,1);%和细胞数。%显示帧数和单元格数。frameblobtxt = sprintf('帧%d,计数%d'frameCount numBlobs);image = insertText(image, [1 1], frameBlobTxt,......'字体大小'16,'Boxopacity',0,'textcolor''白色的');image =插入文本(图像,[1尺寸(图像,1)],acktext,......'字体大小'10,“AnchorPoint”'Leftbottom'......'Boxopacity',0,'textcolor''白色的');%显示视频image_out = InsertMarker(图像,质心,‘*’“颜色”'绿色');步骤(hvideo,image_out);framecount = framecount + 1;结尾

图结果包含轴和其他对象的UiflowContainer,Uimenu,UIToolbar类型。轴包含类型图像的对象。

总结

在结果窗口中,显示了原始视频,绿色标记表示细胞的质心位置。帧号和单元格数显示在左上角。

数据集学分

来自加州理工学院的Jonathan Young和Michael Elowitz提供了该示例的数据。它与许可一起使用。有关此数据的其他信息,请参阅

N. Rosenfeld,J. Young,U. Alon,P. Swain和M.B.Elowitz,“单细胞水平的基因调节”,Science 2005,Vol。307,pp 1962-1965。