2015-08-02 2 views
0

Мне нужна помощь для 1-уровневого 5/3 дискретного преобразования вейвлет-преобразования Haar (DWT) с C#.добавить вейвлет-фильтры к дискретному вейвлет-преобразованию Хаара (DWT)

Я использую this project и методы вперед вейвлет-преобразования здесь:

FWT(double[] data) 
    { 
     int h = data.Length >> 1; 
     for (int i = 0; i < h; i++) 
     { 
      int k = (i << 1); 
      temp[i] = data[k] * s0 + data[k + 1] * s1; 
      temp[i + h] = data[k] * w0 + data[k + 1] * w1; 
     } 
    } 
FWT(double[,] data) 
{ 
for (int k = 0; k < 1; k++) 
{ 
    for (int i = 0; i < rows/(k+1); i++) 
    { 
     for (int j = 0; j < row.Length/(k+1); j++) 
      row[j] = data[i, j]; 

     FWT(row); 

     for (int j = 0; j < row.Length/(k+1); j++) 
      data[i, j] = row[j]; 
    } 

    for (int j = 0; j < cols/(k+1); j++) 
    { 
     for (int i = 0; i < col.Length/(k+1); i++) 
      col[i] = data[i, j]; 

     FWT(col); 

     for (int i = 0; i < col.Length/(k+1); i++) 
      data[i, j] = col[i]; 
    } 
} 

}

w 0 = 0,5; w1 = -0,5; s0 = 0,5; s1 = 0,5;

Я искал об этой теме в документах, но я не понимаю алгоритм вейвлет-фильтров 5/3 или 9/7 и как я могу изменить этот код? Любая помощь была бы очень благодарна

ответ

0

Вам может показаться полезным: implementation of jpeg2000 decoder in pdf.js.

Реализация ядра 5-3 кода:

function reversibleTransformFilter(x, offset, length) { 
    var len = length >> 1; 
    offset = offset | 0; 
    var j, n; 

    for (j = offset, n = len + 1; n--; j += 2) { 
     x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2; 
    } 

    for (j = offset + 1, n = len; n--; j += 2) { 
     x[j] += (x[j - 1] + x[j + 1]) >> 1; 
    } 
};