Открыть большое изображение

Обсуждение вопросов, связанных с обработкой аудио и видео информации
Ответить
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Открыть большое изображение

Сообщение zxc_pavel »

Добрый день.

Требуется открыть изображение (~17000x17000 пикс.) в 32-битном формате. Не хватает памяти. (Нужно найти некоторые объекты, по которым разделить изображение на 16 частей и уже их подробно анализировать)
В 8-битном открывает, могу находить то, что нужно. Но делить на части нужно цветное.

Есть ли какие-то относительно простые методы решения? Спасибо.
Вложения
2403.rar
(25.37 КБ) 164 скачивания
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Открыть большое изображение

Сообщение dadreamer »

В :labview: 2018 64-bit открывается. Правда загрузка длится секунд 5. И объем сжираемой памяти увеличивается со 180 МБ до 2,33 ГБ. Это для формата RGB (U32). Ну, какие тут могут быть решения?.. Поставить оперативки побольше. Обновить Винду/LabVIEW на 64-битные версии. Постараться как-то уменьшить размер обрабатываемых данных (отмасштабировать картинку). Может быть, обрабатывать файл по частям, если такое возможно.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Открыть большое изображение

Сообщение Blackman »

Extending Virtual Memory Usage for 32-bit Windows
http://zone.ni.com/reference/en-XX/help ... _ad_aware/
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Открыть большое изображение

Сообщение zxc_pavel »

Спасибо за советы.
LabVIEW на 64-битные версии
на пк оперативки много, винда 64, а lv 32 битная. Когда то вычитал, что на 64 битной многих тулкитов нет и вообще не очень она, не было database, например, а тогда нужен был. В общем исторические предубеждения :) Если не придумаю чего, то переходить буду
Extending Virtual Memory Usage for 32-bit Windows
первым делом попробовал, но не помогло.
Делал так раньше для 7-ки, там задача не такая была, но помогло
Сейчас 10-ка, то ли на нее не работает, то ли мне все равно не хватает.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Открыть большое изображение

Сообщение IvanLis »

zxc_pavel писал(а):Требуется открыть изображение (~17000x17000 пикс.) в 32-битном формате. Не хватает памяти. (Нужно найти некоторые объекты, по которым разделить изображение на 16 частей и уже их подробно анализировать)
В 8-битном открывает, могу находить то, что нужно. Но делить на части нужно цветное.

Есть ли какие-то относительно простые методы решения? Спасибо.
Первое, что я бы посоветовал, это пересохранить в несжатый BMP и попробовать открыть его.
Объем изображения должен составлять примерно 1Gb и его открытие не потребует сложных вычислений, по сравнению с декодированием JPEG.

Если это не получится, то попробуйте загрузить данные из файла с использованием стандартной функции :labview: Read JPEG File VI, преобразовать в массив. А так как в U8 вы сделали предварительный анализ и знаете области, которые подлежат дальнейшему анализу, то их можно выдернуть из массива.
Я только могу порекомендовать, делать все это последовательно:
1. Загрузка в U8 (IMAQ) -> Анализ и определение ROI -> Dispose VI (очистка памяти).
2. Загрузка в RGB (Read JPEG File VI) -> Преобразование в массив -> Выделение ROI -> Преобразование в изображение -> Сохранение в файл, по очереди для каждого ROI, что бы не плодить сущности.
3. Загрузка в RGB (IMAQ) -> Анализ, последовательно для каждого ROI.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Открыть большое изображение

Сообщение dadreamer »

А не прокатит такой вариант?
1. декодировать JPEG в несжатый формат, сохранить в бинарный файл;
2. читать и обрабатывать этот файл по частям;
3. удалить файл, когда станет не нужен.
Ну, займёт файл на диске 2-3 ГБ, но это будет не так накладно для системы, чем загрузка напрямую в память.

IvanLis опередил меня :)
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Открыть большое изображение

Сообщение Blackman »

До загрузки данных здесь дело не доходит. Ошибка возникает при попытке выделения непрерывной области памяти при инициализации буфера - массива размером ширина х высота х 3 байтов (U8).
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Открыть большое изображение

Сообщение IvanLis »

Blackman писал(а):До загрузки данных здесь дело не доходит. Ошибка возникает при попытке выделения непрерывной области памяти при инициализации буфера - массива размером ширина х высота х 3 байтов (U8).
Все там нормально загружается
Если брать U32 (4byte)
17000×17000×4=1156000000 byte
или 1102.45 M byte (1.1 Gbyte)

А если в градациях серого, то будет в 4 раза меньше.
Что и подтверждает:
zxc_pavel писал(а):В 8-битном открывает, могу находить то, что нужно. Но делить на части нужно цветное.
----------------------
Мне несколько раз приходилось строить вероятностный профиль изображения для последующего детектирования объектов.
Один раз пришлось анализировать HD изображения, около 25 т. кадров, каждый в несжатом виде около 10 МByte.
Там нужно собрать со всех кадров значения яркостей для каждого пикселя (каждой цветовой составляющей RGB) и рассчитать для них мат. ожидание и дисперсию.
Пришлось сначала перегонять все изображения в бинарники, при этом реально нам нужны только 3 byte (24bit) а не 4, т.к. альфа-канал это избыточность, что уже позволяет экономить ресурсы.
Потом полученную стопку кадров протыкал иголочкой, по адресу byte в файле, дальше думаю понятно :dance:
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Открыть большое изображение

Сообщение Blackman »

Где там? Какая Ось?
На картинке результат на Win10х64 16Г :labview: 2017х32
Вложения
Memory Full Error.png
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Открыть большое изображение

Сообщение IvanLis »

Blackman писал(а):Где там? Какая Ось?
На картинке результат на Win10х64 16Г :labview: 2017х32
Согласен, что немного не корректно сравнивать:
OS Linux x64
ОЗУ 16Gb
LV2016 x64

Объем памяти затрачиваемой при чтении Read JPEG File VI - 867 Mb
Снимок экрана от 2019-03-25 13-35-02.png
test.zip
BMP image (903,2 МБ)
(982.69 КБ) 145 скачиваний
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Открыть большое изображение

Сообщение zxc_pavel »

Read JPEG File VI
в LV15 x32 тоже ругается
Установил x64 - и imaq и read-file открывают изображение, наверное, придется там делать
сохранить в бинарный файл ... читать и обрабатывать этот файл по частям
Раньше не делал, поэтому не понял, как это делать и что должно получиться. Это же не просто открыть несжатую картинку как текстовый документ?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Открыть большое изображение

Сообщение dadreamer »

zxc_pavel писал(а):Раньше не делал, поэтому не понял, как это делать и что должно получиться. Это же не просто открыть несжатую картинку как текстовый документ?
Зачем как текстовый? Read from Binary File. Размер файла известен, формат - обычный массив цветов U32. Делите размер на 16 (или сколько нужно) частей, читаете 1/16-ю, конвертируете в изображение, выполняете анализ. Дальше, следующую 1/16-ю по аналогии.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Работа с графикой и звуком»