0 Daumen
967 Aufrufe

Gegeben sei der Gauß-Filterkern $$\left(\begin{matrix}1&2&1\\2&4&2\\1&2&1\end{matrix}\right)$$ Wie kann man diesen Filterkern separieren und wie viele Operationen spart man dadurch?

Avatar von

1 Antwort

0 Daumen
 
Beste Antwort

Das Separieren eines Filterkerns hat in der Informatik performancetechnische Relevanz. Man muss bedenken, dass die Filteroperation für alle Pixel in einem Bild durchgeführt wird. Effiziente Lösungen können somit die FPS-Rate erhöhen oder die gleiche Leistung bei leistungsschwächerer Hardware garantieren. Eine Aufteilung für den gegebenen Gauß-Filter $$G:=\left(\begin{matrix}1&2&1\\2&4&2\\1&2&1\end{matrix}\right)$$ ist durch \(\left(\begin{matrix}1&2&1\end{matrix}\right)\) und \(\left(\begin{matrix}1\\2\\1\end{matrix}\right)\) möglich. Für die Berechnung mit \(G\) sind \(9\) Multiplikationen, \(8\) Additionen und eine Division nötig. In Summe also 

\((9+8+1)\mathrm{ FLOPS}=18\mathrm{ FLOPS}\)

FLOPS steht für "Floating Point Operations". Je geringer dieser Wert ist, desto besser. Für den separierten Filterkern, der das selbe Endergebnis liefert, sind (\(3\) Multiplikationen, \(2\) Additionen, eine Division)\(\cdot 2\) nötig. Insgesamt also 

\(((3+2+1)\cdot 2)\mathrm{ FLOPS}=(6\cdot 2) \mathrm{ FLOPS}=12\mathrm{ FLOPS}\)

Mit dem separierten Filterkern spart man \(6\) Operationen (pro Pixelpunkt!) ein. Das ist ein Anteil von \(100\cdot \frac{6}{18}\approx 33\%\).

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community