Публикую здесь впервые!
Мне трудно сопоставить характеристики с прикрепленными изображениями.
Обычно я был успешно с другими изображениями с помощью SIFT. Соответствующий код приведен ниже. Вы можете увидеть переданные мной параметры, связанные с прикрепленным совпадающим изображением.
Возможно, я использую неправильный подход... но мне действительно нужно сопоставление с инвариантом вращения.
Ищу помощь или предложения о том, как действовать иначе.
Я попробовал множество различных операций предварительной обработки (расширение/расширение, контрастность, шумоподавление, коррекция гистограммы, края, контрастность, размытие, пороговое значение). ....).
Я пытался отфильтровать шум на изображении и по-настоящему выделить темные области, чтобы SIFT мог найти что-то более конкретное.
Я посмотрел на сопоставление изображений, но, как я уже говорил, мне нужно вращение.
Благодарю за помощь!
изображение 1 введите здесь описание изображения
изображение 2 введите здесь описание изображения< /p>
Вот код, который можно скопировать с изображениями. выше:
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
Сопоставление функций OpenCV для изображений с низкой контрастностью ⇐ Python
Программы на Python
1732499764
Anonymous
Публикую здесь впервые!
Мне трудно сопоставить характеристики с прикрепленными изображениями.
Обычно я был успешно с другими изображениями с помощью SIFT. Соответствующий код приведен ниже. Вы можете увидеть переданные мной параметры, связанные с прикрепленным совпадающим изображением.
Возможно, я использую неправильный подход... но мне действительно нужно сопоставление с инвариантом вращения.
Ищу помощь или предложения о том, как действовать иначе.
Я попробовал множество различных операций предварительной обработки (расширение/расширение, контрастность, шумоподавление, коррекция гистограммы, края, контрастность, размытие, пороговое значение). ....).
Я пытался отфильтровать шум на изображении и по-настоящему выделить темные области, чтобы SIFT мог найти что-то более конкретное.
Я посмотрел на сопоставление изображений, но, как я уже говорил, мне нужно вращение.
Благодарю за помощь!
изображение 1 введите здесь описание изображения
изображение 2 введите здесь описание изображения< /p>
Вот код, который можно скопировать с изображениями. выше:
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()
Подробнее здесь: [url]https://stackoverflow.com/questions/79221420/opencv-feature-matching-for-low-contrast-images[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия