亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        視頻識別在皮帶機上運動計數(shù)的算法設計

        2016-06-29 21:20:38徐智廣周杏櫻
        電腦知識與技術 2016年13期

        徐智廣 周杏櫻

        摘要:傳統(tǒng)的皮帶機計算器在一個通道內(nèi)無法同時識別多個目標,本文使用AForge.NET視頻圖像處理類庫來介紹怎樣使用視頻識別技術檢測多個運動目標并實現(xiàn)自動計數(shù)的功能,本文著重于算法的設計及實現(xiàn)方法。

        關鍵詞:圖像識別;多運動目標計數(shù);皮帶機計數(shù)器;計算機視覺;AForge.NET

        中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2016)13-0197-04

        1概述

        傳統(tǒng)的皮帶機計數(shù)器是采用紅外傳感器安裝固定在傳送帶的兩側,一端發(fā)射紅外線、另一端接收此紅外線信號,當目標物品從中間通過遮擋到紅外線時,會觸發(fā)計數(shù)器進行計數(shù)。由此計數(shù)器的工作原理可知,被測目標物品通常比較大件且傳送帶是單通道,目標物品一個一個地依次通過紅外傳感器進行計數(shù),如果被測目標物品體積細薄且數(shù)量較多需要在傳送帶上批量計數(shù)的時候,傳統(tǒng)的皮帶機計數(shù)器將難以解決。

        如今視頻識別伴隨計算機技術的高速發(fā)展其技術日臻成熟,廣泛應用于現(xiàn)代加工制造業(yè),本文介紹一種利用視頻識別進行多運動目標檢測自動計數(shù)的算法設計及實現(xiàn)方法。

        2視頻識別檢測方法

        2.1運動目標檢測方法

        目前視頻識別使用的運動目標檢測方法有以下幾種:幀差法、背景差法、光流法等。通過實踐證明使用幀差法能更有效地檢測高速運動的目標,在此著重介紹幀差法的原理,幀差法是指將運動圖像序列中相鄰的兩幀作差分運算來獲取運動目標輪廓的方法,該方法算法簡單檢測速度快,適用于多個運動目標檢測和實時性較強的應用場合。因此本文使用幀差法。

        本文的視頻識別處理過程就是對幀差法產(chǎn)生的一系列圖像進行圖像識別分析處理,就是一個持續(xù)的圖像處理過程。

        2.2 AForge.NET編程框架類庫

        AForge.NET是一個基于C#語言開發(fā)的視頻和圖像處理的開源類庫,它包括了計算機視覺的各種基本算法,例如:圖像處像和濾鏡過濾,機器學習、模糊推理和視頻處理等。

        本文主要引用AForge.NET類庫中的1.AForge.Imaging:圖像處理和濾鏡類庫;2.AForge.Vision:計算機視覺應用類庫;3.AForge.Video:視頻處理類庫。引用成熟AForge.NET視頻和圖像處理類庫可以使開發(fā)者更專注于實際圖像識別的算法本身,而不需要構建一個完整的圖像處理數(shù)學模型。

        本文軟件系統(tǒng)環(huán)境為微軟VS2012,C#編程語言,使用AForge.NET 2.2.5版本類庫,硬件為USB接口的工業(yè)高速攝像槍,達到60幀/秒。

        3算法設計與編程方法

        我們把小型電路板作為待測計量的目標物體,把一堆小型電路板放到皮帶機輸送帶上,此時攝像頭進行拍攝,計算機服務器程序開始使用幀差法處理拍攝的圖像隊列。

        3.1應用濾鏡檢測目標輪廓路徑

        為了檢測出在皮帶機上的電路板,我們使用一些圖像濾鏡對圖像目標進行處理,首先圖像需要進行灰度化,其作用是將彩色圖像變成黑白灰色,有的攝像槍可以直接調(diào)節(jié)為黑白模式則可省略本步驟的過濾處理,減少資源的消耗;然后再對灰度化的圖像進行二值化過濾,目的是使圖像變成只有黑白色;再利用邊緣路徑檢測函數(shù)對圖像上所有的小型電路板輪廓路徑進行檢測,得到電路板的邊緣的閉合路徑圖。算法程序如下:

        FiltersSequence seq = new FiltersSequence();//使用過濾

        seq.Add(Grayscale.CommonAlgorithms.BT709); //添加灰度濾鏡,把彩色變灰色

        seq.Add(new Threshold(150)); //基于閥值的二值化,即結果不是黑就是白

        seq.Add(new OilPainting(10)); //邊緣填充,使更好地閉合

        Seq.Add(new DifferenceEdgeDetector());//邊緣路徑檢測

        得到如下圖所示一個個長方形的閉合路徑,即為小型電路板的輪廓路徑模型。下圖為應用一連串的濾鏡后的圖像變化結果。

        3.2提取閉合路徑圖像塊模型數(shù)組

        在上圖中最后濾鏡處理(路徑檢測)其結果顯示的每一個閉合長方形就是一個小型電路板輪廓模型,通過blobCounter類函數(shù),對整個圖像的所有閉合路徑進行提取。為了去除干擾的因素和提高準確性,我們對提取圖像塊的最小寬度、最小高度以及圖像塊面積進行了過濾,通過了過濾的圖像塊數(shù)組則為圖像上所有小型電路板的模型。算法程序如下:

        blobCounter.FilterBlobs = true; //開啟過濾條件

        blobCounter.MinWidth = 40; //設置最小像素寬度

        blobCounter.MinHeight = 40; //設置最小像素高度

        blobCounter.ObjectsOrder = ObjectsOrder.Area;

        blobCounter.ProcessImage(image); //篩選出有效的對象

        Blob[] blobs = blobCounter.GetObjectsInformation();//提取圖像上所有閉合路徑作為圖像塊數(shù)組。

        提取的閉合路徑圖像塊模型數(shù)組存在于程序的內(nèi)存中,現(xiàn)階段沒有進行圖形顯示。

        3.3獲取圖像塊的中心點。

        根據(jù)皮帶機的單方向運動的特點,我們在圖像畫布上畫兩條虛擬的起始線和結束線,圖像塊總從紅線上向下運動,最后穿過綠線。為了方便追蹤檢測,我們以圖像塊中心點來代表一個圖像塊,然后只要監(jiān)測中心點的運動情況即可,當中心點經(jīng)過紅線的時候進行追蹤檢測記錄,當中心點通過綠線之后進行統(tǒng)計數(shù)量加1,如下圖所示:

        中心點在程序上以XY坐標值來表示,算法程序如下。

        foreach (Blob blob in blobs) //遍歷圖像塊數(shù)組

        {List leftPoints, rightPoints, edgePoints; //定義泛形坐標點

        blobCounter.GetBlobsLeftAndRightEdges(blob,out leftPoints, out rightPoints); //獲取圖像塊左右邊緣坐標

        edgePoints = blobCounter.GetBlobsEdgePoints(blob); //獲取圖像塊邊緣坐標

        edgePoints.AddRange(leftPoints); //添加左邊緣坐標

        edgePoints.AddRange(rightPoints); //添加右邊緣坐標

        int minX=0, maxY=0, maxX=0, minY=0; //定義XY軸坐標的最大最小值變量

        if (edgePoints.Count > 0)

        {minX = maxX = edgePoints[0].X;

        maxY = minY = edgePoints[0].Y;

        foreach (IntPoint pointx in edgePoints) //判斷當前坐標是否越界限。

        { if (minX > pointx.X) minX = pointx.X;

        if (maxX < pointx.X) maxX = pointx.X;

        if (minY > pointx.Y) minY = pointx.Y;

        if (maxY < pointx.Y) maxY = pointx.Y; } }

        centerX = (maxX - minX) / 2 + minX; //中心X軸坐標

        centerY = (maxY - minY) / 2 + minY; }//中心Y軸坐標

        當圖像塊從上到下穿過紅色開始線時,就將中心點的XY坐標值進行記錄。為了記錄每個圖像塊的坐標等信息,我們建立了一個TrackBlock類來表示圖像塊模型,以下為TrackBlock類的私有成員變量。

        public class TrackBlock

        { private int avgX;//圖像塊中心點的X軸坐標

        private int avgY;//圖像塊中心點的Y軸坐標

        private int checkLine1 = 40;//起始紅線的Y軸坐標

        private int checkLine2 = 420; //結束綠線的Y軸坐標

        private bool isCheckLine1 = false;//記錄該Y軸坐標是否已經(jīng)超過了checkLine1的值

        private bool isCheckLine2 = false;// 記錄該Y軸坐標是否已經(jīng)超過了checkLine2的值

        ……

        }

        TrackBlock實體類將記錄于List listBlock 這個泛型類集合中。

        3.4幀差法中心點的運動軌跡統(tǒng)計算法

        由于圖像塊中心點的運動軌跡總是往向下運動,在計算機程序的圖像處理上,即中心點的X軸坐標不變,Y軸坐標增加。對以60幀/秒速度產(chǎn)生的幀差圖像以及皮帶機的每秒傳送速度,可以計算出圖像塊中心點坐標兩幀之間X軸允許10像素的絕對值偏差,Y軸為運動方向允許120像素的正偏差,其中允許X軸偏差是攝像頭測量精度及皮帶機會震動的原因,而Y軸的兩幀偏差值與皮帶機的運動速度有關。如果檢測到中心點X軸偏移太大,或者位移太快,都認為是無效追蹤到的中心點,則不參與計數(shù),如下圖所示。

        由于畫布上有多個運動的圖像塊,有剛出現(xiàn)的,也有已完成計數(shù)消失的,我們需要對應地識別出該圖像塊是新紀錄還是已有記錄,方法為遍歷每個圖像塊中心坐標的值和當前已有泛型類集合(listBlock)中的中心坐標的X軸Y軸值的差,是否在上述XY軸的允許偏差范圍內(nèi)。如中心點的坐標偏差在允許范圍內(nèi)則更新泛型類集合中心點的坐標值,如果不存在記錄則新增記錄。程序算法如下:

        for (int i = 0; i < listBlock.Count; i++)//循環(huán)泛型類集合

        {//查找是否存在記錄,更新中心點

        if (centerX < maxX && centerX > minX && centerY < maxY && centerY > minY)//中心點坐標必須在最大最少坐標值的范圍內(nèi)

        { //中心點必須要范圍內(nèi)X軸允許10像素的絕對值偏差,Y軸為運動方向允許120像素的正偏差,

        if (listBlock[i].AvgX > 0 && listBlock[i].AvgY > 0 && Math.Abs(centerX - listBlock[i].AvgX) <10 && Math.Abs(centerY - listBlock[i].AvgY) < 120 && listBlock[i].IsExist)

        { listBlock[i].AvgX = centerX;//更新中心點的信息

        listBlock[i].AvgY = centerY;

        isExist = true;//標識為已存在記錄

        break; }}}

        //不存在符合條件,則新增記錄

        if (!isExist)

        { //新增條件, 中心點Y值必須要在第一條橫線之前出現(xiàn),即值小于50;

        if (50 - centerY > 5) //5像素為一個相對的誤差值

        { TrackBlock trackBlock = new TrackBlock();

        trackBlock.AvgX = centerX;

        trackBlock.AvgY = centerY;

        trackBlock.IsExist = true;

        listBlock.Add(trackBlock); }}

        在更新中心點的信息時,就會觸發(fā)TrackBlock類中AvgY的賦值函數(shù)。賦值函數(shù)中將實時中心點Y值與設定的紅色開始線的Y值(checkLine1)比較,當中心點Y值大于紅線Y值且IsCheckLine1 =false且IsCheckLine2=false(沒有穿過紅線而且也沒有穿過綠線),則IsCheckLine1 =true表示該圖像塊已經(jīng)進入了追蹤檢測的范圍。

        如果大于綠線Y值且IsCheckLine1 =true(已經(jīng)穿過了紅線)且IsCheckLine2=false(沒有穿過綠線)則IsCheckLine2=true。算法程序如下:

        public int AvgY

        {get

        return avgY;

        set

        { avgY = value;

        //檢測是否通過了開始線

        if (!IsCheckLine1 && !IsCheckLine2)// 原來并沒有穿過紅色開始線或是綠色結束線,即新出現(xiàn)的記錄

        {if (value - checkLine1 > 2) //大于2像素,2像素表示一個相對的誤差范圍值

        {IsCheckLine1 = true; }}

        //檢測是否通過了結束線

        if (IsCheckLine1 && !IsCheckLine2)// 已經(jīng)穿過了紅色開始線但之前沒有穿過綠色結束線

        {if (value - checkLine2 > 2) //大于2像素,2像素表示一個相對的誤差范圍值

        {IsCheckLine2 = true; }}}}

        當IsCheckLine2等于true,表示穿過了結束線,可以進行計數(shù)加1,并在泛型類集合中刪除該中心點的實體類。至此整個視頻識別在皮帶機上運動計數(shù)的算法設計就完成了。

        4目標物品堆疊的處理

        在進行大規(guī)模的自動計數(shù)的時候,被測物體電路板會被大批倒在皮帶機上,其不規(guī)則的擺放會導致電路板在皮帶機上產(chǎn)生堆疊的情況,在此情況下自動計數(shù)將不能使用像上述理想模型的處理方法。為此我們需要在皮帶機上增加物理過濾以及改進物體輪廓提取的算法。

        4.1篩選過濾裝置

        對于被測物體可能產(chǎn)生的堆疊情況,可以在皮帶上放置一個擋板來限制被測物體的高度,使用雙擋板可以確保消除物體的堆疊情況。

        對于被測物體可能互相重疊的情況會影響到視頻識別的追蹤檢測,可以在皮帶機上放置一個導航間隔欄來引導和打散被測物體,見下圖。

        4.2程序算法的篩選過濾處理

        在使用blobCounter類提取圖像塊的時候,可以設定過濾條件,對于只有二個目標物體之間的重疊,是可以通過寬度高度和面積像素大小的情況進行識別,但對三個以上的物體重疊情況則比較復雜,因為重疊之后計算機并沒有獲取到全部的圖像信息,基于二維圖像分析blobCounter類庫沒有辦法實現(xiàn)自動識別,閉合路徑檢測會把多個重疊的目標閉合組成了一個。

        對于規(guī)則的目標物體可以使用ExhaustiveTemplateMatching基于模板的圖像匹配函數(shù)來查找。即把目標物體作為模板來查找整個圖像中的匹配情況。但對于過度重疊和堆疊的目標物品,需要開發(fā)更復雜的算法,現(xiàn)結合物理上的篩選過濾裝置可以分離出獨立運動的被測目標物體。

        5結束語

        本文使用幀差法作為視頻運動目標檢測,使用了AForge.NET類庫的灰度化、二值化、路徑檢測、圖像塊提取等圖像處理技術方法,使計算機獲取到了目標物體的模型坐標,通過對目標物體中心點坐標的持續(xù)追蹤檢測,實現(xiàn)了自動計數(shù)的功能。

        本文著重于實現(xiàn)算法的本身,程序經(jīng)過大量試驗并多次修正,能實現(xiàn)自動計數(shù)的功能。對于運動目標重疊堆疊嚴重的情況,程序未能完全進行自動識別檢測,需要借助物理上的篩選過濾裝置處理,但對于研究視頻識別多個運動目標的檢測或在皮帶機上多運動目標計數(shù)的工業(yè)應用,具有一定的借鑒意義。

        參考文獻:

        [1] 樓亮亮,金彥亮. 基于AForge.NET類庫的視頻移動目標檢測[J].現(xiàn)代電子技術,2015,38(17):58-60.

        [3] 謝樹煜,陳倩,朱虹. 實時視頻對象識別與計數(shù)系統(tǒng)的模型和算法設計[J].清華大學學報:自然科學版,2001,41(7):61-64.

        日韩精品一区二区三区中文9| 日本乱偷人妻中文字幕在线| 日本乱人伦在线观看| 亚洲色图视频在线| 人妻少妇精品视中文字幕国语| 日韩一二三四区免费观看| 人妻少妇中文字幕,久久精品 | 国产精品第一二三区久久| 亚洲国产av无码专区亚洲av| 成人国产精品免费视频| 成人在线免费视频亚洲| 亚洲无人区乱码中文字幕| 日本一区二区精品高清| 精品区2区3区4区产品乱码9| 欧美日韩久久久精品a片| 小13箩利洗澡无码免费视频| 色婷婷久久综合中文久久一本| 77777亚洲午夜久久多喷| 国产成熟人妻换╳╳╳╳| 麻豆精品网站国产乱子伦| 蜜桃视频在线免费观看一区二区 | 亚洲国产精品成人久久av| 一区二区在线观看精品在线观看| 全免费a敌肛交毛片免费| 日本高清一区二区三区水蜜桃| 亚洲24小时在线免费视频网站| 日韩在线精品视频一区| 熟女性饥渴一区二区三区| 精品国产AⅤ无码一区二区| 蜜桃av一区二区三区久久| 日本丰满老妇bbw| 99热久久这里只精品国产www| 亚洲色婷婷综合开心网| 国产专区国产精品国产三级| 三年片免费观看大全有| 另类欧美亚洲| 成人性生交大片免费看i| 日韩亚洲欧美久久久www综合| 日本亚洲国产一区二区三区| 久久精品国产亚洲av成人擦边 | 亚洲av熟女传媒国产一区二区|