OmgZomg
-
Количество публикаций
31 -
Зарегистрирован
-
Посещение
-
Days Won
1
Сообщения, опубликованные пользователем OmgZomg
-
-
Всем привет!
Имеется гиперспектральное изображение, полученное в ближнем ИК диапазоне.
Список значений спектров:
[ 937.33 944.25 951.16 958.08 965. 971.92 978.85 985.77 992.7 999.64 1006.57 1013.51 1020.45 1027.39 1034.33 1041.27 1048.21 1055.17 1062.11 1069.07 1076.03 1082.98 1089.94 1096.91 1103.87 1110.84 1117.81 1124.78 1131.76 1138.73 1145.7 1152.68 1159.68 1166.66 1173.65 1180.64 1187.63 1194.62 1201.62 1208.62 1215.62 1222.62 1229.63 1236.64 1243.65 1250.66 1257.67 1264.68 1271.7 1278.72 1285.75 1292.78 1299.81 1306.83 1313.86 1320.9 1327.94 1334.98 1342.02 1349.06 1356.11 1363.16 1370.2 1377.26 1384.32 1391.38 1398.43 1405.49 1412.55 1419.63 1426.69 1433.76 1440.83 1447.91 1454.99 1462.07 1469.15 1476.23 1483.32 1490.41 1497.5 1504.59 1511.68 1518.79 1525.89 1532.98 1540.09 1547.2 1554.31 1561.42 1568.53 1575.65 1582.77 1589.89 1597.01 1604.14 1611.26 1618.39 1625.53 1632.65 1639.79 1646.93 1654.08 1661.22 1668.35 1675.51 1682.65 1689.8 1696.96 1704.12 1711.28 1718.44]
Как создать псевдо BGR изображение?
До этого я работал с данными, которые были получены с видимого спектра. И брал значения спектров соответствующим синего,зеленого и красного цвета (470,530,640). Какие спектры я должен взять здесь?
Спасибо
-
Разобрался
>>> im.shape (204, 512, 512) >>> cropped= im[:,374:274, 406:309] >>> tifffile.imsave('1.tiff',cropped) >>> cropped= im[:,274:374, 309:406] >>> cropped.shape (204, 100, 97)
- 1
-
-
Что-то не получается у меня нормальные сдвиги получить.
Может подскажете как получить сдвиги по X и Y?
-
Just now, Nuzhny said:1. Радианы. Но в общем случае твой способ может не работать.
Почему может не работать?
Как тогда правильно?
-
Угол поворта камеры определяю след.образом
angle = math.atan2(H[1, 0], H[0, 0])
где H - матрица гомографии. Вопрос - в чем он измеряется?
И еще вопрос: Из матрицы гомографии можно получить сдвиг изображения?
-
Как теперь с этим всем хозяйством получить, насколько изображения перекрывают друг друга?
У меня есть список дистанций между изображениями
Часть списка для примера:
{'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}
И есть реальные размеры на каждом изображении.
Понимаю, что нужно порог задать и всё такое. Но как воплотить в код, не пойму
Вообще задача сводится к построению мозайки изображений
-
Можно же через 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м
Ну не красотенюшка ли?)
- 1
-
1 hour ago, Smorodov said:Только расстояние между дескрипторами обратно пропорционально схожести точек.
Что Вы имеете ввиду? Где мне исправить?
-
Нужно измерить на сколько изображения перекрывают друг друга
Имеется 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
Теперь мне надо найти реальные размеры изображения. Не пиксельные, а в метрах.
Как это сделать?
Изображения представляют собой аэрофотоснимки с дрона.
-
Вот так сделал
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)
-
12 hours ago, Smorodov said:По горизонтали точки левого изображения, по вертикали правого, если соединяются то в пересечении 1 если нет, 0.
Получите матрицу смежности. Если есть качество сопоставления, можно сделать взвешенный граф, вместо 0 и 1 задавать вес.
Благодарю! Можно пример кода? Желательно на Python Особенно интересует этот момент "Если есть качество сопоставления, можно сделать взвешенный граф, вместо 0 и 1 задавать вес. ". Не могу пока никак сообразить как это закодить
-
У меня в цикле строится гомография между парами снимков.
Как это оформить в граф? Желательно в матрицу смежности
for b in s.left_list[1:]: H = s.matcher_obj.match(a, b, 'left')
-
Все изображения одинакового размера.
Сделал так:
на каждом изображении выбрал одну точку и посчитал смещение.
Далее создал пустое изображение (numpy матрица с n каналов).
И в эту пустую матрицу накидал изображений с учетом смещения.
Все получилось.
Вопрос: Я точку, чтобы посчитать смещение, на каждом изображении выбираю вручную. Можно ли как-то смещение найти автоматизированно?
-
On 10/21/2020 at 6:27 PM, Smorodov said:А что должно получиться ? Насколько я помню, stack сделает 6 слойное изображение.
Вы этого добиваетесь? Или нужно просто визуальное наложение с прозрачностью ?
Именно этого и добиваюсь. Я работаю с многослойными изображениями (мульти, гипер спектр).
Сейчас я одноканальные изображения "накладываю" друг на друга без учета сдвига. Это не очень хорошо.
Вот как этот сдвиг устранить?
И, кстати, не только 6 слойное. Я и 13 слойное делал.
-
Доброго времени суток, товарищи!
Имеются изображения. Не могу приложить к теме, позволяет только 80кб файл.
Их нужно наложить одно на другое. Но они со "сдвигом".
Как правильно их наложить, учитывая сдвиг? Чтоб всё совпало
Накладываю изображения с помощью функции numpy.stack()
Благодарю!
-
Всем доброго дня!
Загружаю изображение в обученную модель
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)
Что не так?)
-
19 hours ago, Nuzhny said:Кажется, что на сшитом уже ничего особо не сделаешь - раньше надо было делать то, что используется в stitching методах. А тут разве что классический deblocking может зайти, чтобы не попортить информацию. Debloking - это просто фильтр вдоль границ склейки по сути.
А есть где реализация этого фильтра на Python?
Найти нигде не могу
-
-
-
-
А если взять опорное изображение,где камера имеет нулевые углы, и сравнивать это изображение со всеми остальными функцией 'imreg.similarity'? Тогда будет давать угол между изображениями
-
Посмотрел Ваш код на гитхабе. Я так понял,чт он основан на питоновской библиотеке imreg. Мне как раз на питоне и нужно.Функция 'imreg.similarity' как раз возвращет angle. Это именно тот угол,который я пытаюсь определить?
-
10 minutes ago, Smorodov said:Там в ответе про угол обзора камеры, а не про поворот вообще.
Можете схему эксперимента обрисовать, чтобы понятно было относительно чего меряется угол ? Одинаковые ли изображения ?
Просто по одному произвольному изображению ничего о камере сказать нельзя. Есть специально созданные картинки, типа шахматки или маркеров для дополненной реальности, но о них мы все знаем.
Микроскоп едет по столу, где находится образец ткани и фотографирует его.
Нужно определить угла поворота камеры относительно осей стола, и обрезать кадр под параллели стола.
Из входных данных имеем фотографии под разными углами и координаты изображений.
Прикладываю несколько изображений для примера
Здесь все изображения
Получить псевдо BRG изображение
в Обсуждение общих вопросов
Опубликовано · Report reply
Что-то в этом есть толковое...Спасибо за помощь!