Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.114.94] |
|
Сообщ.
#1
,
|
|
|
Ребят приветствую все!
Говорю сразу, юзал этот вопрос в нэте, ничего дельного не нашел к сожалению. Буду признателен если кто подскажет. Необходимо реализовать графическое отображение спектрограммы. То есть сама спектрограмма в виде двумерного массива есть, и необходимо его отрисовать в PaintBox. Никогда не работал с этим компонентом и никак не пойму как градуировку цвета делать в зависимости от значения амплитуды. Помимо этого надо реализовать цифровую вертикальную шкалу частот гармоник спектрограммы. Может кто подсказать или материал какой подкинуть? Может есть уже готовый компонент для отображения спектрограммы? Буду очень признателен за любой совет! |
Сообщ.
#2
,
|
|
|
Цитата как градуировку цвета делать в зависимости от значения амплитуды Как подсказывает фантазия, по аналогии с каким-либо аудиоредактором, по запросу пользователя... Цитата Помимо этого надо реализовать цифровую вертикальную шкалу частот гармоник спектрограммы. Может кто подсказать или материал какой подкинуть? Может есть уже готовый компонент для отображения спектрограммы? Когда-то я отрисовывал спектрограмму в TChart, тип серии Point. Получалось тормознуто, за счёт того, что при изменении размеров я заново формировал спектрограмму из wave. Ну и точек получалось многовато. Зато в TChart есть функции перевода координат экрана в координаты графика, и наоборот, что удобно для реализации "курсоров", различных режимов измерений "по графику" и пр. Выглядело это так: Прикреплённый файлSpectrogr.JPG (33,67 Кбайт, скачиваний: 1015) |
Сообщ.
#3
,
|
|
|
Prince подскажите пожалуйста, то что на рисунке это выведено в компонент TChart? Или в TPaintBox реализовано?
|
Сообщ.
#4
,
|
|
|
TChart.
|
Сообщ.
#5
,
|
|
|
Prince не подскажите по поводу соответствия цветов значениям амплитуды. К примеру есть диапазон амплитуд от 0 до 100. Какой цвет ставить (то есть какой код RGB) в соответствие каждому значению амплитуды из этого диапазона?
|
Сообщ.
#6
,
|
|
|
Нет определенного соотвествия. См. пост №2.
|
Сообщ.
#7
,
|
|
|
Цитата sandro @ есть диапазон амплитуд от 0 до 100 В Cool Edit Pro используется примерно такое: r = 128 + (x - 40) * 4: If r < 0 Then r = 0 Else If r > 255 Then r = 255 g = 255 - (100 - x) * 5: If g < 0 Then g = 0 b = x * 8: If b > 255 Then b = 255 |
Сообщ.
#8
,
|
|
|
r:=0;b:=0;g:=0; case i of 0..24: Begin r:=i*10; end; 25..49:Begin r:=250; g:=(i-25)*10; end; 50..74:begin r:=250-(i-50)*10; g:=250; b:=i*10; end; 75..100:begin g:=250-(i-75)*10; b:=250; end; r:=0;b:=0;g:=0; case i of 0..49:begin r:=(i)*5; end; 50..74:Begin r:=245; g:=(i-50)*5; end; 75..98:begin r:=245; g:=round(160*log10(i-69)); end; 99..100:Begin r:=250; b:=250; g:=250; end; end; r:=0;b:=0;g:=0; case i of 0..49:begin g:=(i)*5; b:=140; end; 50..74:Begin g:=245; b:=120-(i-50)*5; r:=(i-50)*5; end; 75..98:begin g:=245; r:=round(160*log10(i-69)); end; 99..100:Begin r:=250; b:=100; g:=100; end; end; Можно оттенки серого использовать. Ещё "3-х мерную" картинку из отдельных спектров рисовать, линиями. В этом случае амплитуда будет по оси y, как обычно, отображаться, можно дополнительно цвет использовать. |
Сообщ.
#9
,
|
|
|
Ребят спасибо большое за подсказку!!!
|
Сообщ.
#10
,
|
|
|
Если диапазон будет больше, чем 0..100, то имеет смысл отображать величину в логарифмическом масштабе.
|
Сообщ.
#11
,
|
|
|
Ну я так в общем и делаю, может не совсем корректно:
1 - перевожу амплитуды в Дб относительно мат. ожидания амплитуды за всю спектрограмму 2 - нормирую значения амплитуд (то есть привожу к диапазону от 0 до 100) 3 - отображаю в PaintBox Если руки дойдут обязательно реализую компонент и размещу его здесь, может кому пригодится. Хотя есть хорошие коммерческие компоненты, в частности от ZetLab, но для работы с ним необходим подключенный АЦП их фирмы. |