细胞计数
这个例子展示了如何使用一个组合的基本形态运营商和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);结束
总结
显示在结果窗口中原始视频和绿色标记表明细胞的重心位置。帧数和细胞的数量显示在左上角。
数据集信用
这个例子的数据集是由乔纳森来自加州理工学院的年轻Elowitz和迈克尔。它是使用许可。关于这些数据的附加信息,明白了
n·罗森菲尔德,j .年轻,阿龙,p .情郎和M.B. Elowitz“基因调控在单细胞水平”,科学2005年,307卷,第1962 - 1965页。