Agisoft Metashape

Agisoft Metashape => Other Languages => Topic started by: aldanstar on September 03, 2013, 12:50:30 AM

Title: Agisoft PhotoScan 1.0.0 pre-release
Post by: aldanstar on September 03, 2013, 12:50:30 AM
Здравствуйте уважаемые разработки и служба поддержки!

Вышедшая недавно Agisoft PhotoScan 1.0.0 pre-release была опробована и оставила приятные эмоции. Многие функции явно необходимы.

Несмотря на это остались некоторые предложения:
1. Сделать возможность изменение вида перспектива/ортоскопический в окне вьюера при нажатии в левом верхнем углу на соответствующую надпись;
2. Реализовать возможность быстрого перехода к виду сверху, справа, слева, спереди, сзади и снизу по положениям осей вьюера (как во многих 3D редакторах);
3. Сделать создание карт глубины пунктом пакетной обработки;
4. Желательно вернуть обратно возможность выравнивания, построения моделей, текстурирования (+карт глубины) через контекстное меню чанков;
5. !!!(К топику "Ортофотоплан в версии 0.9.1", в котором говорилось о построении ортофото для раскопов, так как остались артефакты и размытости) Если существует возможность построения текстуры без артефактов методом запекания на текстурный атлас сгенерированным в ортопроекции, то думаю существует возможность и задание привязки при экспорте текстуры, чтобы не перепривязывать в ГИС к ортофото с артефактами.
А вообще, стоит добавить отдельную функцию экспорта ортофото через такого рода метод, как альтернативу существующему методу построения ортофото (естественно с сохранением последнего). Причем как и в стандартом методе постоения ортофото иметь возможность выбрать тип построения (мозайка, уреднение и т.д.), поверхность среза: плановая с привзкой или же заданная пользователем плоскость по румбам или же по маркерам;
6. Не найдена была функция выравнивания осей сцены по БоудингБоксу (скрипт я так и не нашел на форуме);
7. Пока не заметил новых возможностей привязки геометрии (например: по плоскостям, как Scene, RapidForm)
8. Конечно очень необходима возможность экспорта геометрии в *.shp (ESRI Shape) класса Multipatch, но как я понимаю - это будет точно не скоро.

Заранее спасибо.
С глубоким уважением.
Александр.


P.S. Случайно наткнулся на проекты kscan3d и Artec Studio, которые используют в качестве сканирующего устройства Kinect. Принцип по идее - та же нестрогая фотограмметрия. Очень интересно. Думаю Ваши алгоритмы работали даже лучше и их не сложно было бы подстроить с помощью Kinect SDK(http://www.microsoft.com/en-us/kinectforwindows/develop/overview.aspx) для расширения функциональности программного продута. При этом статус кво экономической целесообразности перед лазерным сканированием не только сохраняется, но закрепляется это преимущество.

P.S.2 Во время работы в Болгаре у нас накопилось много обработанного в photoscan материала по раскопам, если Вам необходимы они для демонстрации возможностей программы будем рады поделится.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: Alexey Pasumansky on September 03, 2013, 01:03:05 PM
Добрый день, Александр,

Спасибо за Ваши комментарии.

2. Быстрое переключение между видами было реализовано с помощью "горячих клавиш", список которых можно посмотреть в меню "Вид".
1. Мы постараемся добавить дополнительную клавишу для пеерключения ортографической/перспективной проекций в одном из ближайших обновлений.

3. В версии 1.0.0 карты глубины сохраняются в проекте только при соответствующей включённой опции в окне Настроек программы. Поскольку был добавлен промежуточный этап построения Плотного Облака точек, на основе которого и строится геометрия, мы решили что дополнительная информация в проекте в виде карт глубины изыбточна, тем более, что необходимые ресурсы для хранения плотного облака значительно ниже, чем на хранение карт глубины.
Этап построения плотного облака точек доступен через меню пакетной обработки.

4. Постараемся это вернуть в ближайших обновлениях.

5. Работаем над решением этой проблемы.

6. Скрипт следующий (работает для всех блоков в проекте):
Code: [Select]
import PhotoScan
import math

doc = PhotoScan.app.document

for i in range(len(doc.chunks)):
chunk = doc.chunks[i]

R = chunk.region.rot
C = chunk.region.center

if chunk.transform:
T = chunk.transform
s = math.sqrt(T[0,0]*T[0,0] + T[0,1]*T[0,1] + T[0,2]*T[0,2])
S = PhotoScan.Matrix( [[s, 0, 0, 0], [0, s, 0, 0], [0, 0, s, 0], [0, 0, 0, 1]] )
else:
S = PhotoScan.Matrix( [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] )

T = PhotoScan.Matrix( [[R[0,0],R[0,1],R[0,2], C[0]], [R[1,0],R[1,1],R[1,2],C[1]], [R[2,0],R[2,1],R[2,2],C[2]], [0,0,0,1]])

chunk.transform = S * T.inv()

7. Привязка модели в настоящее время осуществляется исключительно через Ground Control pane (или с помощью скриптов). Возможно, такую привязку можно закодировать в скрипт.

8. Пока в ближайшее время мы не планируем добавлять экспорт модели в .shp файл. Насколько большие модели (по числу полигонов) могут открываться без проблем в приложениях, которыми Вы пользуетесь?

Спасибо за предложение по поводу результатов применения PhotoScan в археологии. Мы будем рады, если Вы готовы поделиться исходными данными или экспортированными результатами.
Если Ваши результаты уже опубликованы, то мы можем добавить ссылку на статью/интернет-адрес в соответствующий раздел нашей Wiki, либо на страницу PhotoScan featured projects.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: aldanstar on September 04, 2013, 12:32:02 AM
Спасибо за ответ и скрипт, который действительно полезен (желательно его реализовать в виде обращение через кнопку GUI).
Но увы я не могу согласиться с Вами, что такая информация как "карты глубины" не является полезной. Я работаю в Казанском университете и как научный сотрудник понимаю, что любая информация представляет интерес и может быть использована для анализа. Любые промежуточные данные имеют разностороннее применение. В том числе и реализованное представление сети сгущения (плотное облако точек). Лишать пользователей иметь возможность обратится к такого рода информации я бы не стал исключительно с научной точки зрения. Тем более, что это Ваш продукт, и расширение его возможностей только в угоду его дальнейшего развития. Пусть это старая функции, но возможность получения такого рода информации - только плюс.
С уважением, Александр.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: Alexey Pasumansky on September 04, 2013, 11:20:45 AM
Здравствуйте, Александр,

Начиная с версии 0.9.1 скрипты могут быть добавлены в качестве команд пользовательского меню (в дополнение к меню Файл, Редактировать и т.д.) для этого операции скрипта нужно задать в качестве функции, а в основном теле скрипта выполнить следующую команду:
Code: [Select]
PhotoScan.app.addMenuItem("Custom menu/My script 1", new_func) В этом случае будет создана команда "My script 1" в меню "Custom menu", которая при запуске будет выполнять функцию new_func, описанную в скрипте.

Что касается карт глубины, то они по-прежнему могут храниться в файле проекта, если включена соответствующая опция в осне настроек программы. Поскольку карты глубины в любом случае отстраиваются во время этапа построения плотного облака точек, возможно, дополнительный пункт пакетной обработки будет лишним.
Какие-либо дополнительные операции с картами глубины, которые невозможны через интерфейс программы, могут быть запрограммированы в скриптах (с версии 0.9.1 можно создавать из скриптов диалоговые окна с помощью модуля PySide). Так что если потребуется какая-то помощь в создании скриптов, пожалуйста, обращайтесь.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: aldanstar on September 06, 2013, 08:11:41 PM
Спасибо большое за ответ и дополнение к скрипту.
Скрипт работает, но добавить в виде кнопки не получается.
Вроде задаю функцию и таблирую все, что ниже, но увы да ах...

PhotoScan.app.addMenuItem("Custom menu/My script 1", aligntoBB)   
doc = PhotoScan.app.document
def aligntoBB():


Я бы хотел бы привлечь Ваше внимание к следующему проекту Tandent Lightbrush:
http://www.tandent.com/lightbrush/
Алгоритмы позволяют избавляться от теней (точнее сепарировать изображение на карту освещенности и цвет) - 2-го после растительности врага фотограмметрии. Посмотрите, может быть подружитесь. У них есть решения и для 4х-мерного пространства.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: Alexey Pasumansky on September 08, 2013, 05:01:26 PM
Здравствуйте, Александр,

Строчку PhotoScan.app.addMenuItem() нужно добавлять в конец скрипта после того, как основная функция была определена.

Если возникают какие-либо проблемы со скриптами, пожалуйста, копируйте сообщения об ошибке из панели Console.

P.S. переключение между ортографическим и перспективным режимами теперь доступно (PhotoScan 1.0.0 build 1742) по "горячей клавише" 5.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: aldanstar on September 23, 2013, 12:00:48 AM
Большое спасибо.
А не могли бы Вы опубликовать обратный скрипт, т.е. скрипт подведения осей Bouding Box к сцене. Просто попытки самому заскриптовать ни к чему не приводят.
Заранее спасибо.
С уважением,
Александр.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: Alexey Pasumansky on September 23, 2013, 12:16:47 AM
Здравствуйте, Александр,

В обратную сторону должен работать этот скрипт:

Code: [Select]
import PhotoScan
import math

doc = PhotoScan.app.document
chunk = doc.activeChunk
T = chunk.transform

v = PhotoScan.Vector( [0,0,0,1] )
v_t = T * v
v_t.size = 3

m = chunk.crs.localframe(v_t)
m = T * m

s = math.sqrt(m[0,0]*m[0,0] + m[0,1]*m[0,1] + m[0,2]*m[0,2]) #scale factor
R = PhotoScan.Matrix( [[m[0,0],m[0,1],m[0,2]], [m[1,0],m[1,1],m[1,2]], [m[2,0],m[2,1],m[2,2]]])
R = R * (1. / s)

reg = chunk.region
reg.rot = R
chunk.region = reg
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: aldanstar on September 23, 2013, 01:04:17 PM
Большое спасибо.
Есть предложение в разделе Wiki создать подраздел для публикации пользовательских скриптов. На подобии как это сделано для Unity3D (http://wiki.unity3d.com/index.php/Scripts)
Обещанные данные пришлю где нибудь в начале ноября, когда нормально все сведу и отполирую:)
Еще раз большое спасибо.
С уважением, Александр.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: aldanstar on October 09, 2013, 12:14:10 AM
В обратную сторону скрипт не работает:(
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: Alexey Pasumansky on October 09, 2013, 02:18:49 AM
Здравствуйте, Александр,

Выдаётся ли при этом какая-либо ошибка?

Возможно, дело в том, что блок не привязан, в таком случае строчку
T = chunk.transform нужно заменить на следующий код:
Code: [Select]
if chunk.transform:
    T = chunk.transform
else:
    T = PhotoScan.Matrix().diag([1,1,1,1])
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: aldanstar on October 11, 2013, 03:21:37 AM
Блог действительно не привязан. Ни каких сообщений нет. Но даже после подмены ни чего не происходит, BB не принимает базис пространства в окне. при этом скрипт с принятием базиса самого BB для пространства работает идеально.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: Alexey Pasumansky on October 14, 2013, 02:33:22 PM
Добрый день, Александр,

Довольно странно, только что протестировал скрипт - в версии 1.0.0 всё работает даже для изначально непривязанных блоков:
Code: [Select]
import PhotoScan
import math

doc = PhotoScan.app.document
chunk = doc.activeChunk
T = chunk.transform

if chunk.transform:
    T = chunk.transform
else:
    T = PhotoScan.Matrix().diag([1,1,1,1])

v = PhotoScan.Vector( [0,0,0,1] )
v_t = T * v
v_t.size = 3

m = chunk.crs.localframe(v_t)
m = T * m

s = math.sqrt(m[0,0]*m[0,0] + m[0,1]*m[0,1] + m[0,2]*m[0,2]) #scale factor
R = PhotoScan.Matrix( [[m[0,0],m[0,1],m[0,2]], [m[1,0],m[1,1],m[1,2]], [m[2,0],m[2,1],m[2,2]]])
R = R * (1. / s)

reg = chunk.region
reg.rot = R
chunk.region = reg
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: aldanstar on October 15, 2013, 02:25:39 AM
Еще раз скопировал скрипт, сохранил. Пытался выполнить для различных проектов, с переключением режимов, на различных языках в версии 1.0.0. Все тщетно. Первый скрипт с выравниваем осей к ББ работает идеально. Последний питон Python32.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: Alexey Pasumansky on October 16, 2013, 04:52:11 PM
Здравствуйте, Александр,

Возможно, bounding box уже находится в соответствии с системой координат чанка, например, если до этого использовался первый скрипт. Попробуйте, пожалуйста, изменить размеры и ориентацию bounding box, а затем запустить скрипт ещё раз и посмотреть, изменилось ли что-нибудь.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: aldanstar on October 23, 2013, 06:35:59 AM
Здравсвуйте, Алексей.
В том то и дело, что на данный момент нет особой задачи, которая бы требовала исполнения скрипта. Я его трестирую, так как знаю, что задачи где это понадобится возможны. Для этого я открываю разные проекты и всегда меняю bounding box: как размеры, так и положение.
С уважением, Александр.
Title: Re: Agisoft PhotoScan 1.0.0 pre-release
Post by: Alexey Pasumansky on January 27, 2015, 12:17:32 PM
Большое спасибо.
Есть предложение в разделе Wiki создать подраздел для публикации пользовательских скриптов. На подобии как это сделано для Unity3D (http://wiki.unity3d.com/index.php/Scripts)
Здравствуйте, Александр,

по просьбе пользователей форума мы решили "оживить" Wiki, посвящённую PhotoScan'у, заодно добавили раздел, где можно публиковать свои скрипты: http://wiki.agisoft.com/wiki/Python
По возможности, будем и сами добавлять туда скрипты для стандартных задач.