Глядя на изображение, я предполагаю, что ложные срабатывания обнаружения углов вызваны артефактами сжатия , представленными алгоритмом сжатия с потерями, используемым программным обеспечением для получения изображений с вашей веб-камеры. Вы можете четко заметить звенящих артефактов по краям полей шахматной доски.
Вы можете попробовать две разные вещи:
- Проверьте в программе сбора данных вашей веб-камеры, можете ли вы отключить сжатие или перейти на сжатие без потерь
- Работая с уже имеющимся изображением, вы можете попытаться смягчить влияние сжатия, преобразовав изображение в двоичную форму с помощью простой операции пороговой обработки (что в случае шахматной доски не будет даже означать потерю информации, поскольку изображение по сути является двоичным ).
В случае, если вы хотите перейти к варианту 2) Я бы предложил сделать следующие шаги. Давайте предположим, что переменная, хранящая ваше изображение, называется img
- посмотрите на распределение значений серого, используя, например, imhist работает следующим образом:
imhist(img)
- В идеале вы должны увидеть чистое бимодальное распределение без перекрытия. Выберите значение интенсивности
I
в середине двух пиков
- Затем просто преобразуйте в двоичную форму, назначив
img(img<I) = 0; img(img>I) = 255
(при условии, что img имеет тип uint8).
- Затем снова запустите угловой алгоритм и посмотрите, исчезли ли выбросы