- Find the horizontal and vertical flow components for each pixel using the optical flow function.
- Calculate the magnitude of displacement for each pixel using the horizontal and vertical components. This gives you the speed at each pixel.
- For pixels where the displacement magnitude exceeds your threshold (e.g., 5 pixels), you can scale down the Vx and Vy components to meet your maximum displacement criterion.
Can I set the maximum displacement for opticalflow?
2 ビュー (過去 30 日間)
古いコメントを表示
Hi, I am using optical flow to compute sea surface current speed using satellite data.
But, the results of opticalflow show the overestimated current speed rather than known speed current.
So I want to set the maximum displacement of pixels (e.g. not over 5 pixel).
Can I set the maximum displacement for opticalflow method?
0 件のコメント
回答 (1 件)
Ayush
2024 年 4 月 30 日
Hi,
You can follow the below steps as a workaround to set the maximum displacement for the optical flow:
Refer to the pseudo code below for a better understanding:
% Assuming 'opticFlow' is your computed optical flow object and 'I' is the current frame
flow = estimateFlow(opticFlow, I);
% Get the horizontal and vertical flow components
Vx = flow.Vx;
Vy = flow.Vy;
% Calculate the magnitude of displacement
displacementMagnitude = sqrt(Vx.^2 + Vy.^2);
% Define your maximum displacement threshold
maxDisplacement = 5;
% Find pixels where the displacement exceeds the maximum allowed
exceedsThreshold = displacementMagnitude > maxDisplacement;
% Scale down the Vx and Vy components for these pixels
Vx(exceedsThreshold) = Vx(exceedsThreshold) .* (maxDisplacement ./ displacementMagnitude(exceedsThreshold));
Vy(exceedsThreshold) = Vy(exceedsThreshold) .* (maxDisplacement ./ displacementMagnitude(exceedsThreshold));
% Now, Vx and Vy have been adjusted to ensure no displacement exceeds the maximum threshold
For more information on the "estimateFlow" function, refer to the below documentation:
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Tracking and Motion Estimation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!