Страница: 1 |
Страница: 1 |
Вопрос: Подсчет часто встречающихся значений в массиве?
Добавлено: 03.09.13 17:40
Автор вопроса: user2205_vb6
Здравствуйте, подскажите пожалуйста - есть Long массив видео-данных (640x480px) нужно подсчитать наиболее часто встречающиеся цвета пикселов (допустим составить топ-10 наиболее частых цветовых оттенков в указанном кадре), как это можно сделать (желательно средствами VB) чтобы все 307200 пикселов обрабатывались хотя бы в пределах нескольких секунд?
Заранее спасибо за ответы!
Информация о цвете кадра хранится в виде единого HEX значения в формате Long (т.е. не нужно разделять на всякие rgb и т.д.)
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #1
Добавлено: 03.09.13 23:14
Думаю так. Сортируешь в любом порядке. Вторым проходом считаешь последовательность одинаковых значений. Можно даже писать их в отдельный массивчик со значением и кол-вом. Думаю, тут гораздо быстрее чем несколько секунд будет.
Номер ответа: 2
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #2
Добавлено: 04.09.13 00:14
С оттенками чуть посложнее. Надо в цветовое пространство HSV переводить.
Номер ответа: 3
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #3
Добавлено: 06.09.13 02:59
Мне кажется вот это нужно
Integrating Code into a Microsoft Visual Studio Project
http://www.mathworks.com/videos/integrating-code-into-a-microsoft-visual-studio-project-77402.html
Тут используется мощнейшая библиотека MatLab по обработке изображений и потоков в VS (кстати очень удобно, особенно на C#, на VBnet тоже можно, но не пробовал ).
Ну а сегментация, вопрос слишком тривиальный и конечно поддерживается.
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 06.09.13 15:58
Цветовой формат ARGB? 24 бита? Можно так:
Создается массив 2^24x4 байт Затем попиксельно инкрементицо соответствующий цвету элемент массива. В конце сортируется
Номер ответа: 5
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #5
Добавлено: 09.09.13 08:46
Мне кажется вот это нужно
Integrating Code into a Microsoft Visual Studio Project
http://www.mathworks.com/videos/integrating-code-into-a-microsoft-visual-studio-project-77402.html
vito, можешь объяснить, последовательность каких именно событий тебя привела к выводу, что пример зума видео на C++ с использованием библиотек MATLAB (?) это именно то что нужно автору в данном случае?
Цветовой формат ARGB? 24 бита? Можно так:
Создается массив 2^24x4 байт Затем попиксельно инкрементицо соответствующий цвету элемент массива. В конце сортируется
Во-первых, будет очень неэффективное использование памяти. Известно, что в наличии всего 300К пикселов, т.е. в худшем случае будет 300К уникальных значений цвета, а ты выделаешь массив для того чтоб потенциально обрабатывать 16.5М уникальных значений. В этом месте скорее всего выгоднее будет использовать хеш-таблицу.
Вместо сортировки на последнем шаге стоит использовать priority queue, вместо O(N log N) получится практически O(N)
Номер ответа: 6
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #6
Добавлено: 10.09.13 01:47
Ну не пузыриком же сортировать)
Номер ответа: 7
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #7
Добавлено: 11.09.13 04:31
Это не похоже на «домашнее задание». Если ошибаюсь – то лучше пусть думает как сделать. Если же нет – то дальше эти данные придется использовать , и наверно для дальнейшей обработки потока.
С++ просто как демонстрация на сайте. Сам его практически уже не использую.
А вот С# - почти постоянно(этот же пример легко реализуется на С#, С++ показан как традиционно более быстрый, но и более трудоемкий – просто на С# возможны притормаживания из –за неопределенности с освобождением памяти… что собстно вопрос задачи ).
В общем обленился.
Но это вроде как и есть ООП? Используем готовые реализации.
-------------
Тут постоянно возникают вопросы – как найти корни, решить систему,(обойти граф, детекция движения, сегментация изображений и потоков, анализ множеств баз данных, нейросети и т.д. ) и задают их далеко не новички. Подобное наследование используется давно, были некоторые проблемы с устойчивостью, но сейчас это уже «стандартный» подход, если так можно выразиться.