Qual é a diferença entre um filtro gaussiano simples e um filtro gaussiano multiplicado pela soma dos elementos?

7
1 2 1                         1 2 1                    
2 4 2 (A)            (1/16) * 2 4 2  (B)
1 2 1                         1 2 1

Ambas as matrizes são as mesmas, exceto que a matriz B é multiplicada pela soma de seus elementos. Quando convoluídos com uma imagem, eles dão quase a mesma imagem borrada.

Qual é a diferença exata entre eles e quando devem ser usados?

Animesh Pandey
fonte
4
A resposta óbvia: a diferença entre as duas saídas é um fator de 1 116já que o filtro é linear.
Jason R

Respostas:

8

O mais à direita (onde você divide pela soma) garante que a saída do filtro tenha a mesma faixa dinâmica que a entrada.

Na verdade, as imagens borradas de saída não são as mesmas porque seus valores de pixel são diferentes. Você tem a sensação de que eles são semelhantes porque o seu software (suponho que o Matlab) refaça os valores de intensidade dos pixels para um intervalo aceitável pelas telas comuns, ou seja, valores de 8 bits entre 0 e 255. Se você usou um software ou biblioteca "perto do metal", você deverá fazer essa operação sozinho.

Faixa dinâmica de dados

A faixa dinâmica de uma imagem é fornecida pelos valores mínimo e máximo de intensidade presentes na imagem ou pela intensidade mínima e máxima que podem ser representados pelo formato digital usado para armazenar os valores de intensidade. (No contexto, geralmente fica claro qual das definições está em uso.)

Os intervalos típicos são [2,255] (com espaçamento inteiro) que corresponde à quantização de 8 bits e [0 0,1 1]para valores de ponto flutuante (precisão simples ou dupla). A mesma convenção é usada em computação gráfica, OpenGL, etc.

Se você tirar uma imagem constante com o valor 1 em qualquer lugar:

  • o filtro esquerdo produzirá uma imagem constante com o valor 16 em qualquer lugar,
  • o segundo (mais à direita) produz uma imagem constante do valor 1.

A partir deste exemplo simples, você pode ver que um filtro preservou o enery da imagem, enquanto o segundo aumentou.

Embora seja inofensivo nesse caso , pode levar a inúmeros problemas na prática . Por exemplo, algoritmos iterativos podem divergir (devido a estouros numéricos ), seu computador pode ficar sem bits para representar seus dados ou você pode perder precisão (os valores de ponto flutuante de precisão simples e dupla não têm uma precisão uniforme no intervalo de os valores possíveis).

sansuiso
fonte
Você poderia elaborar o "intervalo dinâmico" mencionado na sua primeira linha?
Animesh Pandey
Eu editei a resposta. Por favor, não hesite em pedir mais informações.
Sansuiso
1

Quando você envolve uma imagem com um filtro, o resultado depende dos valores do filtro e do pixel da imagem. se o filtro não somar um, terá sua própria contribuição positiva para a convolução. Por exemplo, se você envolver uma imagem que consiste apenas em um valor constante, com um filtro que não totalize um, a convolução resultará em uma imagem com um valor constante mais alto. Portanto, esse filtro alteraria o brilho médio da imagem, o que pode não ser desejável.

A diferença exata entre as duas imagens seria um termo constante, ou seja, a soma do núcleo do filtro, a faixa dinâmica que é a diferença entre valores positivos e negativos, permaneceria exatamente a mesma.

NoNameNo
fonte