主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

細胞のカウント

この例では,基本的なモルフォロジー演算子とブロブ解析を組み合わせて使用して,ビデオストリームから情報を抽出する方法を説明します。ここでは各ビデオフレームに含まれる大腸菌の数をカウントします。細胞の明るさが均一でないためにセグメンテーションのタスクが困難になる点に注意してください。

初期化

以下に挙げるコードセクションを使用して必要な変数とオブジェクトを初期化します。

VideoSize = [432 528];

aviファイルからビデオを読み取る系统对象を作成します。

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

ビデオ内でセグメント化された細胞の重心を見つけるBlobAnalysisの系统对象を作成します。

hblob =愿景。BlobAnalysis (...“AreaOutputPort”假的,...“BoundingBoxOutputPort”假的,...“OutputDataType”“单一”...“MinimumBlobArea”7...“MaximumBlobArea”, 300,...“MaximumCount”, 1500);%确认ackText = [数据集由乔纳森·杨和迈克尔·埃洛维茨提供...加州理工学院];

ビデオを表示する系统对象を作成します。

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

ストリーム処理ループ

入力ビデオ内の細胞の数をカウントする処理ループを作成します。このループは上記でインスタンス化した系统对象を使用します。

frameCount = int16 (1);hasFrame (hvfr)%读取输入视频帧形象= im2gray (im2single (readFrame (hvfr)));结合形态学扩张和图像算法%的操作,以消除不均匀的照度和强调单元格之间的边界。Y1 = 2*image - imdilate(image, strel(“广场”7));日元(y1 < 0) = 0;y1 (> 1) = 1;Y2 = imdilate(y1, strel(“广场”7) - y1;th = multithresh (y2);%用大津法确定阈值Y3 = (y2 <= th*0.7); / /将图像二值化。质心= step(hblob, y3);%计算质心numBlobs =大小(重心,1);%和单元格数。%显示帧和单元格的数量。frameBlobTxt = sprintf ('帧%d,计数%d'frameCount numBlobs);image = insertText(image, [1 1], frameBlobTxt,...“字形大小”, 16岁,“BoxOpacity”0,“输入TextColor”“白色”);image = insertText(image, [1 size(image,1)], ackText,...“字形大小”10“AnchorPoint”“LeftBottom”...“BoxOpacity”0,“输入TextColor”“白色”);%显示视频image_out = insertMarker(图像,质心,‘*’“颜色”“绿色”);步骤(hVideo image_out);frameecount = frameecount + 1;结束

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

まとめ

[结果]ウィンドウに元のビデオが表示されます。緑のマーカーは細胞の重心の位置を示します。左上隅にはフレーム番号とセルの数が表示されます。

データセットの著作権について

この例で使用したデータセットは,加州理工学院的の乔纳森年轻および迈克尔Elowitzにより提供されたものです。データは許可を得て使用されています。このデータに関する追加情報については,次を参照してください。

N. Rosenfeld, J. Young, U. Alon, P. Swain, M.B. Elowitz,“单细胞水平上的基因调控”,《科学》2005年第307卷,1962-1965页。