← all work classical-computer-vision

Keypoint detectors

[![Python 3.10+](https://img.shields.io/badge/python-3.10+-3776AB?logo=python&logoColor=white)](https://www.python.org/)

Result

SrScene**Harris**Shi-TomasiFASTSIFTORBAKAZEBRISK
1scuba diver and fish · edges 12%**0.981**0.7590.7930.8290.9020.8910.768
2polar bear on a rail · edges 18%**0.985**0.8650.8060.8230.6740.8040.740
3glass pyramid · edges 23%**0.909**0.8460.7400.7130.8460.8780.731
4coiled snake · edges 30%**0.921**0.8570.7540.7270.8160.8730.721

The finding

Harris does not win by finding more points — but it does concentrate them

Harris returns ~1000 keypoints and AKAZE ~357. More keypoints means more chances for one to land inside the 3 px match radius, so the natural objection is that Harris wins on density. Randomly discarding its keypoints answers it:

Flat. A tenth of the keypoints scores the same as all of them. Randomly subsampled, so the survivors are not quietly reselected for quality. Pinned by test_harris_does_not_win_by_finding_more_keypoints.

So density is not the explanation — but placement partly is. Harris's 33.5% coverage against SIFT's 80.6% says the two are not solving the same problem: Harris is answering "where are the most reliable corners", and a homography needs "where are reliable corners *spread across the frame*". Pinned by test_harris_trades_frame_coverage_for_repeatability.

---

Figures

keypoints.png
keypoints

Elsewhere

Code and full results on GitHub (code private)

Every number is read from the file the run produced. github.com/hammasbuilds · kaggle.com/muhammadhammas13