我正在使用Emgu和C#。什麼是運動檢測的最佳色彩空間
我有一個來自攝像頭feed的jepgs流。此刻,我使用兩張圖像之間的absdiff來獲取運動變化。
Image<Bgr, byte> _diffBetweenCurrentAndPrevious = _currentFrame.Convert<Bgr, Byte>().AbsDiff(PreviousFrame.Convert<Bgr, Byte>());
然後我通過所述圖像保持所有的變化的數據陣列枚舉並尋找高於某一閾值的運動。
float diffCouner = 0;
for (int y = 0; y < 576; y++)
{
for (int x = 0; x < 720; x++)
{
if (_diffBetweenCurrentAndPrevious.Data[y, x, 0] >= 10
|| _diffBetweenCurrentAndPrevious.Data[y, x, 1] >= 10 ||
_diffBetweenCurrentAndPrevious.Data[y, x, 2] >= 10)
{
BaseImage.Data[y, x, 0] = _currentFrame.Data[y, x, 0];
BaseImage.Data[y, x, 1] = _currentFrame.Data[y, x, 1];
BaseImage.Data[y, x, 2] = _currentFrame.Data[y, x, 2];
diffCouner++;
}
}
}
此刻我正在使用BGR。
使用HSV或YCC或..是更好嗎?
我注意到在使用YCC時我不得不使用較低的閾值,因爲對於晚上經過的汽車來說,這個動作看起來並不明顯。
我對最佳方法感興趣。
還是應該使用<Gray,Byte>
格式?
我問的原因是我已經嘗試過所有這些,他們都似乎工作。但是在一天中的不同時間,它可能並不是那麼好,因爲瞬間無聊或光亮的一天。或者低對比度。
我可以並將在幾天內進行測試,但我會像一個紅色的印第安人祈禱季節改變。
任何建議將受到歡迎。
感謝
萬一任何一個下面我的問題感興趣,我發現,使用<Gray,Byte>
沒有給予足夠好的結果光線的變化。
我現在運行測試與<HSV,Byte>
啊一種親切的精神! :)謝謝 –
我很高興我可以幫忙。 – Apostolos