На главную Наши проекты:
Журнал   ·   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 - Дискретное косинусное преобразование
    Есть ли у кого нибудь исходники прямого и обратного ДКП?
      www.fftw.org - Быстрое Преобразование Фурье
        ты линк не по той теме дал :) ему нужно DCT, а не DFT :)
        2Vadim
        если хотишь я тебе дам исходник для разжатия блоков 8*8, с 4 (по-моему) умножениями
        (и то с фиксированной точкой - good). недавно придумали более крутой алгоритм - без
        умножений _вообще_ ;) называется binary DCT. только вот исходников нигде нет!
        Сообщение отредактировано: vot -
          Вы простите чайника, а чем собсно отличается FFT и DCT? Ну так, по сути?
            У меня есть такой старый-старй журнал (года эдак 94) "Монитор".
            В нём есть не только сорсы, но итекстовое описание.
            Так что если надо пиши на майл, отсканирую - отправлю, но не обессудь,
            мыло проверю не ранее вторника, а тправлю скорее всего в четверг ;)
            (да не, не после дождичка)
            Сообщение отредактировано: vot -
              У меня есть все исходники  :P :P
              Сообщение отредактировано: Codemaster -
                Цитата Codemaster, 06.03.02, 13:43:38
                У меня есть все исходники  :P :P


                Слушай, а может исходнички Win98 подкинешь?  ;) А то никак, что-то в инете не найду... ;D
                  DCT прямое и обратное делается умножением на одну и туже матрицу констант.
                  DFT делается несколько сложнее, т.к. работаем с комплексными числами.
                  Хорошо знаем что кайф делать быстрое DFT. А вот есть ли кайф городить быстрое
                  DCT и на сколько? Во всех справочниках молчат про быстрое DCT, хотя на первый взгляд
                  алгоритм просматривается. Если кому интересно можно поболтать на эту тему.
                    int ForwardDCT(long *pSrc,                      long **ppDst,                      long iN){      long u, v, x, y;      for(v=0; v<iN; v++)            for(u=0; u<iN; u++)            {                  float F = 0.0f;                                    float cu = 1.0f, cv = 1.0f;                  if(u==0) cu = 1.0f / sqrtf(2.0f);                  if(v==0) cv = 1.0f / sqrtf(2.0f);                  for(y=0; y<iN; y++)                        for(x=0; x<iN; x++)                              F+=(float)pSrc[y*iN + x] *                               cosf(((2*(float)x + 1) * (float)u * PI)/(2*(float)iN)) *                              cosf(((2*(float)y + 1) * (float)v * PI)/(2*(float)iN));                  F*=(2.0f/(float)iN)*cu*cv;                  (*ppDst)[v*iN + u] = (long)F;                              }      return 0;}int InverseDCT(long *pSrc,                      long **ppDst,                      long iN){      long u, v, x, y;      for(y=0; y<iN; y++)            for(x=0; x<iN; x++)            {                  float f = 0.0f;                                    for(v=0; v<iN; v++)                        for(u=0; u<iN; u++)                        {                              float cu = 1.0f, cv = 1.0f;                              if(u==0) cu = 1.0f / sqrtf(2.0f);                              if(v==0) cv = 1.0f / sqrtf(2.0f);                              f+=cu*cv*(float)pSrc[v*iN + u] *                                   cosf(((2*(float)x + 1) * (float)u * PI)/(2*(float)iN)) *                                   cosf(((2*(float)y + 1) * (float)v * PI)/(2*(float)iN));                        }                  f*=(2.0f/(float)iN);                  (*ppDst)[y*iN + x] = (long)f;            }      return 0;}
                    Сообщение отредактировано: vot -
                      2andyag
                      угу, только этот вариант офигенно тормознутый.
                      нет ли у тебя удобопонимаемого примера который делает ОДКТ быстрее?
                        ...вот тебе и спасибо...
                          Могу кинуть .pdf про оптимизацию сабжа...
                            Цитата andyag, 27.04.02, 22:36:47
                            ...вот тебе и спасибо...

                            хм, как бы.... за что?
                            а пдф кидай:)...
                            мне один уважаемый человек прислал исходник, за что ему спасибо, но разобраться с ним (исходником) у меня терпения не хватило, да и времени не очень есть:(.
                            но любая инфа полезна:) так что кидай:)
                              лови pdf
                                Почитал я ребята про быстрое Фурье. Написал прогу ,вообще не имеет отношение к делу.
                                О ни в ЖПГ фазу сдвигают.Вот и Аndiag 1 в косинус добавил. Это делается быстрее если
                                матрицу косинусов заранее посчитать и потом на матрицы умножать.Некоторые процессоры ,кстати , для этого пытаются оптимизировать. Так хотелось разбить 2-мерную фигню на 2 одномерные и быстро их просчитать, но для этого видимо нужно или повышать размерность матрицы дополняя ее симметричной, или считать полное Фурье.
                                А может у кого мысль какая есть, или желание хотябы прикинуть как считать быстрее,
                                или положить на ЖПГ и FFT попробывать?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0907 ]   [ 15 queries used ]   [ Generated: 5.10.26, 23:57 GMT ]