私は現在、ビデオでインク滴を見つけ、体積推定、速度、球状になる前に移動した距離などの測定を実行する必要があるプロジェクトを行っています。
まず、このプロジェクトに取り組んでいる私が正しい軌道に乗っているかどうかを知りたいです。現時点で私は持っています:
1.) 元の画像をグレースケールに変換
2.) ガウスぼかしを適用してからキャニー エッジ検出を適用 (画像はここをクリック)
3.)findNonZero()
次に、行のブロックの合計を計算し、白ピクセルの濃度が最も高いブロックを使用して白ピクセルを特定し、その上にあるすべての行を切り取ります)。これにより、イメージ内のプリント ヘッドが削除されるため、ROI はその下の液滴のみになります。
4.) を使用しfindContours
て輪郭を見つけます。(画像はこちら)
上記の4つのステップは、これまでに行ったことです。次の手順は、次に行うべきことの下にありますか?
- トリミング後、輪郭を見つける前にバイナリ イメージを膨張させて、輪郭が閉じて開いていないことを確認しますか?
- たぶん、非常にオープンなものを無視しますか?(実際にこれを行う方法に関するヒントはありますか?)
floodFill()
すべての閉じた円- を使用して各輪郭の領域を見つけます
contourArea()
(このステップの後に、形状、ピクセルと体積の比率などのいくつかの仮定を使用して、ドロップの体積を推定できますか?) - 各輪郭の中心を見つけて配列に保存し、次のフレームの同じ滴の中心と比較できるようにします。液滴の中心から移動した距離とビデオのフレームレートがわかったら、速度を推定できるはずです。
また、ドロップに ID を与える方法がわからないので、適切に追跡していることを確認し、新しいドロップがいつ ROI に入ったかを知ることができます。
どんな助けでも大歓迎です、ありがとう。