Tutorial sobre wavelets de segunda geração (com elevação)?

10

Para algumas experiências de denoising e deconvolução, eu gostaria de aplicar uma transformada wavelet de segunda geração (usando etapas de elevação ) às imagens.

Eu sei que existem várias implementações disponíveis, mas a maioria delas usa matlab, enquanto eu quero trabalhar em C ++ com OpenCV . Como não há implementação de transformação de wavelet embutida no OpenCV 2.x, pretendo implementá-la eu mesmo (além disso, será um bom exercício para mim). Após algumas pesquisas, consegui encontrar os artigos originais sobre a transformação de 2ª geração, mas ainda estou um pouco confuso sobre a maneira exata como o algoritmo funciona.

Tomando como referência principal o artigo [1] de Sweldens: O esquema de levantamento: uma construção de wavelets de segunda geração , ainda estou confuso com a definição dos conjuntos de índices : qual é o tamanho deles? como eles são construídos? ...K(j)

Daí a minha pergunta: alguém sabe sobre alguns recursos sobre a transformação de wavelet de segunda geração (artigos, tutoriais, slides ...) que estão no formato de tutorial ou fornecem uma visão mais algorítmica (em vez de matemática) , o que me ajudaria a projetar minha própria implementação?

Agradeço antecipadamente.

Referências

Minha principal referência é:

[1] Sweldens, W. (1998). O esquema de levantamento: Uma construção de wavelets de segunda geração. Jornal SIAM sobre Análise Matemática, 29 (2), 511.

E também estou aprendendo com:

[2] Daubechies, I. & Sweldens, W. (1998). A wavelet de fatoração se transforma em etapas de elevação. Jornal de análise e aplicações de Fourier, 4 (3), 247–269.

[3] Kovacevic, J. & Sweldens, W. (2000). Famílias de wavelets de ordem crescente em dimensões arbitrárias. Image Processing, 9 (3), 480-496. doi: 10.1109 / 83.826784

sansuiso
fonte
Provavelmente ajudaria, se você vincular os documentos originais e explicar por que está confuso com eles. Além disso, você diz que existem muitas implementações do matlab (linguagem de script), que você pode ler para ter uma idéia de como o algoritmo funciona.
Bjoernz
Já existem bibliotecas wavelet em C ++ . Se você pretende codificar algo para o exercício, por que não escolhe uma das mais recentes transformações em várias escalas, como feixes de luz, barras de guia ou curvas, para que a comunidade possa se beneficiar?
Emre
@Emre: Como dito anteriormente, o OpenCV não inclui uma transformação wavelet, e eu não quero adicionar dependências. Vou verificar o código Blitzwave de qualquer maneira para ver como as coisas são feitas. Por enquanto, eu só preciso da 2ª geração. wavelets, mas ferramentas mais recentes (começando pelas curvelets) são uma opção para trabalhos posteriores.
Sansuiso
@johnz: Adicionei uma pergunta precisa sobre uma pequena parte do artigo de Sweldens que me confunde.
Sansuiso
Você poderia referenciar seus artigos / livros nos quais está aprendendo isso?
Spacey 24/05

Respostas:

2

Finalmente comprei uma cópia de [Ripples in Mathematics The Discrete Wavelet Transform] [1] e estou muito satisfeito com este livro. Os autores explicam o DWT com pontos de vista alternados (esquemas de elevação, abordagem de bancos de filtros, análise de várias resoluções), onde cada um desses pontos de vista tem suas próprias vantagens. Além disso, o livro é orientado à implementação, com capítulos sobre manipulação de limites e implementações de matlab / C.

Ainda estou procurando uma maneira adequada de lidar com sinais de tamanhos ímpares, mas o Ripples me deu um bom começo.

[1]: http://www.control.auc.dk/~alc/ripples.html "Ondulações na matemática A transformação discreta da wavelet", de Arne Jensen e Anders la Cour-Harbo

sansuiso
fonte