BA method, simple synthetic images
For simple synthetic images:I0 = 0 0.5000 0 0 1.0000 0 0 0.5000 0 0.1000 0 0 0.0500 0 0 0.0500 0.1000 0 I1 = 0.5000 0 0 1.0000 0 0 0.5000 0 0 0 0.1000 0 0 0.0500 0 0 0.0500 0.1000Running code by D.Sun. Disabled texture decomposition, disabled multiscale processing.
uv = estimate_flow_interface(I0, I1, 'classic-c-brightness', [], {'display', 1, 'pyramid_levels', 1, 'gnc_pyramid_levels', 1});
After first iteration ( loop for ignc = 1:this.gnc_iters in dsun_ijcv_flow_code\@ba_optical_flow\compute_flow.m):
After 2nd iteration:
After 3rd iteration:
I think, it is right answer.
uv(:,:,1) = -0.9995 -0.9995 -0.9996 -0.9994 -0.9994 -0.9995 -0.9992 -0.9992 -0.9992 0.9992 0.9992 0.9992 0.9994 0.9994 0.9994 0.9995 0.9994 0.9994 uv(:,:,2) = 1.0e-003 * -0.2083 -0.2080 -0.2080 -0.2080 -0.1848 -0.1848 -0.1861 -0.1616 -0.1848 -0.1507 -0.0860 -0.1183 -0.0860 -0.0633 -0.1183 -0.0396 -0.0396 -0.0860
BA method. Another pair of images
I0 = 0 0.5000 0 0 1.0000 0 0 0.5000 0 I1 = 0.5000 0 0 1.0000 0 0 0.5000 0 01st iteration
uv(:,:,1) = -1 -1 -1 -1 -1 -1 -1 -1 -1 uv(:,:,2) = 1.0e-014 * 0.8281 0.8281 0.8281 0.8281 0.8281 0.8281 0.8281 0.8281 0.82812nd iteration
uv(:,:,1) = -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 uv(:,:,2) = 1.0e-013 * -0.5965 -0.5965 -0.5965 -0.5965 -0.5965 -0.5965 -0.5965 -0.5965 -0.59653rd iteration
uv(:,:,1) = -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 uv(:,:,2) = 1.0e-011 * 0.5374 0.5374 0.5374 0.5374 0.5374 0.5374 0.5374 0.5374 0.5374Visually the same:
HS method. Simple image
BA - is not the simpliest method. I found there is implmentation of Horn-Schunk.I found that the results are really poor, when my "image elements" ar just on the border. So I extended image by zeros.
I use the following command:
uv = estimate_flow_interface(I0, I1, ... 'hs-brightness', [], ... {'display', 1, 'pyramid_levels', 1, 'gnc_pyramid_levels', 1, ... 'pyramid_spacing', sqrt(2)});I also use slightly modified code. I disabled automatic pyramid height calculation, so I set it manually.
Input
I0 = 0 0.5000 0 0 1.0000 0 0 0.5000 0 1.0000 0 0 0.5000 0 0 0.5000 1.0000 0 I1 = 0.5000 0 0 1.0000 0 0 0.5000 0 0 0 1.0000 0 0 0.5000 0 0 0.5000 1.0000Gives:
While
I0 = 0 0 0 0 0 0 0 0.5000 0 0 0 0 1.0000 0 0 0 0 0.5000 0 0 0 1.0000 0 0 0 0 0.5000 0 0 0 0 0.5000 1.0000 0 0 0 0 0 0 0 I1 = 0 0 0 0 0 0 0.5000 0 0 0 0 1.0000 0 0 0 0 0.5000 0 0 0 0 0 1.0000 0 0 0 0 0.5000 0 0 0 0 0.5000 1.0000 0 0 0 0 0 0gives
HS method. Multiscale.
I0 = [ 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 5 5 0 0 0 0 3 0 0 0 0 0 1 3 0 0 0 0 0 0 0 1 0 0 2 4 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 5 0 0 0 0 0 0 0 0 0 0 5 5 0 0 0 0 0 0 0 0 0 0 ] / 5.; I1 = [ 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 5 5 0 0 0 0 2 0 0 0 0 0 1 3 0 5 2 0 0 0 0 0 0 0 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 5 5 0 0 0 0 0 0 0 0 0 0 5 5 0 0 0 0 0 0 0 0 0 0 ] / 5.;
Here the shift between frames is much larger than a pixel and the size of objects. So OF fail without resolution scaling.
1 pyramid level | 2 pyramid levels | 3 pyramid levels |
No comments:
Post a Comment