На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (3) 1 [2] 3  все  ( Перейти к последнему сообщению )  
> DCT - Дискретное косинусное преобразование
    2 Codemaster:
    Если у тебя есть все исходники ,может подкинешь исходник I-Worm.Klez.e
      Чего-то я не понимаю - о чем вы говорите? Какие нафиг просчеты матриц косинусов?
      Вроде исходники jpeg'а открытые валяются где хочешь! Там дкт на 5 умножениях и 25 сложениях, а вы блин велосипед изобретаете, вам че делать не хера нечего?
      Сообщение отредактировано: vot -
        2 Sablin Sergey
        Здесь не принято ругаться...
          2Sablin Sergey
          дык если везде валяются на 5 умножений и 25 сложений, дай, именно этот кусок.
          было у меня сколько-то исходников, а вот выдрать это ОДКТ так, чтобы отдельно, не получилось, куча define'ов левых, глобалдьных переменных и левых подпрограмм. конечно, понятно, что так быстрее, но разобраться в этом у меня не получилось...\%)
          ЗЫ может я тупой? :)
            2 Demo_S:
            ExpandedWrap disabled
              <br>int ForwardDCT(      long *lvBlockIn, <br>                        long **lplvBlockSpecOut,<br>                        float *fvDCTCosTable,<br>                        long iN)<br>{<br>      long i, j, k;<br><br>      float *fvTmp = new float[iN*iN];<br><br>      for(i=0; i<iN; i++)<br>            for(j=0; j<iN; j++)<br>            {<br>                  float fSum = 0.0f;<br><br>                  for(k=0; k<iN; k++)<br>                        fSum+=(float)lvBlockIn[i*iN + k]*fvDCTCosTable[j*iN + k];<br><br>                  fvTmp[i*iN + j] = fSum;<br>            }<br><br>      for(i=0; i<iN; i++)<br>            for(j=0; j<iN; j++)<br>            {<br>                  float fSum = 0.0f;<br><br>                  for(k=0; k<iN; k++)<br>                        fSum+=(float)fvTmp[k*iN + j]*fvDCTCosTable[i*iN + k];<br><br>                  (*lplvBlockSpecOut)[i*iN + j] = (long)fSum;<br>            }<br><br>      RELEASE(fvTmp);<br><br>      return 0;<br>}<br><br>int InverseDCT(      long *lvBlockSpecIn, <br>                        long **lplvBlockOut,<br>                        float *fvDCTCosTable,<br>                        long iN)<br>{<br>      long i, j, k;<br><br>      float *fvTmp = new float[iN*iN];<br>      for(i=0; i<iN; i++)<br>            for(j=0; j<iN; j++)<br>            {<br>                  float fSum = 0.0f;<br><br>                  for(k=0; k<iN; k++)<br>                        fSum+=(float)lvBlockSpecIn[i*iN + k]*fvDCTCosTable[k*iN + j];<br><br>                  fvTmp[i*iN + j] = fSum;<br>            }<br><br>      for(i=0; i<iN; i++)<br>            for(j=0; j<iN; j++)<br>            {<br>                  float fSum = 0.0f;<br><br>                  for(k=0; k<iN; k++)<br>                        fSum+=(float)fvDCTCosTable[k*iN + i]*fvTmp[k*iN + j];<br><br>                  (*lplvBlockOut)[i*iN + j] = (long)fSum;<br>            }<br><br>      RELEASE(fvTmp);<br><br>      return 0;<br>}<br><br>int GenDCTCosTable(      float **lpfvDCTCosTable, <br>                              long iN)<br>{<br>      long i, j;<br><br>      float k1 = 1.0f/sqrtf((float)iN);<br>      float k2 = sqrtf(2.0f/iN);<br>      <br>      for(i=0; i<iN; i++)<br>            for(j=0; j<iN; j++)<br>                  (*lpfvDCTCosTable)[i*iN + j] = i ? k2*cosf((2.0f*j+1)*i*PI/2.0f/iN) : k1;<br><br>      return 0;<br>}<br>
            Работает довольно быстро. Теперь-то спасибо скажешь?  ;D
            Сообщение отредактировано: andyag -
              Чего-то вы прислали 2*iN*iN умножений и сложений к ним немало, к тому же таблицы
              косинусов не дослали. Вобщем матрицы умножаем, а гдеже быстрый счет. Пришлите что-нибудь другое, а то уже велосипедов наизобретал, хотелось бы сравнить с фирменными моделями.
                Цитата rem, 08.08.02, 18:37:33
                ...к тому же таблицы
                косинусов не дослали...
                Не понял...
                Функция GenDCTCosTable генерит матрицу преобразования (aka таблица косинусов). Там есть ее реализация (снизу)
                  …я нашел исходник DCT для MMX…  ::) Но, по-моему, это понять вообще невозможно… Автор – какой-то японец, и все комментарии по-ихнему. Только readme на английском.

                  Вот кусочек:   MMX_DCT is a implementation for 8x8 FDCT/IDCT with MMX technology.  With the help of MMX, only about 1000 cpu cycle is needed to do a 8x8 IDCT…

                  Скачать можно здесь: http://homex.coolconnect.com/user/xkwang/mmxdct/mmxdct-1.0.tar.gz  


                    Цитата MYSTiQUE, 01.06.02, 02:17:51
                    2 Codemaster:
                    Если у тебя есть все исходники ,может подкинешь исходник I-Worm.Klez.e

                    Тебе исходник в кодах (готовый рабочий модуль) или в виде путевого листинга
                      Dr.Andiag. Извини, уезжал на море, толком не посмотрел. Это умножение матриц, данный алгоритм не относится к т.н. быстрым алгоритмам. Давай посчитаем число операций:   2*n*n*(n*( умнож.+слож.)). Быстрое двумерное DCT описано в книге под редакцией В.А.Сойфера "Методы компьютерной обработки". Напиши почему ты этим интересуешься ?" P.S. Ехал с моря, заезжал в Воронеж.    :)  
                        Цитата rem, 30.08.02, 12:20:35
                        Dr.Andiag. Извини, уезжал на море, толком не посмотрел. Это умножение матриц, данный алгоритм не относится к т.н. быстрым алгоритмам. Давай посчитаем число операций:   2*n*n*(n*( умнож.+слож.)). Быстрое двумерное DCT описано в книге под редакцией В.А.Сойфера "Методы компьютерной обработки". Напиши почему ты этим интересуешься ?" P.S. Ехал с моря, заезжал в Воронеж.    :)  
                        Я знаю, что этот алгоритм не относится к быстрым. Я сказал, что он работает быстро :)
                        Быстрее, чем без матриц. :)
                        Где б мне взять В.А.Сойфера "Методы компьютерной обработки"?  ???
                        Интересуюсь я этим потому, что... Гм... а хз. Мне интересно все, что не базы данных и не системное  ;)
                        А как тебе Воронеж?
                          Книга п.р. Сойфера(Москва,физматлит,2001) рекомендована Министерством образования как учебник для обучающихся по специальности "Прикладная математика".Думаю, что она должна быть в библиотеке ВГУ, или любого ВУЗа, где есть эта специальность. Для понимания двумерных алгоритмов вводятся понятия кватерниона и кватернионного спектра. При желании можно в этом поупражняться ,но, в этом случае, думаю нужно переходить на мыло. Понять написанное проще если ранее доводилось писать быстрые алгоритмы.  
                             В Воронеже мне показалось, что плохо работают коммунальные службы, из-за чего люди несколько озлоблены. Если бы основные предприятия города работали эффективно , то это бы был крупнейший в Европе промышленный центр.
                                   Ждем вестей из Воронежа и других городов.        
                            А я завтра какраз в ВГУ иду :)
                            У меня препод по информатике умный - может у него есть? :)

                            У нас тут в Воронеже и правда немного отстойно: все лето воды горячей не было, частенько свет выключают. Все время везде что-то строят :)
                              посмотри в матлабе там есть и формулы и исходника на аля матлабовском языке

                              трехмерный трансформ пишется с помощью одномерного применненого три раза
                                GrAnd мне бы прислал исходники клеза, всё чё есть forb@nvkz.net плиз
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) 1 [2] 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0677 ]   [ 14 queries used ]   [ Generated: 23.10.26, 15:50 GMT ]