Мне нужно выделить ключевые функции на обоих изображения, чтобы затем сшить их вместе.
Если посмотреть на изображение визуально, можно увидеть несколько ключевых особенностей, которые заметно повторяются между двумя изображениями (например, все провода сзади).
Однако из-за чрезвычайно яркой линии в центре изображений и аналогичного контраста между фоном и объектами я не смог правильно определить ключевые элементы, а затем сшить изображения вместе. .
- Мой первый проход дал такой результат: сначала попробуйте. Я почти не нашел ключевых точек, и почти все они были сосредоточены вдоль светлых пятен.
Мой базовый код здесь был просто:
Код: Выделить всё
sift = cv.SIFT_create()
(kps, features) = sift.detectAndCompute(img, None)
imgKPS = cv.drawKeypoints(img, kps, None)
- Сначала я поигрался с порогом контрастности, и это дало мне гораздо большее количество баллов. Однако большинство ключевых точек на проводах все еще были пропущены и вместо этого сгруппированы вдоль светлых пятен.
(см. это изображение).
Изменение в коде было таким:< /li>
Код: Выделить всё
sift = cv.SIFT_create(contrastThreshold = 0.02)
- Затем я попытался использовать функциюqualizeHist в OpenCV, чтобы затемнить провода на заднем плане изображения, однако результат был ужасен: третья попытка. Шум на этом изображении был настолько сильным, что алгоритм SIFT не смог отличить полезные данные от шума.
Изменение в коде было следующим:
Код: Выделить всё
tempImage = cv.equalizeHist(tempImage)
4) Теперь я попробовал использовать GaussianBlur и порог, функцию Skimage Exposure и порог_yen< /код>. Каждый из них продолжает усугублять мою проблему, и я застреваю.
Если бы кто-нибудь мог помочь, я был бы очень признателен.
TLDR: нужно выделить ключевые точки на фоне моего низкоконтрастного изображения.
Код алгоритма SIFT:
< pre class="snippet-code-html lang-html Prettyprint-override">
Код: Выделить всё
def SIFTAlgo(img):
# SIFT Algorithm
sift = cv.SIFT_create()
(kps, features) = sift.detectAndCompute(img, None)
imgKPS = cv.drawKeypoints(img, kps, None)
print("Number of keypoints", len(kps))
printF(imgKPS)
return (kps, features, imgKPS)Мое идеальное выходное изображение должно иметь точки в следующих местах (очевидно, в гораздо большей степени):
идеально
Подробнее здесь: https://stackoverflow.com/questions/784 ... -in-opencv