[](https://www.python.org/)
| Sr | Scene | Lucas–Kanade | LK pyramid (3) | Horn–Schunck | Farnebäck | **DIS** |
|---|---|---|---|---|---|---|
| 1 | man in striped shirt · texture 61 | 3.117 px | 0.765 px | 3.324 px | 1.667 px | **0.307 px** |
| 2 | bighorn on rock · texture 69 | 3.320 px | 0.247 px | 3.392 px | 0.226 px | **0.208 px** |
| 3 | stone archway · texture 73 | 3.579 px | 0.428 px | 3.720 px | 0.777 px | **0.200 px** |
| 4 | carved mask on thatch · texture 85 | 3.672 px | 0.250 px | 3.730 px | 0.331 px | **0.227 px** |
Plain LK's answer is 1 pixel. At 1 px it scores 0.221 against a control of 1.118 — it is working. At 2 px it scores 1.524 against 2.236, which is two thirds of the way to having found nothing, and by 4 px it is indistinguishable from the control. The textbook's "one to two pixels" is right, and the useful half of the range is the first one.
DIS does not break anywhere in this sweep. Its error at 32 px (0.238) is lower than plain LK's at 1 px. It is also faster than Farnebäck.
### Each pyramid level roughly doubles the tractable motion
The largest displacement still handled with an EPE below half the displacement:
The 2^L story holds from level 1 onward. The first level buys a factor of 4, not 2 — the coarse level halves the displacement *and* blurs away the fine structure the linearisation was tripping over, so it gets paid twice. A 4-level pyramid takes a method that dies at 1 px and carries it to 32.
---

Code and full results on GitHub (code private)
Every number is read from the file the run produced. github.com/hammasbuilds · kaggle.com/muhammadhammas13