Konvolusi pada Citra

Konvolusi citra adalah teknik untuk menghaluskan suatu citra atau memperjelas citra dengan menggantikan nilai piksel dengan sejumlah nilai piksel yang sesuai atau berdekatan dengan piksel aslinya. Tetapi dengan adanya konvolusi, ukuran dari citra tetap sama, tidak berubah.

Proses Konvolusi

Pada pengolahan citra digital proses konvolusi merupakan perkalian konvolusi antara matrik citra asal dengan matrik tapis atau tapis atau mask.

Operasi konvolusi sebagai fungsi diskrit 2 dimensi dapat didefinisikan dengan persamaan berikut ini.

Konvolusi 2D inilah yang banyak digunakan pengolahan citra digital, sayangnya rumus diatas sangat sulit diimplementasikan menggunakan komputer, karena pada dasarnya komputer hanya bisa melakukan perhitungan pada data yang diskrit sehingga tidak dapat digunakan untuk menghitung intregral di atas.
Konvolusi pada fungsi diskrit f(n,m) dan h(n,m) didefinisikan dengan:
 

Ilustrasi Proses Konvolusi

Ilustrasi proses konvolusi dari Persamaan di atas ditunjukkan pada gambar di bawah :

Operasi konvolusi dilakukan dengan menggeser mask konvolusi pixel per pixel mulai dari posisi kiri atas sampai posisi kanan bawah yang sering disebut dengan sliding window. Hasil dari proses konvolusi disimpan pada matrik yang baru dengan posisi koordinat yang sama.

 

Manfaat dan Tujuan Konvolusi pada Citra

 

Perbaikan kualitas citra (image enhancment)

Menghilangkan derau (noise)

Mengurangi kerutan (mencong/serong)

Penghalusan / pembulatan citra

 

Jenis-Jenis Filter dalam Konvolusi Citra

 

A.     Filter Median

 

Dalam merancang filter median, ada beberapa hal yang harus dipersiapkan terlebih dahulu.

 

-         Siapkan matriks yang akan diolah. Bila matriks berisi citra, maka jadikan citra tersebut menjadi citra grayscale atau abu-abu agar yang didapat hanya 1 matriks intensitas saja.

 

-         Siapkan matriks yang NOL yang ukurannya sama persis dengan citra yang akan diolah. Matriks ini nantinya akan berisi nilai-nilai intensitas dari citra asli yang sudah diolah terlebih dahulu.

 

Langkah selanjutnya akan ditunjukkan pada pembahasan contoh berikut ini.

 

3

5

7

1

3

9

5

3

2

6

8

9

4

8

1

6

8

3

4

2

0

6

8

1

7

7

8

9

5

4

7

6

3

6

2

5

1

2

6

4

9

6

5

5

8

3

9

7

9

8

4

5

3

1

6

7

4

7

9

4

5

3

7

6

1

7

4

5

0

8

5

6

7

3

1

2

8

3

6

2

6

7

9

0

0

5

4

2

2

3

1

7

0

5

4

3

7

1

8

 

Table 1 Matriks Original

 

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

 

Table 2   Matriks NOL

 

Langkah-langkahnya adalah sebagai berikut:

 

-         Misalkan ukuran jendela filter median yang akan digunakan berukuran 3x3. Operasi

filter akan dimulai dari piksel kiri-atas.

                 



Figure 1 Matriks NOL sebagai hasil filter

 

Tampak bahwa matriks nol akan berubah elemen nya menjadi nilai median dari matriks original sesuai

 

dengan ukuran dari bagian matriks original yang tercakupi dengan jendela filter. Ada yang sedikit membingungkan memang, mengapa elemen-elemen paling tepi dari matriks nol sama dengan elemen-elemen paling tepi dari matriks original. Karena kita tidak akan memproses bagian pinggir tersebut, jelas tidak mungkin untuk diproses.

 

Perlu diingat bahwa proses filter itu diperlakukan untuk semua piksel. Jadi ketika proses filter pertama di atas selesai, maka proses berikutnya berlangsung pada piksel yang tepat disebelahnya. Bila filter telah mencapai kolom terakhir dalam satu baris, maka filter akan turun satu piksel dan dimulai dari sebelah kiri. Demikianlah semua proses tersebut terjadi hingga semua nilai 0 pada matriks NOL berubah menjadi nilai median atau titik tengah dari matriks original yang sesuai dengan ukuran dari jendela filter.

 

Setelah beberapa iterasi, maka akan dihasilkan bentuk akhir dari matriks hasil filter seperti di bawah ini:

 

3

5

7

1

3

9

5

3

2

6

8

9

7

5

7

7

6

5

4

4

6

6

8

6

4

6

6

6

5

4

5

5

3

6

6

5

7

7

6

5

5

5

5

5

8

6

5

7

6

4

5

5

5

5

6

7

5

7

7

7

5

5

4

3

3

7

4

4

6

6

6

5

5

3

3

4

8

3

3

5

5

6

5

4

3

3

4

2

2

3

1

7

0

5

4

3

7

1

8

 

B.      Filter Mean

 

Sesuai dengan namanya, filter ini akan mengganti sebuah piksel dengan reratanya. Langkah-langkahnya sama persis dengan filter median, hanya saja pada filter ini operasi yang digunakan adalah rerata bukan median.

 

Anda bisa mencoba sendiri untuk menghitungnya, untuk perbandingan maka hasil dari operasi rerata atau mean terhadap matriks original yang telah disebutkan sebelumnya adalah:

 

3

5

7

1

3

9

5

3

2

6

8

9

6

5

5

6

6

6

4

4

4

6

8

6

4

5

5

6

6

5

5

4

3

6

5

5

6

6

6

6

5

5

5

5

8

6

5

6

6

5

6

5

5

4

6

7

5

6

6

7

6

5

4

3

4

7

4

4

5

5

7

5

4

4

3

4

8

3

3

4

4

6

5

4

3

3

4

2

2

3

1

7

0

5

4

3

7

1

8

 

C.      Filter Max

 

Filter max berarti menggantikan piksel dengan nilai tertinggi dari suatu deret yang terbentuk dari matriks yang sesuai dengan ukuran dari jendela filter. Langkah-langkah lainnya sama dengan filter median.

 

Untuk perbandingan buat anda, maka hasil dari filter pada matriks original yang telah disebutkan sebelumnya adalah:

 

3

5

7

1

3

9

5

3

2

6

8

9

9

8

8

9

9

9

7

7

8

6

8

9

8

8

9

9

9

9

9

7

3

6

9

9

9

9

9

9

9

9

7

5

8

9

9

9

9

9

9

9

9

7

6

7

9

9

9

9

9

8

7

7

8

7

4

7

9

9

9

9

9

7

7

8

8

3

6

8

8

9

9

9

7

7

8

2

2

3

1

7

0

5

4

3

7

1

8

 

 

 

D.     Filter Min

 

Filter ini merupakan kebalikan dari filter max. Artinya bahwa piksel akan digantikan dengan nilai min (minimal) dari sebuah deret dari matriks yang berukuran sesuai dengan jendela matriks filter.

 

Untuk lebih jelas, perhatikan contoh berikut sebagai perbandingan. Perhatikan bahwa matriks originalnya masih sama dengan matriks yang tersebut sebelumnya.

 

3

5

7

1

3

9

5

3

2

6

8

9

1

1

1

1

3

3

2

0

0

6

8

1

1

1

1

2

3

2

0

0

3

6

1

1

1

1

2

4

3

1

1

5

8

2

1

1

1

2

3

3

1

1

6

7

0

0

0

4

3

3

1

1

1

7

4

0

0

0

4

0

0

0

0

1

8

3

0

0

0

0

0

0

0

0

1

2

2

3

1

7

0

5

4

3

7

1

8

 

 

Implementasi filter pada citra digital

 

Filter-filter tersebut dapat diimplementasikan dalam citra digital. Tujuannya tentu sangat beragam. Penggunaannya memang untuk tujuan-tujuan tertentu tergantung dengan permasalahan yang sedang ditangani. Misalnya bila ingin menghaluskan citra atau biasa disebut sebagai image smoothing dan untuk menghapus derau atau noise eliminating.

 

Dalam program ini, kita akan mencoba untuk mengolah citra digital menggunakan filter. Hasilnya bisa berupa penghalusan dan bisa juga berupa penghilangan derau.

 

Untuk contoh berikut ini adalah proses untuk menghaluskan citra. Langkah-langkah dalam membuat program matlab untuk mengolah citra digital menggunakan filter-filter di atas adalah:

 

PS: this program originally developed by me.

 

Membaca data dari citra digital.

 

I=imread('sepatuku','jpg'); imshow(I); title('Citra Asli');

 

Menjadikan citra menjadi grayscale lalu mengubahnya ke dalam double precision.

 

I=rgb2gray(I);

I=double(I);

 

Membuat matriks dummy atau buffer atau matriks nol.

 

[x,y]=size(I);

dummy=zeros(x,y);


Membuat matriks filter dalam hal ini jendelanya berukuran 3x3, anda bisa mengubahnya.

 

m=3; n=3;

 

a=ones(m,n);

 

Melakukan operasi penapisan atau filter terhadap matriks original.

 

Gantilah perintah MEDIAN menjadi MEAN, MAX, MIN sesuai dengan keinginan anda. Khusus untuk MEAN, pakailah pembulatan ROUND.

 

for ii=1:x-(m-1) for jj=1:y-(n-1)

 

aa=a.*I(ii:m+ii-1,jj:n+jj-1); b=reshape(aa,1,m*n); b=sort(b);

b=median(b);

dummy(ii+1,jj+1)=b;

end

end

 

Menyusun kembali matriks akhir setelah di filter.

 

for ii=2:x-1 for jj=1:y

 

if jj==1

n=I(ii,jj);

 

elseif jj==y

n=I(ii,jj);

else

n=0;

end

mmed(ii-1,jj)=n;

end

end

 

mmed=[I(1,:);mmed;I(x,:)];

mmed=mmed+dummy;

 

Menampilkan citra hasil filter smoothing.

 

figure, imshow(mmed,[0 255]); title('Citra Hasil Filter');

 

Hasil eksekusi program untuk ke empat filter tersebut adalah:



 

*** median



 

*** mean



 

*** max

 

*** min




Perlu diketahui untuk filter min, maka bisa saja terjadi pada citra hasil tapis akan timbul warna gelap yang berbentuk blok-blok, sedangkan untuk filter max akan menyebabkan warna terang yang berbentuk blok-blok. Lokasi nya juga acak.

 

Sebagai  contoh  aplikasi  dari  filter  median  untuk  menapis  citra  yang  terkena  derau  salt  and  pepper.

 

Perhatikan code berikut ini:

% membaca citra

I=imread('sepatuku','jpg');

imshow(I); title('Citra Asli');

I=imnoise(I,'salt & pepper',0.02);

figure, imshow(I); title('Citra Dengan Noise S&P'); I=rgb2gray(I);

%%

%% membuat matriks dummy

I=double(I);

[x,y]=size(I);

dummy=zeros(x,y);

m=3; n=3;

a=ones(m,n);

%%

%% filter

for ii=1:x-(m-1)

for jj=1:y-(n-1)

aa=a.*I(ii:m+ii-1,jj:n+jj-1);

b=reshape(aa,1,m*n);

b=sort(b);

b=min(b);

dummy(ii+1,jj+1)=b;

end

end

%%

%%  matriks akhir setelah di filter for ii=2:x-1


for jj=1:y if jj==1

n=I(ii,jj);

elseif jj==y

n=I(ii,jj);

else

n=0;

end

mmed(ii-1,jj)=n;

end

end

mmed=[I(1,:);mmed;I(x,:)];

mmed=mmed+dummy;

%%

%% menampilkan citra grayscale dengan range 0-255

figure, imshow(mmed,[0 255]); title('Citra Hasil Filter');

%%

Hasil eksekusinya adalah:



 

*** citra kena derau salt and pepper



*** citra hasil tapis median terhadap citra berderau



 

Sumber:

https://schistro.wordpress.com/2016/10/24/pengertian-konvolusi-pada-citra/

https://hwsmartsolution.com/blog/2015/07/23/macam-macam-filter-imagecitra-pada-matlab/

https://id.scribd.com/doc/57340992/Menghaluskan-Citra-dengan-Filter-Statistik-Mean-Median-Max-Dan-Min

Komentar