Transformacja falkowa w openCV
czy ktoś próbował zaimplementować DWT w opencv lub C ++? Widziałem starsze posty na ten temat i nie uważałem ich za przydatne dla mnie, ponieważ potrzebuję współczynnika aproksymacji i szczegółów w wyniku transformacji falkowej.
Próbowałem to dodać (http://wavelet2d.sourceforge.net/) do mojego projektu, ale nie działa tak dobrze, jak planowano.
I to jest proste, ponieważ w wyniku parametrów potrzebuję współczynnika aproksymacji i szczegółów:
void haar1(float *vec, int n, int w)
{
int i=0;
float *vecp = new float[n];
for(i=0;i<n;i++)
vecp[i] = 0;
w/=2;
for(i=0;i<w;i++)
{
vecp[i] = (vec[2*i] + vec[2*i+1])/sqrt(2.0);
vecp[i+w] = (vec[2*i] - vec[2*i+1])/sqrt(2.0);
}
for(i=0;i<(w*2);i++)
vec[i] = vecp[i];
delete [] vecp;
}
void haar2(float **matrix, int rows, int cols)
{
float *temp_row = new float[cols];
float *temp_col = new float[rows];
int i=0,j=0;
int w = cols, h=rows;
while(w>1 || h>1)
{
if(w>1)
{
for(i=0;i<h;i++)
{
for(j=0;j<cols;j++)
temp_row[j] = matrix[i][j];
haar1(temp_row,cols,w);
for(j=0;j<cols;j++)
matrix[i][j] = temp_row[j];
}
}
if(h>1)
{
for(i=0;i<w;i++)
{
for(j=0;j<rows;j++)
temp_col[j] = matrix[j][i];
haar1(temp_col, rows, h);
for(j=0;j<rows;j++)
matrix[j][i] = temp_col[j];
}
}
if(w>1)
w/=2;
if(h>1)
h/=2;
}
delete [] temp_row;
delete [] temp_col;
}
Czy ktoś może mi pomóc znaleźć dwt zaimplementowane w C ++ lub wskazać mi, jak wyodrębnić z powyższych współczynników kodu. Dzięki