Я использую следующий код для наложения изображений, полученных с помощью другой микроскопии.Два изображения описывают одну и ту же ткань, но с разными методами.
def match_images_using_orb(em_image, confocal_image):
gray_confocal = cv2.cvtColor(confocal_image, cv2.COLOR_RGB2GRAY)
#em_image is already gray
orb = cv2.ORB_create(500)
keypoints1, descriptors1 = orb.detectAndCompute(em_image, None)
keypoints2, descriptors2 = orb.detectAndCompute(gray_confocal, None)
#brute force matcher
matcher = cv2.BFMatcher(cv2.NORM_HAMMING)
matches = matcher.match(descriptors1, descriptors2)
matches.sort(key = lambda x: x.distance, reverse = False)
top_matches = int(len(matches) * 0.1)
matches = matches[:top_matches]
imMatches = cv2.drawMatches(em_image, keypoints1, gray_confocal, keypoints2, matches, None)
points1 = np.zeros((len(matches), 2), dtype = np.float32)
points2 = np.zeros((len(matches), 2), dtype = np.float32)
for i, match in enumerate(matches):
points1[i, :] = keypoints1[match.queryIdx].pt
points2[i, :] = keypoints2[match.trainIdx].pt
h, _ = cv2.findHomography(points1, points2, cv2.RANSAC)
height, width, _ = em_image.shape
try:
#exclude negative homography
if h[ h < 0].size == 0:
em_reg = cv2.warpPerspective(confocal_image, h, (width, height))
else:
return False
except:
return False
else:
return (imMatches, em_reg, h)
Поскольку два изображения различны, но имеют общие метки, использование этого алгоритма может быть неправильным.
Моя цель - узнать, где находится зеленый и красный цвета на увеличенном изображении.Для этого мне нужно повернуть изображение в соответствии с гомографией в зависимости от некоторых наземных отметок, как показано на изображении ниже (просто пример)
Так что мой вопрос таков;если я уже знаю некоторые ориентиры, такие как синий цвет на обоих из двух изображений (синий цвет), как передать гомографию этих ориентиров к алгоритму вручную, чтобы повернуть маленькое изображение в позиции записи, чтобы я мог знать, где находится зеленый и красный цветанаходится (неизвестно).
![enter image description here](https://i.stack.imgur.com/9QpJo.jpg)