реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Где достать алгоритмы для DCT, дискретное косинусное преобразование
Pechkin
сообщение Apr 11 2005, 18:11
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 24-08-04
Пользователь №: 535



Решил попробовать описать дискретное косинусное преобразование своими ручками. Как я понял существует несколько алгоритмов, но для в реализации в железе наиболее подходит описанный вот в этой статье C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics, Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
Однако саму статью найти не смог. Может есть у кого описание этой реализации преобразования?
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение Apr 11 2005, 18:37
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220



Цитата(Pechkin @ Apr 11 2005, 12:11)
Решил попробовать описать дискретное косинусное преобразование своими ручками. Как я понял существует несколько алгоритмов, но для в реализации в железе наиболее подходит описанный вот в этой статье C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT  Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,  Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
Однако саму статью найти не смог. Может есть у кого описание этой реализации преобразования?
*

А вам какое именно и для какой цели? Подробное описание алгоритмов 8-ми точечного (судя по "11 Multiplications" вам нужно именно такое) прямого и обратного DCT есть, например, в этом документе http://www.theora.org/doc/Theora_I_spec.pdf
Если вас интересует практическая реализация описанных там алгоритмов в FPGA и ваше применение совместимо с лицензией GNU/GPL, то вы можете загрузить код на Verilog-е (для Xilinx Spartan 3) здесь
Go to the top of the page
 
+Quote Post
Pechkin
сообщение Apr 11 2005, 19:24
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 24-08-04
Пользователь №: 535



Цитата(Andrey Filippov @ Apr 11 2005, 21:37)
А вам какое именно и для какой цели? Подробное описание алгоритмов 8-ми точечного (судя по "11 Multiplications" вам нужно именно такое) прямого и обратного DCT есть, например, в этом документе http://www.theora.org/doc/Theora_I_spec.pdf
Если вас интересует практическая реализация описанных там алгоритмов в FPGA и ваше применение совместимо с лицензией GNU/GPL, то вы можете загрузить код на Verilog-е (для Xilinx Spartan 3) здесь
*

Да меня интересует как раз 8 ми точечный алгоритм с целью получения практических навыков работы с Verilog. Спасибо за ссылку. Сейчас посмотрю
Go to the top of the page
 
+Quote Post
irum4
сообщение Apr 12 2005, 09:41
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 224
Регистрация: 18-06-04
Пользователь №: 54



Чтобы не изобретать велосипед я пользовался DCT-корочкой из IP-Core от Xilinx


--------------------
Электроника - наука о контактах.
Go to the top of the page
 
+Quote Post
Pechkin
сообщение Apr 12 2005, 10:02
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 24-08-04
Пользователь №: 535



Цитата(irum4 @ Apr 12 2005, 12:41)
Чтобы не изобретать велосипед я пользовался DCT-корочкой из IP-Core от Xilinx
*

Задача не получить результат, а получить опыт при работе с Верилогом
Go to the top of the page
 
+Quote Post
Rok
сообщение Apr 12 2005, 12:55
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894



Цитата(Pechkin @ Apr 11 2005, 21:11)
Решил попробовать описать дискретное косинусное преобразование своими ручками. Как я понял существует несколько алгоритмов, но для в реализации в железе наиболее подходит описанный вот в этой статье C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT  Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,  Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
Однако саму статью найти не смог. Может есть у кого описание этой реализации преобразования?
*

А зачем использовать АЖ целых 11 умножителей? Лучше 8.
Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли smile.gif
Go to the top of the page
 
+Quote Post
Pechkin
сообщение Apr 12 2005, 13:39
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 24-08-04
Пользователь №: 535



Цитата(Rok @ Apr 12 2005, 15:55)
А зачем использовать АЖ целых 11 умножителей? Лучше 8.
Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли smile.gif
*

Объясните темному и неграмотному как это сделать. Ну там схемку и алгоритмик накидайте. Пожалуста
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение Apr 12 2005, 17:40
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220



Цитата(Rok @ Apr 12 2005, 06:55)
А зачем использовать АЖ целых 11 умножителей? Лучше 8.
Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли smile.gif
*

Вообще-то умножители - дорогой ресурс, лучше их экономить. В той реализации, ссылку на которую я привел, правда, пиксельная частота вдвое меньше тактовой (62,5 МГц и 125 МГц, соответственно, на Spartan 3), но используется не 8, а всего один умножитель на 8-точечный DCT (два - на двумерный). В комментариях приведены требуемые ресурсы.
Go to the top of the page
 
+Quote Post
Rok
сообщение Apr 13 2005, 07:32
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894



Цитата(Pechkin @ Apr 12 2005, 16:39)
Цитата(Rok @ Apr 12 2005, 15:55)
А зачем использовать АЖ целых 11 умножителей? Лучше 8.
Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли smile.gif
*

Объясните темному и неграмотному как это сделать. Ну там схемку и алгоритмик накидайте. Пожалуста
*


MAC - Multiply and Accumulate, т.е. умножитель с аккумулятором. Вам нужно получить 8-точечное ДКП, зн., необходимо 8 МАСов на каждую точку. Данные приходят последовательно, зн. через 8 тактов вы получите ДКП. Но...
Вам уже ответили, что умножители дорогой ресурс. И поэтому систему нужно строить оптимально. Т.е. смотреть на тактовую частоту системы и частоту входных пикселов. И если у вас МАС работает на частоте 40 Мгц, а входные пикселы с частотой 5 МГц, то вообще можно использовать только 1 МАС.
Т.е. все крутиться вокруг МГц.
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение Apr 13 2005, 14:59
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220



Цитата(Rok @ Apr 13 2005, 01:32)
Цитата(Pechkin @ Apr 12 2005, 16:39)
Цитата(Rok @ Apr 12 2005, 15:55)
А зачем использовать АЖ целых 11 умножителей? Лучше 8.
Ставим параллельно 8 МАСов и получаем ДКТ. Просто как грабли smile.gif
*

Объясните темному и неграмотному как это сделать. Ну там схемку и алгоритмик накидайте. Пожалуста
*


MAC - Multiply and Accumulate, т.е. умножитель с аккумулятором. Вам нужно получить 8-точечное ДКП, зн., необходимо 8 МАСов на каждую точку. Данные приходят последовательно, зн. через 8 тактов вы получите ДКП. Но...
Вам уже ответили, что умножители дорогой ресурс. И поэтому систему нужно строить оптимально. Т.е. смотреть на тактовую частоту системы и частоту входных пикселов. И если у вас МАС работает на частоте 40 Мгц, а входные пикселы с частотой 5 МГц, то вообще можно использовать только 1 МАС.
Т.е. все крутиться вокруг МГц.
*


Зачем же вы людей смущаете про 8 умножителей (или замедление в 8 раз)? Я же чуть выше привел пример реализацмм, где 1 умножитель обеспечивает частоту входных/выходеых пикселей всего в два раза ниже тактовой, а не в восемь, как вы написали - пиксели 62,5МГц, тактовая - 125МГц
Если в указанной папке найти нужные файлы сложно, вот прямые линки на код:
прямое 8-ми точечное DCT:
http://cvs.sourceforge.net/viewcvs.py/elph...1.4&view=markup
обратное 8-ми точечное DCT:
http://cvs.sourceforge.net/viewcvs.py/elph...d.v?view=markup


Короткое пояснение:
Если вам нужно 11 умножений, а пиксели приходят на 1/2 частоты, то 8 входных пикселей занимают 16 тактов, что больше, чем 11. Так что при правильной раскладке по тактам один умножитель справится.
Go to the top of the page
 
+Quote Post
Rok
сообщение Apr 14 2005, 13:12
Сообщение #11


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894



Цитата(Andrey Filippov @ Apr 13 2005, 17:59)
Зачем же вы людей смущаете про 8 умножителей (или замедление в 8 раз)? Я же чуть выше привел пример реализацмм, где 1 умножитель обеспечивает частоту входных/выходеых пикселей всего в два раза ниже тактовой, а не в восемь, как вы написали - пиксели 62,5МГц, тактовая - 125МГц
Если в указанной папке найти нужные файлы сложно, вот прямые линки на код:
прямое 8-ми точечное DCT:
http://cvs.sourceforge.net/viewcvs.py/elph...1.4&view=markup
обратное 8-ми точечное DCT:
http://cvs.sourceforge.net/viewcvs.py/elph...d.v?view=markup

Короткое пояснение:
Если вам нужно 11 умножений, а пиксели приходят на 1/2 частоты, то 8 входных пикселей занимают 16 тактов, что больше, чем 11. Так что при правильной раскладке по тактам один умножитель справится.
*

Спасибо за уточнение. Действительно это так, но только я так понимаю первый отсчет ДКП появится не через 8 тактов?
Все таки ваш подход более правильный, умножители действительно нужно беречь. Особенно если их не 8, а 1. Хорошая экономия ресурсов. А то что результат будет позже - это уже не так важно.
Еще раз спасибо за хорошую мысль. a14.gif
Go to the top of the page
 
+Quote Post
Pechkin
сообщение Apr 14 2005, 13:47
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 24-08-04
Пользователь №: 535



спасибо за консультацию, буду разбираться
Go to the top of the page
 
+Quote Post
Andrey Filippov
сообщение Apr 14 2005, 16:03
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 27-01-05
Из: 40.7019N 112.0811W
Пользователь №: 2 220



Цитата(Pechkin @ Apr 14 2005, 07:47)
спасибо за консультацию, буду разбираться
*

Еще могут помочь мои "черновики", где я разбирался с алгоритмами и раскладывал операции по регистрам и тактам - веселые такие цветные пасьянсы :-)
Внутри архива - файл в формате Open Office
Прикрепленные файлы
Прикрепленный файл  idct4.zip ( 68.31 килобайт ) Кол-во скачиваний: 200
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 13:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01464 секунд с 7
ELECTRONIX ©2004-2016