Сопоставление функций OpenCV для изображений с низкой контрастностьюPython

Программы на Python
Ответить
Anonymous
 Сопоставление функций OpenCV для изображений с низкой контрастностью

Сообщение Anonymous »

Публикую здесь впервые!
Мне трудно сопоставить характеристики с прикрепленными изображениями.
Обычно я был успешно с другими изображениями с помощью SIFT. Соответствующий код приведен ниже. Вы можете увидеть переданные мной параметры, связанные с прикрепленным совпадающим изображением.
Возможно, я использую неправильный подход... но мне действительно нужно сопоставление с инвариантом вращения.
Ищу помощь или предложения о том, как действовать иначе.
Я попробовал множество различных операций предварительной обработки (расширение/расширение, контрастность, шумоподавление, коррекция гистограммы, края, контрастность, размытие, пороговое значение). ....).
Я пытался отфильтровать шум на изображении и по-настоящему выделить темные области, чтобы SIFT мог найти что-то более конкретное.
Я посмотрел на сопоставление изображений, но, как я уже говорил, мне нужно вращение.
Благодарю за помощь!
изображение 1:
Изображение

изображение 2:
Изображение

Вот код, который можно скопировать с изображениями выше:
import cv2

img_obj_raw = cv2.imread('b3KDF_01.png')
output_cropped = img_obj_raw[93:(93+185),121:(121+237)]
img_obj = output_cropped

img_scn_raw = cv2.imread('b3KDF_02.png')
output_cropped = img_scn_raw[68:(68+235),96:(96+287)]
img_scn = output_cropped

img_obj = cv2.cvtColor(img_obj, cv2.COLOR_BGR2GRAY)
img_scn = cv2.cvtColor(img_scn, cv2.COLOR_BGR2GRAY)

# Adaptive Histogram equalization
clahe = cv2.createCLAHE(clipLimit=5, tileGridSize=(20, 20))
img_obj = clahe.apply(img_obj)
img_scn = clahe.apply(img_scn)

# create SIFT feature extractor
sift = cv2.SIFT_create(nfeatures = 0, nOctaveLayers = 3, contrastThreshold = 0.04, edgeThreshold = 10, sigma = 1.6)

# detect features from the image
keypoints_obj, descriptors_obj = sift.detectAndCompute(img_obj, None)
keypoints_scn, descriptors_scn = sift.detectAndCompute(img_scn, None)

# create feature matcher
FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks=50)
matcher = cv2.FlannBasedMatcher(index_params,search_params)

matches = matcher.knnMatch(descriptors_obj, descriptors_scn, k=2)

# Apply ratio test
good_matches = []
ratio = 0.5
for m,n in matches:
if m.distance < ratio*n.distance:
good_matches.append([m])

img_obj_rawkp = cv2.drawKeypoints(img_obj, keypoints_obj, None)
img_scn_rawkp = cv2.drawKeypoints(img_scn, keypoints_scn, None)

# draw matches
img_matched = cv2.drawMatchesKnn(img_obj_rawkp, keypoints_obj, img_scn_rawkp, keypoints_scn, good_matches, None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)
cv2.imshow('img_matched', img_matched)
cv2.waitKey(0)
cv2.destroyAllWindows()


Подробнее здесь: https://stackoverflow.com/questions/792 ... ast-images
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»