Я пытаюсь написать приложение для классификации и сохранения дикого леопарда в Южной Азии. Для этого у меня есть основная задача идентифицировать леопардов по их точечному рисунку на лбу.
В настоящее время я использую следующий подход:
- Храните известные изображения лба леопарда как базовый список
- Получите предоставленное пользователем изображение леопарда и обрежьте лоб леопарда
- Предварительная обработка изображений с помощью двустороннего фильтра для уменьшения шума
- Определите ключевые точки с использованием алгоритма SIFT
- Использование средства сопоставления FLANN для получения совпадений KNN
- Выбор хороших совпадений на основе порогового значения отношения
Пример кода:
# Pre-Process & reduce noise.
img1 = cv.bilateralFilter(baseImg, 9, 75, 75)
img2 = cv.bilateralFilter(userImage, 9, 75, 75)
detector = cv.xfeatures2d_SIFT.create()
keypoints1, descriptors1 = detector.detectAndCompute(img1, None)
keypoints2, descriptors2 = detector.detectAndCompute(img2, None)
# FLANN parameters
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=50) # or pass empty dictionary
matcher = cv.FlannBasedMatcher(index_params, search_params)
knn_matches = matcher.knnMatch(descriptors1, descriptors2, 2)
allmatchpointcount = len(knn_matches)
ratio_thresh = 0.7
good_matches = []
for m, n in knn_matches:
if m.distance < ratio_thresh * n.distance:
good_matches.append(m)
goodmatchpointcount = len(good_matches)
print("Good match count : ", goodmatchpointcount)
matchsuccesspercentage = goodmatchpointcount/allmatchpointcount*100
print("Match percentage : ", matchsuccesspercentage)
Проблемы, с которыми я сталкиваюсь при таком подходе:
Этот метод имеет средне-низкий уровень успеха и имеет тенденцию к сбою, когда есть новое пользовательское изображение.
Пользовательские изображения иногда снимаются под разными углами, когда некоторые комбинации клавиш не видны или деформированы.
Пользователь качество изображения влияет на значимость результата матча icantly.
Я ценю любые предложения по улучшению этого положения любым способом.
Образцы изображений
Базовое изображение
Выше приведено соответствие ниже: (Соответствует неверный шаблон)
Дополнительные образцы изображений по запросу.