這篇博客文章是由一位不再在SAS的博客撰寫的
我是一名正在崛起的高年級學生北卡羅來納大學科學與數學學院 。今年夏天,我在SAS擔任技術暑期學生。
而 JMP 8 沒有圖像處理支持,它允許用戶創建可以從JSL調用的自定義DLL。所以我創建了一個DLL,允許從JSL調用ImageMagick(一個開源圖像庫)中的一些函數。
使用這個DLL,我試圖從北卡羅來納州運輸部的網絡攝像頭的照片中計算汽車。這是來自羅利地區40號州際公路289號出口附近的圖片:

不幸的是,道路中較遠的部分很難看到,因為一切都模糊了。所以我沒有看那一部分。我把它裁剪掉了。
為了使後面的計算更容易,我還將圖像轉換為灰度,因此我只需要為每個像素使用單一強度,而不是三個顏色通道。
然後圖像看起來像這樣:

為了統計汽車,我需要知道這些照片的哪些部分是汽車。由於網絡攝像頭每3分鐘更新一次,我有很多其他圖片可以比較每一個。因此,對於每張照片,我分析了一下,我看了之前的10張照片和之後的10張照片,並將它們中的20張放在一起。結果非常接近沒有汽車的道路圖,你可以看到:

這張照片告訴我,我看到的圖像的哪些部分不是汽車。通過從我正在分析的圖像中減去它,我得到了一個很好的圖片,說明汽車的哪些部分:

在這一點上,即使從腳本中也很容易分辨出圖片的哪些部分是汽車。灰色區域是汽車;黑暗的區域不是。有些地區是深灰色的,不清楚它們是否應該被視為汽車。我發現對他們來說效果最好的是將顏色強度小於60的區域視為背景,將強度為60或更大的區域視為汽車。應用此類過濾器後,圖片如下所示:

然後,我得到了一組(x,y)像素坐標,它們組成了幾輛汽車。由於單個汽車的像素應該比其他汽車的像素更接近,我嘗試使用JMP的聚類分析工具將這些點劃分為聚類。理想情況下,每個群集代表一輛汽車。這是同一張圖片,每個群集都有自己的顏色:

正如你所看到的,它似乎在這張照片上做得非常好。但是,由於JMP的聚類分析工具在進行分析之前需要許多聚類,因此它不是自動計數的最佳工具。這就是為什麼如此多的單個像素似乎是他們自己的集群;當圖片中只有8輛汽車時,JMP將它們分成默認的集群數量20。
因為JMP的集群分析工具不是這項工作的最佳工具,所以我最終使用了不同的工具。一旦你考慮到更遠的汽車看起來更小的事實,大多數汽車的尺寸相似。因此,回到黑白步驟,我可以計算白色像素(確保考慮到汽車與相機的距離),以獲得圖片中汽車數量的近似值。
大約在這個時候,我還決定改用網絡攝像頭。這個的問題在於它移動了很多,這阻止了平均工作。這是連續四張圖片:




這四個比大多數都更加極端,但你明白了。經過一番觀察後,我發現了一個不同的網絡攝像頭。這是一張照片:

由於汽車的尺寸以可預測的線性方式隨y坐標變化,因此可以使用相對簡單的計算對其進行調整。不幸的是,這樣做需要識別四個點(道路兩側各兩個),並將這四個點傳達給腳本是相當棘手的。
有一種更簡單的方法。JMP有一個建模平台。如果您手動計算某些圖片中的汽車並將數據提供給JMP,它可以創建一個模型,根據其中像素的位置和分佈,預測其他圖片中的汽車數量。
我將每個圖像劃分為5像素高的水平條紋,如上圖中下方的(裁剪)副本中所示。

在從中減去平均圖像之後,我計算每個像素中每個條帶中強度高於60的像素數。那時我可以買一個模特;但是因為我試圖根據每個條紋中的像素數來解釋汽車的數量,所以大約有30個解釋變量 - 每個條帶一個。我需要一個批量用於創建模型的圖像,這不會讓許多人使用它。
為了解決這個問題,我提取了主要組件。主成分是原始30個解釋變量的線性組合,其計算方式是第一主成分解釋數據中的最大變化,第30個解釋變量最小。事實證明,前11個主要成分解釋了超過95%的變化。因此,通過基於主成分而不是原始數據的建模,我將解釋變量的數量減少到大約三分之一,同時仍然保留了95%的信息。
我隨機選擇了120張圖片(我有超過600張圖片,這只是其中的一小部分)手動計數汽車,並將這些數字和像素數量一起提供給JMP的Fit Model平台。JMP提出了一個模型,我用它來創建一個按時間計算的汽車數量表。然後我在周四下午和周五將這些數據繪製成圖表。使用樣條擬合,圖形如下所示:

該圖確實顯示了我預期的流量模式。早晚高峰時段以及午餐時間的交通量都有顯著增加。
Douglas M Okamoto(知識信息數據) 中寫道:
我要祝賀這位積極進取的SAS技術暑期學生開發數據關聯跟踪系統,以使用JMP平台識別北卡羅來納州羅利市內及周邊的車輛交通。
三個問題,如果可以的話。
Q1。如何系統地對每15分鐘拍攝一次的照片進行採樣?三十小時的網絡攝像頭視頻監控,每三分鐘更新一次圖片,共拍攝600張照片。120張圖片的系統樣本應該比相同大小的隨機樣本更具代表性。
Q2。高度的觀點是30個一些奇怪的解釋變量之一,其中11個主要成分組合在一起?在裁剪和分割的圖片中,前景片段中的車輛比背景中的車輛更像素化。
Q3。因為午餐後在莫里斯維爾的戴維斯家庭酒吧 - BQ匆匆回去工作,是下午1點左右的16車異常值?
參考
美國交通部,交通檢測員手冊:第三版,第一卷,出版號 FHWA-HRT-06-108(2006年10月)
¢ http://www.tfhrc.gov/its/pubs/06108/06108.pdf
AKI 中寫道:
嘿,格雷格!
非常有趣!一個很好的報告。
在最後看情節的時候,我在想,如果你在高峰時間經常計算,幾分鐘後相同的汽車仍會在一段距離內出現。所以你必須要小心你如何“加起來”數據(你在本報告中沒有這樣做).... 認識到前一張照片中的同一輛車仍然在那裡更遠是一個非常難的問題,我猜... 他們也可以改變車道,所以你不能只識別它們的一組,重新縮放......
好吧,但是當你自動收集大量數據時,這些問題可能會自行解決,所以收集真實數據可能沒有真正的問題....
說明可以部署該技術的實際用途將有助於使報告更加有趣。(如自動交通流量報告,或容量分析,或其他......)
無論如何,我感興趣地閱讀了你的報告。謝謝!
AKI。
梁烈中寫道:
有趣。如果是夜間並且路燈打開它仍然可以工作。
>說什麼實用的技術
也許它可以用來調暗路燈。如果低交通強度的光水平可能較低,但如果交通強度增加,則也可以增加光水平。
在某些街道上,除了一些短暫的時間,如汽車渡輪到達或曲棍球比賽結束時,它可能根本沒有汽車。如果我們能夠檢測到汽車的數量超過閾值,則可以將這樣的信息發送到服務器,然後服務器相應地向沿著街道的不同調光控制器發送命令。
問候
梁