math - example - ¿Cómo puedo determinar si mi convolución es separable?
convolution traduccion (2)
¿Qué hace que un núcleo de convolución se pueda separar? ¿Cómo podría saber qué eran esas partes separables para hacer dos circunvoluciones 1D en lugar de una convolución 2D?
Gracias
También puede dividir la matriz en partes simétricas y sesgadas y separar cada parte, lo que puede ser efectivo para convoluciones más grandes en 2D.
Si el núcleo del filtro 2D tiene un rank
de 1, entonces es separable. Puede probar esto en, por ejemplo, Matlab o Octave:
octave-3.2.3:1> sobel = [-1 0 1 ; -2 0 2 ; -1 0 1];
octave-3.2.3:2> rank(sobel)
ans = 1
octave-3.2.3:3>
Vea también: http://blogs.mathworks.com/steve/2006/11/28/separable-convolution-part-2/ - esto cubre el uso de SVD
(Descomposición de valor singular) para extraer los dos núcleos 1D de un núcleo 2D separable .
Vea también esta pregunta en DSP.stackexchange.com : Una forma rápida / eficiente de descomponer los coeficientes de filtro 2D enteros separables