|
|
  |
Forward DCT 2D тестовые вектора, Как протестировать FDCT-2D по точности и корректности результатов |
|
|
|
Nov 21 2005, 16:04
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 21-07-05
Из: Киев
Пользователь №: 6 977

|
Добрый день, глубоко уважаемый ALL!
Написали ядро 2D DCT. Вроде работает, вроде выдает результаты, математически соответствующие тем операциям, которые были заложены в алгоритм. Промежуточные результаты вычислений были проверены на корректность и было подтверждено их соответствие используемому алгоритму. Однако есть проблема следующего характера - необходимо проверить блок на соответствие тому, что понимает JPEG под DCT. На данный момент найти необходимые тестовые вектора не удалось.
В Xilinx Application Note 610 есть упоминание о тестовых векторах в книге "Image and Video Compression Standards," second edition, by Vasudev Bhaskaran and Konstantinos Konstantinides, ISBN 0-7923-9952-8. Поиски в Гуглях закончились ничем. Из нескольких разрозненных источников были получены несколько исходных матриц и соответствующих им DCT-2D, однако они как правило противоречат друг другу и не совпадают с нашими результатами.
Есть ли у кого информация откуда взять нормальные тестовые вектора, используемые в коде JPEG компрессора?
|
|
|
|
|
Nov 22 2005, 05:26
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(AlexanderX @ Nov 21 2005, 11:04)  Добрый день, глубоко уважаемый ALL!
Написали ядро 2D DCT. Вроде работает, вроде выдает результаты, математически соответствующие тем операциям, которые были заложены в алгоритм. Промежуточные результаты вычислений были проверены на корректность и было подтверждено их соответствие используемому алгоритму. Однако есть проблема следующего характера - необходимо проверить блок на соответствие тому, что понимает JPEG под DCT. На данный момент найти необходимые тестовые вектора не удалось.
В Xilinx Application Note 610 есть упоминание о тестовых векторах в книге "Image and Video Compression Standards," second edition, by Vasudev Bhaskaran and Konstantinos Konstantinides, ISBN 0-7923-9952-8. Поиски в Гуглях закончились ничем. Из нескольких разрозненных источников были получены несколько исходных матриц и соответствующих им DCT-2D, однако они как правило противоречат друг другу и не совпадают с нашими результатами.
Есть ли у кого информация откуда взять нормальные тестовые вектора, используемые в коде JPEG компрессора? не вижу ничего сложного собираем испыт. стенд (TestBench) типа черного ящика. Берем реф.код JPEG, вырезаеем функцию ДКТ, подаеем на вход вырезнной функции и вашей реализации ДКТ динаковый набор РАНДОМИЗИРОВАННЫХ чисел, в кол-ве 2**48-1 или около того и сравниваем выхлоп П,С, а параметры вашей реализации ДКТ можете огласить ?
--------------------
|
|
|
|
|
Nov 22 2005, 09:08
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 21-07-05
Из: Киев
Пользователь №: 6 977

|
Цитата(des00 @ Nov 22 2005, 07:26)  не вижу ничего сложного собираем испыт. стенд (TestBench) типа черного ящика. Берем реф.код JPEG, вырезаеем функцию ДКТ, подаеем на вход вырезнной функции и вашей реализации ДКТ динаковый набор РАНДОМИЗИРОВАННЫХ чисел, в кол-ве 2**48-1 или около того и сравниваем выхлоп
П,С, а параметры вашей реализации ДКТ можете огласить ? Самое важное в людях - это чувство юмора  <2**48-1 или около> входных значений будут симулироваться даже очень шустрым симулятором думаю пару месяцев чистого времени  или около того. А что имеется ввиду под параметрами реализации ДКТ? Если разрядности шин данных и коеффициентов - то они параметризуемые, если быстродействие - то ограничивается только быстродействием умножителей, если по ресурсам, то около 400 триггеров, около 400 логических функций, 8 аппаратных умножителей и один блок памяти для транспонирования промежуточных результатов. Пытались сделать реализацию a-la Theora DCT, с двумя умножителями, двумя сумматорами-вычитателями и кучей мультиплексоров, о которой как-то говорил Андрей Филлипов. По результатам синтеза оказалось что она экономит только аппаратные умножители, но просто по-хамски  относится ко всему остальному. A-la Theora FDCT-1D заняла около 400 логических функций и те же 200 триггеров. Умножая результаты на 2 для FDCT-2D получилась бы совсем неприглядная картина Таким образом, по крайней мере из нашего опыта, оптимизационные схемы вычисления 2D-DCT хороши для процессоров или DSP, но мало применимы для FPGA.
|
|
|
|
|
Nov 22 2005, 09:25
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(AlexanderX @ Nov 22 2005, 04:08)  Самое важное в людях - это чувство юмора  <2**48-1 или около> входных значений будут симулироваться даже очень шустрым симулятором думаю пару месяцев чистого времени  или около того. А что имеется ввиду под параметрами реализации ДКТ? Если разрядности шин данных и коеффициентов - то они параметризуемые, если быстродействие - то ограничивается только быстродействием умножителей, если по ресурсам, то около 400 триггеров, около 400 логических функций, 8 аппаратных умножителей и один блок памяти для транспонирования промежуточных результатов. Ну почему  чпросто я имел в виду что взять нужно хорошо рандомизированный поток и проверить это дело хотя бы на одном кадре (просто снять дампы на входе и выходе из ДКТ в реф. коде (с МПЕГ я поступаю аналогично)). А насчет параметров меня интересовала в превую очередь конвеерная схема или не конвеерная, кол-во тактов и латентность по тактам на одну операцию ДКТ, разрядность входной/выходной шины (в словах). но если у вас 8 умножителей то подразумеваю что вы "режете" матрицу по строкам/столбцам и потом работаете с ней. Начет транспонирования на памяти хммм спорно спорно, тут т архитектуры зависит, иногда бывает лучше сделать на регистрах
--------------------
|
|
|
|
|
Nov 22 2005, 10:51
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 21-07-05
Из: Киев
Пользователь №: 6 977

|
Цитата(des00 @ Nov 22 2005, 11:25)  А насчет параметров меня интересовала в превую очередь конвеерная схема или не конвеерная, кол-во тактов и латентность по тактам на одну операцию ДКТ, разрядность входной/выходной шины (в словах). но если у вас 8 умножителей то подразумеваю что вы "режете" матрицу по строкам/столбцам и потом работаете с ней. Начет транспонирования на памяти хммм спорно спорно, тут т архитектуры зависит, иногда бывает лучше сделать на регистрах  Угу, все так и выглядит. В первом блоке 4 умножителя, столько же во втором. Pipeline составляет 4 такта на каждый коеффициент, суммарно, на два блока с учетом транспонирования - около 80 тактов. Данные на вход могут подаваться без пауз. Рабочая частота для Cyclone II 8 speed grade составляет 160MHz и ограничивается умножителями. Код синтезируется и под Xilinx и под Altera. Транспонирование на регистрах - забавно, каких-нибудь 1400 триггеров, плюс некоторое количество мультиплексоров и логика управления всем этим хозяйством - не, мы лучше как-нибудь с памятью поработаем
|
|
|
|
|
Nov 22 2005, 11:15
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(AlexanderX @ Nov 22 2005, 05:51)  Угу, все так и выглядит. В первом блоке 4 умножителя, столько же во втором. Pipeline составляет 4 такта на каждый коеффициент, суммарно, на два блока с учетом транспонирования - около 80 тактов. Данные на вход могут подаваться без пауз. Рабочая частота для Cyclone II 8 speed grade составляет 160MHz и ограничивается умножителями. Код синтезируется и под Xilinx и под Altera. Транспонирование на регистрах - забавно, каких-нибудь 1400 триггеров, плюс некоторое количество мультиплексоров и логика управления всем этим хозяйством - не, мы лучше как-нибудь с памятью поработаем  Хммм странно странно, что то в тактах много получаеться насчет регистров забыл что у вас не 4*4 а 8*8 матрицы, если мне память не изменяет. Я делал на ксалинксе ДКТ, 4*4 транспонировать матрицу на регистрах получилось быстрее и меньше по совокупному объему  (2 перемножителя + транспонирование). правда дкт то было для h.264 считало это все с задеркой 8 тактов, расчитанно что матрица прилетает построчно Кстати можно обойтись и без транспонирования вобще, да и над структурой матрицы немного репу почесать  )
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|