|
|
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Джентльмены, возник небольшой вопрос. Имеется условно прямоугольная сетка кадров, снятых с перекрытием, далее они попарно совмещаются. Для совмещения кадры нужно загрузить. Кадров может быть до нескольких тысяч, в памяти их всех разместить невозможно, поэтому приходится делать вытесняющий кэш заданного объема. Необходимо составить алгоритм обхода пар так, чтобы минимизировать количество загрузок. Наверняка есть похожие стандартные задачи, но я о них ничего не знаю. Подскажите, куда копать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 09:38 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, А две строки/столбца в сетке возможно в памяти разместить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 09:49 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
miksoft, Сейчас так и делается, но при большом числе кадров уже не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 09:56 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Думаю, можно сократить расход до одной строки/столбца плюс 1-2 кадра на перехлест. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 10:03 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, не уверен, но м.б. фрактальная нумерация кадров как точек плоскости поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 12:28 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
miksoftДумаю, можно сократить расход до одной строки/столбца плюс 1-2 кадра на перехлест.Если и так будет слишком много, то резать исходную сетку на полосы перпендикулярно направлению "сканирования". Ширину полос выбирать исходя из доступной памяти. Правда, пограничные изображения придется грузить дважды. Поэтому полосы желательно не делать слишком узкими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 12:41 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
ИМХУ просто построчно обходить меняя направление обхода. Т.е. в таком порядке 1 2 3 4 8 7 6 5 9 ... Тут если кэша хватит на одну строку, то повторного считывания в кэш не потребуется. В худшем случае надо будет пересчитать крайние элементы последней законченной строки. Если проблема в потери времени на загрузку в кэш, то задача легко распараллеливается: строить план на 5-10 шагов вперед и пока считается текущий кадр скачивать необходимые для следующего рассчета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 13:02 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Dima TТут если кэша хватит на одну строку, то повторного считывания в кэш не потребуется.Увы, нужно на две. При обработке 8-ого кадра, 1-ый все еще нужен. А вот если не менять направление, то нужно хранить одну строку плюс 2 кадра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 13:07 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
miksoftПри обработке 8-ого кадра, 1-ый все еще нужен. А вот если не менять направление, то нужно хранить одну строку плюс 2 кадра. Согласен, так меньше кэша надо. Но если в кэш влезет меньше одной + 2 кадра, то без смены направления надо будет повторно считывать каждый кадр, а при смене направлений - только часть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 13:17 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, можно для всех картинок сделать MipMapping И решив данную задачу для маленьких фотоснимков (64x64) pix к примеру перенести ту-же конфигурацию нахлёстов и накладок к большим картинкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 14:41 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Dima TИМХУ просто построчно обходить меняя направление обхода. Т.е. в таком порядке 1 2 3 4 8 7 6 5 9 ... Тут если кэша хватит на одну строку, то повторного считывания в кэш не потребуется. В худшем случае надо будет пересчитать крайние элементы последней законченной строки. Сейчас делается именно так - обход построчно по меандру. На больших размерах предыдущую строчку приходится перегружать. Число лишних загрузок получается порядка (Y-1)*P, где P - (0..X-1) в зависимости от размера кэша. Я думал, возможно существуют алгоритмы с меньшей накладкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 14:55 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисЯ думал, возможно существуют алгоритмы с меньшей накладкой. Еще вопрос по одработке: допустим есть картинки: 1 2 3 4 5 6 7 8 9 для обработки 5-й какие нужны? 2 4 6 8 ? или 2 4 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 15:13 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Dima TЕще вопрос по одработке: Сейчас пока 8-связный алгоритм (все соседи, в т.ч. диагональные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 15:36 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисЯ думал, возможно существуют алгоритмы с меньшей накладкой.Пару более выгодных вариантов я уже предложил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:06 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
miksoftСоколинский БорисЯ думал, возможно существуют алгоритмы с меньшей накладкой.Пару более выгодных вариантов я уже предложил. Я прочитал, спасибо. Идея с полосками, наверное, лучше всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 16:56 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Можно Кривую Гильберта попробовать. Или Z-order. Последний используется в пространственных DBMS где есть задача консолидировать секторы или блоки гео-базы данных рядышком при условии что мы запрашиваем bounding volume который накрывает собой несколько блоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 17:37 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
maytonМожно Кривую Гильберта попробовать.Имхо, это будет еще хуже текущего положения дел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 17:44 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, если я правильно понял, что Вы хотите, оптимальным, пожалуй, будет вариант на рисунке. Но мне кажется, основная алгоритмическая сложность не в порядке обхода, а в формировании результата... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 17:48 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
softwarer, miksoft, насколько я понял, именно такой вариант предложил. С результатами - отдельная история, не для этой темы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 17:59 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
miksoftmaytonМожно Кривую Гильберта попробовать.Имхо, это будет еще хуже текущего положения дел. Этот вопрос не такой простой как кажется. Я вот из топика не понимаю каким образом Борис делает выравнивание границ и проверки на то что мозаика складывается верно. Если я это пойму - то посоветую order или файловый формат при котором взаимодействие с источниками будет минимально. В некотором вырожденном варианте можно вообще решать задачу "поточно" без привлечения кешей и буферов. Но я должен понять как Борис делает сшивание фоток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 18:07 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский Борисmiksoft, насколько я понял, именно такой вариант предложил.Нет, не такой. В вертикальной ориентации это будет так: 1234567891011121314151617181920..... Правда, ошибся с подсчетом занимаемой памяти. Нужны будет не одна строка + 2 кадра, а 2 строки + 2 кадра. Например, в момент обработки кадра №13 будут храниться кадры с 7 по 19. Но все кадры будут загружаться ровно по одному разу. Если сетка широкая и ее нужно резать на полосы, то так: 1234510110210310410567891010610710810911011121314151111121131141151617181920116117118119120.......... Повторно будут загружаться кадры, граничащие с полосой разреза. Для минимизации их количества нужно максимально увеличивать ширину полос насколько позволяет память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 18:18 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский Борисmiksoft, насколько я понял, именно такой вариант предложил. Возможно, я не понял или неудачно нарисовал. Основная идея - не пытаться обработать всю строку или весь столбец, а брать такой размер "до перехода", чтобы влезть в кеш, а незатронутые (белые ниже) обрабатывать аналогичным образом потом. Тогда оверхед получится довольно незначительным, порядка 1/N блоков, где N - размер кеша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 18:19 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
maytonЭтот вопрос не такой простой как кажется. Я вот из топика не понимаю каким образом Борис делает выравнивание границ и проверки на то что мозаика складывается верно. Если я это пойму - то посоветую order или файловый формат при котором взаимодействие с источниками будет минимально. В некотором вырожденном варианте можно вообще решать задачу "поточно" без привлечения кешей и буферов. Но я должен понять как Борис делает сшивание фоток. Мне казалось, это к теме не относится, но могу рассказать, большого секрета тут нет. 1. "Грубая" сетка кадров получается при создании карты просто по координатам "сканера" (запись кадров идет в "нахлест"). По этой сетке вычисляются перекрывающиеся пары и для каждой пары - предполагаемая область перекрытия. 2. Делается совмещение всех выбранных пар, процедура выдернута из OpenCV. Собственно здесь возникает задача оптимизации порядка совмещения. 3. В результате получается система линейных уравнений, большая, разреженная и переопределенная. Решается методом наименьших квадратов, есть достаточно эффективный и качественный алгоритм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 19:00 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
miksoftНет, не такой. Тут разница только в порядке обхода строк/столбцов - не по меандру, а от меньшего к большему. Принципиальной разницы не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 19:02 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисmiksoftНет, не такой. Тут разница только в порядке обхода строк/столбцов - не по меандру, а от меньшего к большему. Принципиальной разницы не вижу.Мда, порисовал клеточки, действительно. Прошу прощения, что сбил с толку. Но зато у меня алгоритм учета загрузок/выкидываний проще получается - обычный FIFO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 19:18 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Вобщем если почитать по термину "меандр" то вопросов еще больше появляется. Разные они бывают.... меандры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 19:33 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисКадров может быть до нескольких тысяч Размер кадра какой? в байтах? может просто оперативки или ssd-hdd добавить для кэша? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 19:47 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Dima TРазмер кадра какой? в байтах? может просто оперативки или ssd-hdd добавить для кэша? По-разному в зависимости от камеры, от 1 до 30 мб в памяти. На диске в jpeg-е, размер примерно 1:20. Софт 32-разрядный, и как-то больше ~2.1 ГБ памяти использовать в приложении не получается, ни один менеджер не дает. Может и можно, не изучал этот вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 20:04 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисСофт 32-разрядный, и как-то больше ~2.1 ГБ памяти использовать в приложении не получается, ни один менеджер не дает. Может и можно, не изучал этот вопрос.ОС какая? Если Windows не слишком последних версий, то попробуйте опцию /3GB. А еще можно разделить процессы кэширования и обработки, тогда у каждого будет лимит по 2-2,7 ГБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 20:09 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
miksoftОС какая? Если Windows не слишком последних версий, то попробуйте опцию /3GB. А еще можно разделить процессы кэширования и обработки, тогда у каждого будет лимит по 2-2,7 ГБ. Обычно Win7-32 prof. 64 не получается из-за драйверов и их библиотек, которые не дружат с 32 софтом. Опцию попробую, спасибо, но в любом случае сначала лучше алгоритм доточить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 20:13 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисWin7Увы, там уже нет boot.ini и нет /3GB. Что вместо этого - не в курсе, возможно, что-то и есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 20:28 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, а сколько времени в минутах или часах занимает полный цикл сшивания всей карты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 20:42 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
mayton, По-разному. В текущей конфигурации порядка минуты, проблема в том, что все хозяйство нужно вписать в окно ~20 c. Вот и думаю, на чем можно выиграть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 20:52 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Тогда - прямая дорога делать это на уровне MIP. Пользователь всё равно не увидит 30-Мб/JPEG качества 1:1 пиксел на экране. Он будет видеть уменьшенное раз в 10. Я когда-то 2003 делал на ASP.Net гео-привязку техучёта к картам местности. Карты были готовы. Ну как готовы. Кто-то взял посканировал туристическую карту города. Я уменьшал сканы этой карты до размера когда скорость загрузки всего города станет приемлемой (это были временя V32bis/V90 протокола). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 23:19 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисОбычно Win7-32 prof. 64 не получается из-за драйверов и их библиотек, которые не дружат с 32 софтом. 32-й софт нормально работает на Win7x64. Просто надо чтобы были все нужные x32 библиотеки, т.е. не ставить x64 версии софта только потому что система x64. С драйверами могут быть проблемы. Второй плюс x64: данная задача очень хорошо распараллеливается. Можно разделить на 2/4/8 частей (по количеству ядер проца) и запускать отдельными процессами, тогда каждый получит по 2 Гб физической памяти, т.е. суммарно 4/8/16. На x32 такой фокус не пройдет, т.к. там максимум 4 Гб физической памяти ОС использует. Потом Win7x64 очень хорошо кэширует hdd в свободную память, только памяти побольше воткнуть (8-16 Гб думаю хватит для данной задачи). Советую все-таки поразбираться с этим вопросом, т.к. ОС x32 уже вчерашний день. Завтра потребуется запустить на x64 и чего делать? ИМХУ надо заранее подготовится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 07:57 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисВ текущей конфигурации порядка минуты, проблема в том, что все хозяйство нужно вписать в окно ~20 c. Текущее использование кэша очень плохое должно быть чтобы в три раза ускориться. Думаю для начала надо померить насколько он плох, т.е. получить КПД использования кэша. Надо посчитать количество считываний картинок и поделить их количество на то что получилось. Почитав выше написанное подозреваю что будет что-то близкое к 1. Если так - можно не заморачиваться с его оптимизацией. При КПД 0.8 оптимизацией можно максимум до 48 сек. (0.8 минуты) ускорить. Реально меньше, т.к. не вся минута уходит на кэширование. Чтобы с минуты до 20 сек ужаться надо текущий КПД иметь 0.2-0.3. Т.к. задача чисто рассчетная, то потенциальные возможности ускорения можно оценить по средней загрузке проца (общей, всех ядер). Замерить и посчитать на сколько ускорится если загрузить вся ядра на 100%. И поработать в этом направлении если есть куда ускоряться. Для оптимизании надо сначала оценить сколько может дать каждое направление и копать в сторону с максимальным ожидаемым эффектом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 09:05 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, а чем закончилась история? пысы оказывается я почти это делаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 11:47 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
tchingizСоколинский Борис, а чем закончилась история? В общем, ничем, накрылся проект. tchingizпысы оказывается я почти это делаю Ну, чем смогу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 16:33 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
ну, я в основном, поговорить. у меня фотографии уже (какой то дорогой тулзой) разделены на участки, для которых есть формулы перевода из пикселей в реальные метры. как здесь: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1177100&msg=18195186 Так что соединить две фотки в одну - совершенно технический вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2015, 23:06 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
вот, что получается. Оказалось, не совсем технический вопрос (или руки из USB ростут) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 17:18 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
Сергей Сотник Работа с растром на низком уровне (C#) http://sotnyk.com/2013/10/26/rabota-s-rastrom-low-level-csharp/ переход с наивного способа работы на описанный у Сотника привел к уменьшению времени рисования на объеме на фотке ниже с 57 сек до 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 21:53 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
tchingiz, Сколько там картинок и каких размеров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 22:15 |
|
||
|
Панорамирование - оптимизация загрузки
|
|||
|---|---|---|---|
|
#18+
тут - 17, первая колонка - размер в байтах Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. они маленькие - пока отладка софты идет. Даже эти маленькие все (их 111) - наивным методом считались по полчаса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 22:44 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1340855]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 534ms |

| 0 / 0 |
