主要内容

细胞计数

这个例子展示了如何使用一个组合的基本形态运营商和blob分析从视频流中提取信息。在这种情况下,示例计算大肠杆菌的数量在每个视频帧。注意细胞是不同的亮度,使分割更具挑战性的任务。

初始化

使用这些下一节的代码来初始化所需的变量和对象。

VideoSize = (432 - 528);

创建一个系统对象读取视频avi文件。

文件名=“ecolicells.avi”;hvfr = VideoReader(文件名);

创建一个BlobAnalysis系统对象的质心分割细胞视频。

hblob = vision.BlobAnalysis (“AreaOutputPort”假的,“BoundingBoxOutputPort”假的,“OutputDataType”,“单一”,“MinimumBlobArea”7“MaximumBlobArea”,300,“MaximumCount”,1500);%确认ackText = [数据集由乔纳森年轻Elowitz和迈克尔的加州理工学院的];

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

hVideo = vision.VideoPlayer;hVideo。Name =“结果”;hVideo.Position(1) =圆(hVideo.Position (1));hVideo.Position(2) =圆(hVideo.Position (2));hVideo。位置(3 [4])= 30 + VideoSize;

流处理循环

创建一个处理循环计数细胞的数量在输入视频。这个循环使用上面的系统对象实例化。

frameCount = int16 (1);hasFrame (hvfr)%读取输入视频帧形象= im2gray (im2single (readFrame (hvfr)));%应用形态学膨胀和图像的组合算法%操作删除不均匀照明和强调%的细胞之间的界限。日元= 2 *图像- imdilate(形象,strel (“广场”7));日元(y1 < 0) = 0;日元(y1 > 1) = 1;y2 = imdilate (strel日元(“广场”7)- y1;th = multithresh (y2);%确定使用大津阈值的方法y3 = (y2 < = th * 0.7);% Binarize图像。重心=步骤(hblob、y3);%计算质心numBlobs =大小(重心,1);%和细胞的数量。%显示的帧数和细胞。frameBlobTxt = sprintf (“% d帧数% d 'frameCount numBlobs);形象= insertText (frameBlobTxt形象,[1],“字形大小”,16岁,“BoxOpacity”0,“输入TextColor”,“白色”);形象= insertText(图像,大小(图片1)[1],ackText,“字形大小”10“AnchorPoint”,“LeftBottom”,“BoxOpacity”0,“输入TextColor”,“白色”);%显示视频image_out = insertMarker(形象,重心,‘*’,“颜色”,“绿色”);步骤(hVideo image_out);frameCount = frameCount + 1;暂停(1);结束

图结果包含一个坐标轴对象和其他对象类型的uiflowcontainer, uimenu uitoolbar。坐标轴对象包含一个类型的对象的形象。

总结

显示在结果窗口中原始视频和绿色标记表明细胞的重心位置。帧数和细胞的数量显示在左上角。

数据集信用

这个例子的数据集是由乔纳森来自加州理工学院的年轻Elowitz和迈克尔。它是使用许可。关于这些数据的附加信息,明白了

n·罗森菲尔德,j .年轻,阿龙,p .情郎和M.B. Elowitz“基因调控在单细胞水平”,科学2005年,307卷,第1962 - 1965页。