Найдите 2D-преобразование для объединения / объединения 2 наборов данных (кортежей) с перекрытием в python с помощью sklearn - PullRequest
1 голос
/ 06 мая 2020

Допустим, у меня есть 2 набора данных / кортежей «Левый» и «Правый». Некоторые значения присутствуют в обоих наборах данных из-за перекрытия. Как мне найти лучшую трансформацию для «Правого», чтобы совместить его с «Левым»? Я только что нашел преобразование geometri c для матриц и изображений, но не для наборов данных.

В этом примере данные идентичны, за исключением преобразования. Что делать, если данные немного отличаются из-за шума? Лучшее преобразование было бы результатом RANSA C Fit, то есть гомографии. Это должно быть возможно с помощью Sklearn (Scikit-learn), не так ли? Опять же, большинство результатов, которые я смотрел, были основаны на матрицах и изображениях, а не на наборах данных.

У меня такое чувство, что эта проблема возникала много раз, и хорошее решение определенно где-то там, но, к сожалению, я не смог найти любой.

Большое спасибо за вашу помощь!

example datasets

import numpy as np
import matplotlib.pyplot as plt

#Load data from txt file
dataleft = np.genfromtxt(r'C:\Data2MergeLeft.txt',delimiter="\t")
dataright = np.genfromtxt(r'C:\Data2MergeRight.txt',delimiter="\t")

#Find overlap
overlapleft = np.where(dataleft[:,0]>=dataright[1,0])[0]
overlapright = np.where(dataright[:,0]<dataleft[-1,0])[0]

#Trim data (overlap only)
olleft = dataleft[overlapleft]
olright = dataright[overlapright]

#Transformed data ->newarray
olrightnew = olright

#Initial values of transformation
offsetx = 10
linyconstant = 5
linyfactor = 1.2

#Loop for optimization
#Transformation
olrightnew[:,0] = olright[:,0]-offsetx
olrightnew[:,1] = (olright[:,1]-linyconstant)/linyfactor

#Residual
residuals = olright[:,1]-olrightnew[:,1]
sqresidual = residuals*residuals
residual = np.sum(sqresidual)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...