Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Подсчет часто встречающихся значений в массиве? Добавлено: 03.09.13 17:40  

Автор вопроса:  user2205_vb6
Здравствуйте, подскажите пожалуйста - есть Long массив видео-данных (640x480px) нужно подсчитать наиболее часто встречающиеся цвета пикселов (допустим составить топ-10 наиболее частых цветовых оттенков в указанном кадре), как это можно сделать (желательно средствами VB) чтобы все 307200 пикселов обрабатывались хотя бы в пределах нескольких секунд?

Заранее спасибо за ответы!

Информация о цвете кадра хранится в виде единого HEX значения в формате Long (т.е. не нужно разделять на всякие rgb и т.д.)

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #1
Добавлено: 03.09.13 23:14
Думаю так. Сортируешь в любом порядке. Вторым проходом считаешь последовательность одинаковых значений. Можно даже писать их в отдельный массивчик со значением и кол-вом. Думаю, тут гораздо быстрее чем несколько секунд будет.

Ответить

Номер ответа: 2
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #2
Добавлено: 04.09.13 00:14
С оттенками чуть посложнее. Надо в цветовое пространство HSV переводить.

Ответить

Номер ответа: 3
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #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
Ответов: 6596
 Профиль | | #5 Добавлено: 09.09.13 08:46
vito пишет:
Мне кажется вот это нужно



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 (?) это именно то что нужно автору в данном случае?

LamerOnLine пишет:
Цветовой формат ARGB? 24 бита? Можно так:

Создается массив 2^24x4 байт Затем попиксельно инкрементицо соответствующий цвету элемент массива. В конце сортируется

Во-первых, будет очень неэффективное использование памяти. Известно, что в наличии всего 300К пикселов, т.е. в худшем случае будет 300К уникальных значений цвета, а ты выделаешь массив для того чтоб потенциально обрабатывать 16.5М уникальных значений. В этом месте скорее всего выгоднее будет использовать хеш-таблицу.

Вместо сортировки на последнем шаге стоит использовать priority queue, вместо O(N log N) получится практически O(N)

Ответить

Номер ответа: 6
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #6
Добавлено: 10.09.13 01:47
Вместо сортировки на последнем шаге стоит использовать priority queue, вместо O(N log N) получится практически O(N)

Ну не пузыриком же сортировать)

Ответить

Номер ответа: 7
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #7
Добавлено: 11.09.13 04:31
vito, можешь объяснить, последовательность каких именно событий тебя привела к выводу, что пример зума видео на C++ с использованием библиотек MATLAB (?) это именно то что нужно автору в данном случае?


Это не похоже на «домашнее задание». Если ошибаюсь – то лучше пусть думает как сделать. Если же нет – то дальше эти данные придется использовать , и наверно для дальнейшей обработки потока.
С++ просто как демонстрация на сайте. Сам его практически уже не использую.
А вот С# - почти постоянно(этот же пример легко реализуется на С#, С++ показан как традиционно более быстрый, но и более трудоемкий – просто на С# возможны притормаживания из –за неопределенности с освобождением памяти… что собстно вопрос задачи ).
В общем обленился. :)
Но это вроде как и есть ООП? Используем готовые реализации. :)
-------------
Тут постоянно возникают вопросы – как найти корни, решить систему,(обойти граф, детекция движения, сегментация изображений и потоков, анализ множеств баз данных, нейросети и т.д. ) и задают их далеко не новички. Подобное наследование используется давно, были некоторые проблемы с устойчивостью, но сейчас это уже «стандартный» подход, если так можно выразиться.

Ответить

Страница: 1 |

Поиск по форуму





© Copyright 2002-2011 VBNet.RU | Пишите нам