この例では、Image Processing Toolbox™ を使用してビデオやイメージ シーケンスの可視化や解析を行う方法を説明します。この例では、交通量のビデオ内で明るい色の車を検出するために、VideoReader
(MATLAB®),im
,および他の图像处理工具箱关关を使用し。关联VideoReader
は、プラットフォーム固有の機能をもっており、プラットフォームによっては提供される Motion JPEG2000 ビデオを読み取れない場合があります。
关节有关部VideoReader
は,マルチマルチメディアファイルからのビデオデータを読み取れるマルチマルチマルチメディアを作作作作者:王莹,メディアVideoReader
を参照してください。
关节有关部VideoReader
をを用してビデオにしし,基本报报ををし。
trafficvid = Videoreader('traffic.mj2'的)
TrouperSvid =带有属性的Videoreader:常规属性:名称:'traffic.mj2'路径:'mathworks / devel / bat / bdoc21a / build / matlab / toolbox / image / imdata'持续时间:8 currentime:0 numframes:120视频属性:宽度:160高度:120帧用:15比特Pixel:24 Videoformat:'RGB24'
得到メソッドメソッド,秒码によるによる长さ,ビデオビデオ关键词。
获得(trafficvid)
obj = VideoReader with properties: General Properties: Name: 'traffic.mj2' Path: '/mathworks/devel/bat/Bdoc21a/build/matlab/toolbox/images/imdata' Duration: 8 CurrentTime: 0 NumFrames: 120 Video Properties: Width: 160 Height: 120 FrameRate: 15 BitsPerPixel: 24 VideoFormat: 'RGB24'
im
を使用してビデオを検索します。
implay('traffic.mj2');
ビデオデータで作业ををする,ビデオからの代表フレームをし,そのフレームにアルゴリズムを开放すると便利。
この车のタグ付けアプリケーションでは,明显色と暗い色のを含むフレームをしますますイメージビデオビデオのようイメージがが构造をもつもつオブジェクトをををできるだけ単纯単纯すると便ですのののアプリケーションののとしてとしてははとしてははははすべての(暗い暗いのオブジェクト(暗い色色车,车辆线,芝生など)の表示抑えること。通讯,いろいろな技术を结合わせ,これらこれらの分なオブジェクトをします。
ビデオフレームから暗い色の车ををする1条方法は,关联imextendedmax.
を关注すること。この关键,指定されたしきい値のの强度値をを返しをするバイナリバイナリイメージを返しとれするバイナリバイナリますれれれれますれれれますますますますますますますますますますますますますますます(关联rgb2gray
を使用して,元のビデオを RGB からグレースケールに変換します)。im
のピクセル领域ツールをををて,ピクセル値を表示でき。关联imextendedmax.
を呼び出す际,平均ピクセル値(またはそれよりわずかに大声値をしきい値としてします。
Darkcarvalue = 50;Darkcar = RGB2GRAY(读取(Trafficvid,71));nodarkcar = imextendedmax(Darkcar,Darkcarvalue);imshow(Darkcar)图,imshow(小跑车)
管理されたイメージでは,暗い色の车のオブジェクトオブジェクトが削除されたにもかかわらず,车线区分线式など他の余ののオブジェクトは残ってことに注意しててていることにに注意しててください的こと最最注意し値てください,ピクセルピクセル値はしきいしきい値以な,车线区分线式は削除されれ削除するににははのれれ削除ににははははれれにはははははImopen.
を实用できます。この关键は,バイナリイメージから小さなオブジェクト削除,大厦オブジェクトを保存ます。决定しなければなりなりません。车线区分线はてて薄いなので,车线区分线式のににするする半径円板状の対応する半径もつ円板状の要素する半径を円板状の化构造im
のピクセル领域ツール,これらのオブジェクト幅をします。
sedisk = strel('盘',2);Nosmallstructures = Imopen(顿达尔,塞特克斯);imshow(nosmallstructures)
アルゴリズムを完了するには,关字地区普通
を使用して,nosmallstructures.
(明显色の车のみ)内でオブジェクトの中间を検出しします。
车辆のタグ付けアプリケーションは,ループでビデオが一度に1必要必要とするから)。
小さいビデオ(この例でのように)は度ををでき。このこの能を多多详细についてについてははについてについてははについてイメージシーケンスの制剂を参照してください。
より高速な処理には、処理されるビデオの格納に使用されるメモリを事前配分します。
nframes = trafficvid.numberOfframes;我=读(Trafficvid,1);TaggedCars = Zeros([大小(i,1)大小(i,2)3 nframes],类(i));为了k = 1:nframes singleframe =读取(trafficvid,k);%转换成灰度以进行形态处理。i = rgb2gray(单帧);%删除黑色汽车。noDarkCars = imextendedmax(I, darkCarValue);%删除车道标记和其他非磁盘形结构。nosmallstructures = imopen(小峰,塞特克斯);%去除小结构。Nosmallstructures = Bwareaopen(Nosmallstructures,150);%获取帧中每个剩余对象的区域和质心。这% object with the largest area is the light-colored car. Create a copy原始帧的百分比并通过更改质心像素来标记汽车% value to red.taggedCars(:,:,:,k) = singleFrame; stats = regionprops(noSmallStructures, {'质心'那'区域'});如果〜isempty([stats.area])areaarray = [stats.area];[垃圾,idx] = max(areaarray);C =统计(IDX).Centroid;C =楼层(Pliplr(c));宽度= 2;row = c(1)-width:c(1)+宽度;col = c(2)-width:c(2)+宽度;TaggedCars(行,Col,1,K)= 255;TaggedCars(行,col,2,k)= 0;TaggedCars(行,Col,3,K)= 0;结尾结尾
元のビデオのフレーム レートを取得し、そのフレーム レートを使用してim
でtaggedCars
を表示します。
帧速率= trafficVid.FrameRate;implay (taggedCars,frameRate);
VideoReader
|im
|rgb2gray
|imextendedmax.
|Imopen.
|地区普通
|Bwareaopen.