Jump to content
Compvision.ru

OmgZomg

Пользователи
  • Content count

    27
  • Joined

  • Last visited

Community Reputation

1 Новичек

About OmgZomg

  • Rank
    Бывалый

Profile Information

  • Пол
    Мужской
  1. Что-то не получается у меня нормальные сдвиги получить. Может подскажете как получить сдвиги по X и Y?
  2. Почему может не работать? Как тогда правильно?
  3. Угол поворта камеры определяю след.образом angle = math.atan2(H[1, 0], H[0, 0]) где H - матрица гомографии. Вопрос - в чем он измеряется? И еще вопрос: Из матрицы гомографии можно получить сдвиг изображения?
  4. Как теперь с этим всем хозяйством получить, насколько изображения перекрывают друг друга? У меня есть список дистанций между изображениями Часть списка для примера: {'filename1': 'dji_0666.jpg', 'filename2': 'dji_0667.jpg', 'distance': 1.4510858010828085} {'filename1': 'dji_0663.jpg', 'filename2': 'dji_0664.jpg', 'distance': 1.4625754772170405} {'filename1': 'dji_0652.jpg', 'filename2': 'dji_0653.jpg', 'distance': 1.7807144386327662} {'filename1': 'dji_0659.jpg', 'filename2': 'dji_0660.jpg', 'distance': 1.8890964513768231} {'filename1': 'dji_0644.jpg', 'filename2': 'dji_0645.jpg', 'distance': 1.9983018138089903} {'filename1': 'dji_0655.jpg', 'filename2': 'dji_0656.jpg', 'distance': 2.1954923719218247} {'filename1': 'dji_0647.jpg', 'filename2': 'dji_0648.jpg', 'distance': 2.3366167661177} И есть реальные размеры на каждом изображении. Понимаю, что нужно порог задать и всё такое. Но как воплотить в код, не пойму Вообще задача сводится к построению мозайки изображений
  5. Можно же через GSD,не? Image Width: 4000px Image Height: 3000px Sensor Width: 13.2mm Sensor Height: 4.55 mm Focal Length: 3.57 mm Высота полета 91.088004м Далее по формуле (https://www.propelleraero.com/blog/ground-sample-distance-gsd-calculate-drone-data/) расчитываем GSD и получаем cm/px. В моем случае для одного из изображений -3.94 cm/px Далее 4000*3.94 и 3000*3.94 В итоге ширина/высота = 157,6м/118,2м Ну не красотенюшка ли?)
  6. Что Вы имеете ввиду? Где мне исправить?
  7. Нужно измерить на сколько изображения перекрывают друг друга Имеется lat,lon для каждого изображения Вычисляю разницу в метрах для каждого изображения from math import sin, cos, sqrt, atan2, radians R = 6373.0 #для первых двух изображений lat1 = radians(123.114661) lon1 = radians(38.426805) lat2 = radians(123.114650) lon2 = radians(38.426831) dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2 c = 2 * atan2(sqrt(a), sqrt(1 - a)) distance = R * c distance_in_meters=distance * 1000 >>> distance_in_meters 1.9983018138089903 Теперь мне надо найти реальные размеры изображения. Не пиксельные, а в метрах. Как это сделать? Изображения представляют собой аэрофотоснимки с дрона.
  8. Вот так сделал def match(self, i1, i2, direction=None): imageSet1 = self.getSURFFeatures(i1) imageSet2 = self.getSURFFeatures(i2) print("Direction : ", direction) matches = self.flann.knnMatch( imageSet2['des'], imageSet1['des'], k=2 ) good = [] for i , (m, n) in enumerate(matches): if m.distance < 0.7*n.distance: good.append((m.trainIdx, m.queryIdx)) if len(good) > 4: pointsCurrent = imageSet2['kp'] pointsPrevious = imageSet1['kp'] matchedPointsCurrent = np.float32( [pointsCurrent[i].pt for (__, i) in good] ) matchedPointsPrev = np.float32( [pointsPrevious[i].pt for (i, __) in good] ) H, s = cv2.findHomography(matchedPointsCurrent, matchedPointsPrev, cv2.RANSAC, 4) return H,sum(s) / len(s) return None def getSURFFeatures(self, im): gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) kp, des = self.surf.detectAndCompute(gray, None) return {'kp':kp, 'des':des} N = len(img_list) adjacency_matrix = np.zeros((N, N)) for i in range(N): for j in range(i + 1, N): out = s.matcher_obj.match(lst[i], lst[j], 'left') if out is not None: H, s = out if s >= 0.5: adjacency_matrix[i, j] = 1 adjacency_matrix[j, i] = 1 print('AM',adjacency_matrix)
  9. Благодарю! Можно пример кода? Желательно на Python Особенно интересует этот момент "Если есть качество сопоставления, можно сделать взвешенный граф, вместо 0 и 1 задавать вес. ". Не могу пока никак сообразить как это закодить
  10. У меня в цикле строится гомография между парами снимков. Как это оформить в граф? Желательно в матрицу смежности for b in s.left_list[1:]: H = s.matcher_obj.match(a, b, 'left')
  11. Все изображения одинакового размера. Сделал так: на каждом изображении выбрал одну точку и посчитал смещение. Далее создал пустое изображение (numpy матрица с n каналов). И в эту пустую матрицу накидал изображений с учетом смещения. Все получилось. Вопрос: Я точку, чтобы посчитать смещение, на каждом изображении выбираю вручную. Можно ли как-то смещение найти автоматизированно?
  12. Именно этого и добиваюсь. Я работаю с многослойными изображениями (мульти, гипер спектр). Сейчас я одноканальные изображения "накладываю" друг на друга без учета сдвига. Это не очень хорошо. Вот как этот сдвиг устранить? И, кстати, не только 6 слойное. Я и 13 слойное делал.
  13. Доброго времени суток, товарищи! Имеются изображения. Не могу приложить к теме, позволяет только 80кб файл. Их нужно наложить одно на другое. Но они со "сдвигом". Как правильно их наложить, учитывая сдвиг? Чтоб всё совпало Накладываю изображения с помощью функции numpy.stack() Благодарю!
  14. Всем доброго дня! Загружаю изображение в обученную модель from keras.models import load_model import numpy as np from keras.preprocessing import image model = load_model('my_model33-16.h5') img_path='/home/alexander/s_gray/3_39095_31718.png' img = image.load_img(img_path) img_tensor = image.img_to_array(img) img_tensor = np.expand_dims(img_tensor, axis=0) Выдает ошибку ValueError: Error when checking input: expected img to have shape (128, 128, 1) but got array with shape (128, 128, 3) Изображения уже переведены в grayscale import os from PIL import Image files = os.listdir('/home/alexander/s2/') for f in files: img=Image.open('/home/alexander/s2/'+f) gray = img.convert('L') im_resized = gray.resize((128, 128)) im_resized.save('/home/alexander/s_gray/'+f) Что не так?)
  15. А есть где реализация этого фильтра на Python? Найти нигде не могу
×