このブログ記事はSASにはもういないブロガーによって書かれました
私は新進のシニアですノースカロライナ理数科 。この夏の間、私はSASのテクニカルサマー学生として働いていました。
しながら JMP 8 画像操作はサポートされていません。ユーザーはJSLから呼び出すことができるカスタムDLLを作成できます。そこで私は、オープンソースのイメージライブラリであるImageMagickの一部の関数をJSLから呼び出せるようにDLLを作成しました。
このDLLを使用して、ノースカロライナ州交通局のWebカメラからの写真で車の数を数えようとしました。これは、Raleigh地区の州間高速道路40号線の出口289付近の画像です。

残念なことに、道のより遠くの部分はすべてが一緒にぼやけているので見づらいです。だから私はその部分を見ませんでした。私はそれを切り取った。
後の計算を簡単にするために、画像もグレースケールに変換したので、3つのカラーチャンネルではなく、各ピクセルに対して1つの強度で作業するだけで済みました。
画像は次のようになりました。

車を数えるには、写真のどの部分が車だったのかを知る必要がありました。ウェブカメラは3分ごとに更新されるので、それぞれを比較するための写真が他にもたくさんありました。そのため、私は分析したそれぞれの写真について、その前の10枚の写真とその後の10枚の写真を見て、それらのうちの20枚を平均しました。あなたが見ることができるように、結果は車なしで道路の絵にかなり近づいていました:

この写真は私が見ていた画像のどの部分が自動車ではなかったかを私に話しました。私が分析していた画像からそれを差し引くことによって、私はどの部分が自動車であったかの良い絵を得ました:

この時点では、台本からでさえも、絵のどの部分が車であるかを知るのはかなり簡単です。灰色の領域は車です。暗い領域はそうではありません。暗い灰色の地域もあり、そこではそれらが車と見なされるべきかどうかがはっきりしませんでした。色強度が60未満の領域を背景と見なし、強度が60以上の領域を自動車と見なすことが、彼らにとって最も効果的であるように思われることがわかりました。この種のフィルタを適用すると、画像は次のようになります。

それから私はいくつかの車を構成するピクセルの(x、y)座標のコレクションを持っていました。1台の車のピクセルは他の車のピクセルよりもお互いに近いはずなので、JMPのクラスター分析ツールを使用してこれらの点をクラスターに分割してみました。理想的には、各クラスタは1台の車を表します。これは、それぞれのクラスタがそれぞれ独自の色を与えている同じ絵です。

ご覧のとおり、この写真ではかなり良い仕事をしているようです。しかし、JMPのクラスター分析ツールは、分析を実行する前に多数のクラスターを必要とするため、自動カウントに最適なツールではありません。だからこそ、非常に多くの個々のピクセルがそれら自身のクラスタのように見えるのです。写真に8台の車しかない場合、JMPはそれらをデフォルトのクラスタ数である20に分割します。
JMPのクラスター分析ツールはこの仕事に最適なツールではないので、私は別のものを使用することになりました。あなたがより遠くの車が小さく見えるという事実を説明すると、ほとんどの車は同じようなサイズです。したがって、白黒のステップに戻って、写真内の車の台数を概算するために、(カメラから車までの距離を考慮して)白のピクセルを数えることができます。
この頃に私もウェブカメラを切り替えることにしました。これの問題点は、動き回ることで、平均化が機能しなくなったことです。これが4つの連続した写真です。




これらの4つは他よりも少し極端ですが、あなたはアイデアを得ます。見ているうちに、動かなかった別のWebカメラを見つけました。これがその写真です。

車のサイズは予測可能な線形の方法でy座標に応じて変化するため、比較的単純な計算を使用して調整できます。残念ながら、これを行うには4つのポイント(道路の両側に2つずつ)を特定する必要があり、それらの4つのポイントを台本に伝えるのはかなり面倒です。
もっと簡単な方法があります。JMPにはモデリングプラットフォームがあります。写真の中の車の数を手で数えてそのデータをJMPに渡すと、それらの中のピクセルの位置と分布を考慮して、他の写真の中の車の数を予測するモデルを作成できます。
上の画像の下の(トリミングされた)コピーにおおよそ示されているように、私はそれぞれの画像を高さ5ピクセルの横縞に分割しました。

それから平均的な写真を引いた後、私は各ピクセルの各ストライプの60以上の強度を持つピクセルの数を数えました。私はその時モデルをあてはめたかもしれません。しかし、私は各ストライプのピクセル数に基づいて車の数を説明しようとしていたので、およそ30の説明変数がありました - 各ストライプに1つ。私が必要だっただろうロットモデルを作成するための画像の数。
これを修正するために、主成分を抽出しました。主成分は、最初の主成分がデータの最大の変動を示し、30番目の変動が最小の変動を説明するように計算された、元の30個の説明変数の線形結合です。上位11の主成分が95%以上の変動を説明したことがわかります。そのため、生データではなく主成分に基づいてモデリングすることで、95%の情報を保持しながら、説明変数の数をおよそ3分の1に減らしました。
私は無作為に選んだ120枚の写真(私は600枚以上あったのでこれはほんの一部に過ぎません)で車を手で数え、それらの数とピクセル数をJMPのFit Modelプラットフォームに渡しました。JMPは私が時間によって計算された車の数の表を作成するのに使用するモデルを思いつきました。それから木曜日の午後と金曜日のデータをグラフ化しました。スプラインフィットすると、グラフは次のようになります。

このグラフは、私が予想したトラフィックパターンを実際に示しています。朝と夕方のラッシュアワーと昼休みあたりのトラフィックは大幅に増加しています。
Douglas M Okamoto(データから知識へのデータ) 書きました:
JMPプラットフォームを使用してノースカロライナ州ローリー内およびその周辺の車両交通量を特定するためのデータアソシエーション追跡システムの開発について、入社したSASテクニカルサマー学生におめでとうと言いたい。
3つの質問、できれば。
Q1。15分ごとに撮影した写真を体系的にサンプリングするのはどうですか。3分ごとに更新される写真付きの30時間のウェブカメラビデオ監視により、全部で600枚の写真が得られます。120枚の写真の体系的なサンプルは、同じサイズのランダムなサンプルよりも代表的であるはずです。
Q2。11の主成分が組み合わされた30の奇妙な説明変数のうちの1つを高めた見通しですか。切り取られてセグメント化された画像では、前景のセグメントの車両は背景の車両よりもピクセル化されています。
Q3。モリスビルのDavis Family Bar-BQで昼食後に急いで仕事に戻っている人々が原因で16時台の外れ値は午後1時ごろですか?
参照
米国運輸省、交通探知機ハンドブック:第3版、第1巻、発行番号 FHWA-HRT-06-108(2006年10月)
• http://www.tfhrc.gov/its/pubs/06108/06108.pdf
あき書きました:
こんにちは、Greg!
とても興味深い!いい報告です。
最後のプロットを見ると、ラッシュアワーの間にあまりにも頻繁にカウントしても、数分後に同じ車がまだ写真に表示されることになると私は考えていました。そのため、データをどのように「合計」するかについては注意が必要です(このレポートでは行っていません)。前の写真の同じ車がまだ遠くにあることを認識するのはかなり難しい問題です、と私は思います... 車線を変更することもできます。そのため、それらのクラスタを認識してスケール変更することはできません。
しかし、大量のデータを自動的に収集するときに問題が解決する可能性があるため、実際のデータを収集しても問題ない場合があります。
この技術を実際にどのような用途に展開できるかを言うと、レポートをさらに面白くするのに役立ちます。(自動トラフィックフローレポート、キャパシティ分析、その他など)
とにかく、私はあなたの報告を興味深く読んだ。ありがとうございました!
あき。
リャンリエム書きました:
面白い。夜間で街灯が点灯している場合は、それでも機能します。
>実用的なテクノロジーと言えば
たぶんそれは街灯を薄暗くするために使用することができます。交通量が少ない場合には光のレベルが低い可能性がありますが、交通量が多い場合には光のレベルを上げることもできます。
いくつかの通りでは、カーフェリーが到着したりホッケーの試合が終わったりするようなことが起こるときのある短い期間を除いて、まったく車がないことがあります。車の数がしきい値を超えたことを検出できれば、そのような情報はサーバーに送信され、その後サーバーは通りに沿って異なる調光コントローラーにコマンドを送信することができます。
よろしく
梁