Dalam konvolusi, dua fungsi matematika digabungkan untuk menghasilkan fungsi ketiga. Dalam fungsi pemrosesan gambar biasanya disebut kernel. Kernel tidak lebih dari array (persegi) piksel (gambar kecil untuk berbicara). Biasanya, nilai-nilai dalam kernel ditambahkan hingga satu. Ini untuk memastikan tidak ada energi yang ditambahkan atau dihapus dari gambar setelah operasi.
Secara khusus, sebuah kernel Gaussian (digunakan untuk Gaussian blur) adalah array persegi piksel di mana nilai-nilai piksel sesuai dengan nilai-nilai kurva Gaussian (dalam 2D).
Setiap piksel dalam gambar dikalikan dengan kernel Gaussian. Ini dilakukan dengan menempatkan piksel tengah kernel pada piksel gambar dan mengalikan nilai dalam gambar asli dengan piksel pada kernel yang tumpang tindih. Nilai yang dihasilkan dari perkalian ini ditambahkan dan hasil itu digunakan untuk nilai pada piksel tujuan. Melihat gambar, Anda akan mengalikan nilai pada (0,0) dalam array input dengan nilai pada (i) dalam array kernel, nilai pada (1,0) dalam array input dengan nilai pada (h) ) dalam array kernel, dan sebagainya. dan kemudian tambahkan semua nilai ini untuk mendapatkan nilai untuk (1,1) pada gambar output.
Untuk menjawab pertanyaan kedua Anda terlebih dahulu, semakin besar kernel, semakin mahal operasinya. Jadi, semakin besar radius blur, semakin lama operasi akan berlangsung.
Untuk menjawab pertanyaan pertama Anda, seperti yang dijelaskan di atas, konvolusi dapat dilakukan dengan mengalikan setiap piksel input dengan seluruh kernel. Namun, jika kernel simetris (yang merupakan kernel Gaussian), Anda juga dapat mengalikan setiap sumbu (x dan y) secara mandiri, yang akan mengurangi jumlah total perkalian. Dalam istilah matematika yang tepat, jika sebuah matriks dapat dipisahkan, ia dapat didekomposisi menjadi matriks (M × 1) dan (1 × N). Untuk kernel Gaussian di atas ini berarti Anda juga dapat menggunakan kernel berikut:
1256⋅ ⎡⎣⎢⎢⎢⎢⎢⎢1464141624164624362464162416414641⎤⎦⎥⎥⎥⎥⎥⎥= 1256⋅ ⎡⎣⎢⎢⎢⎢⎢⎢14641⎤⎦⎥⎥⎥⎥⎥⎥⋅ [ 14641]
Sekarang Anda akan mengalikan setiap piksel dalam gambar input dengan kedua kernel dan menambahkan nilai yang dihasilkan untuk mendapatkan nilai untuk piksel keluaran.
Untuk informasi lebih lanjut tentang cara melihat apakah kernel dapat dipisahkan, ikuti tautan ini .
Sunting: dua kernel yang ditunjukkan di atas menggunakan nilai yang sedikit berbeda. Ini karena parameter (sigma) yang digunakan untuk kurva Gaussian untuk membuat kernel ini sedikit berbeda dalam kedua kasus. Untuk penjelasan tentang parameter mana yang mempengaruhi bentuk kurva Gaussian dan dengan demikian nilai-nilai dalam kernel mengikuti tautan ini
Sunting: pada gambar kedua di atas dikatakan bahwa kernel yang digunakan terbalik. Ini tentu saja hanya membuat perbedaan jika kernel yang Anda gunakan tidak simetris. Alasan mengapa Anda perlu membalik kernel berkaitan dengan sifat matematika dari operasi konvolusi (lihat tautan untuk penjelasan lebih mendalam tentang konvolusi). Sederhananya: jika Anda tidak mau membalik kernel, hasil operasi konvolusi akan terbalik. Dengan membalik kernel, Anda mendapatkan hasil yang benar.