Por que o filtro separável reduz o custo de computação do operador?

8

Um filtro separável no processamento de imagem pode ser gravado como produto de mais dois filtros simples. Normalmente, uma operação de convolução bidimensional é separada em filtros bidimensionais. Isso reduz o custo de computação do operador.

Por que o custo da computação é menor, se eu uso filtro separável? Eu não consigo entender, por que ter 2 filtros em vez de um aumentará o desempenho

Iter Ator
fonte

Respostas:

9

Suponha que você tenha uma imagem em tamanhoN×M

Se você souber o que é usado classicamente, um núcleo de filtro quadrado, digamos tamanho , você precisará convencê-lo com a imagem - o que fornece pixels, cada um precisando multiplicado- acumula. Então você acaba com operações .L×LN×ML2A2D=L2MN

Agora, se você pode se decompor esse filtro em um -sized horizontal e um vertical, 1D-filtro L-sized, você pode primeiro fazer todas as linhas - que é valores por linha, cada necessitam operações, de modo para todas as linhas - e, em seguida, você faria o mesmo com o filtro vertical, portanto, o para todas as colunas - e você terminará com e precisará mostrar apenas queLMLLMNLNMA1D=2LMN

A1D<A2D2LMN<L2MN||:LMN, legal since L,M,N>02<L

a maioria dos filtros é maior que 2.

Marcus Müller
fonte