OpenCV не может найти углы шахматной доски - PullRequest
0 голосов
/ 30 мая 2019

Я работаю с ИК-камерой и пытаюсь выяснить, нет ли у нас искажения объектива. Я использую пример из OpenCV здесь для руководства моей работой. Я использовал шаблон шахматной доски из здесь и прикрепил его к обратной стороне книги. Прежде чем делать какие-либо снимки, я нагрел книгу / бумагу и заметил, что рисунок шахматной доски очень четкий.

Я взял ~ 50 неподвижных кадров с наклоненным / перемещенным шахматным рисунком, чтобы каждая часть кадра содержала некоторую часть рисунка. Пример одного из моих изображений ниже:

example calibration image

Я использовал следующий код, который привел к False для каждого изображения. Я попробовал каждую комбинацию размеров сетки из (5-9, 5-9).

import numpy as np
import cv2
import glob2 as glob
import matplotlib.pyplot as plt

base = 'pathtoimages/'
files = glob.glob(base + '*.png')

for file in files:
    img = cv2.imread(file)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret, corners = cv2.findChessboardCorners(gray, (6,8), None)

    print (ret)

Я не могу понять, почему алгоритм не находит углы. Есть идеи?

Изменить 30 мая 2019:

Сегодня я сделал еще несколько снимков с помощью камеры. Я сделал фотографии в более контролируемой среде без каких-либо внешних источников света. Эти новые изображения все еще не в состоянии обнаружить угол доски поиска. Я попытался увеличить контраст и яркость, используя cv2.convertScaleAbs, чтобы получить следующее изображение в качестве примера.

Increased Contrast

Это также не помогает. Если я использую cv2.goodFeaturesToTrack для поиска углов, я получаю следующий результат:

corners

Похоже, алгоритм определения углов Opencv активно избегает моих углов шахматной доски. Он найдет любой угол, который сможет, прежде чем найти его на шахматной доске. Я действительно озадачен здесь.

В качестве проверки работоспособности я убедился, что openCV может найти углы на оригинальной шахматной доске, которую я использую, и она отлично работала.

Есть идеи?

Изменить 4 июня 2019 г .:

В итоге я написал скрипт, который позволяет мне вручную назначать каждый из углов. Мне удалось успешно получить модель искажения камеры. У меня все еще нет решения, почему углы не могут быть автоматически найдены openCV. Я думаю, что если бы я сделал это снова в ИК, я бы создал собственную сетку, которая увеличивает контраст между ячейками сетки просто из-за различий в тепловых свойствах между «белыми» и «черными» ячейками сетки (используйте разные материалы).

...