TEKNIK PENGOLAHAN CITRA Kuliah 5 – Neighboorhood Processing

  TEKNIK PENGOLAHAN CITRA Kuliah 5 Neighboorhood Processing Indah Susilawati, S.T., M.Eng. Program Studi Teknik Informatika/Sistem Informasi Fakultas Teknologi Informasi Universitas Mercu Buana Yogyakarta 2016

  KULIAH 5

TEKNIK PENGOLAHAN CITRA

NEIGHBOURHOOD PROCESSING

  Pada operasi titik, citra dimodifikasi dengan menerapkan suatu fungsi pada setiap nilai piksel. Neigbourhood processing dapat dipandang sebagai perluasan dari operasi pengolahan titik, dimana fungsi diterapkan pada sejumlah piksel yang bertetangga.

  Neigbourhood processing

  dilakukan dengan menggeser sebuah “mask” (yang dapat berbentuk segiempat atau bentuk lain) pada citra yang akan diolah. Dengan demikian dapat diperoleh citra baru yang piksel-pikselnya dihitung dari nilai piksel- piksel citra yang berada di bawah “mask”, lihat gambar berikut. Mask juga sering disebut sebagai window.

  

Mask atau window berukuran 3x5, piksel dengan posisi di pusat mask (yaitu posisi

(x,y)) diubah menjadi nilai lain sesuai dengan fungsi yang digunakan.

  Kombinasi antara “mask” dan fungsi disebut filter (tapis). Jika fungsinya linear maka disebut filter linear.

  Sebuah filter linear dapat diimplementasikan dengan mengalikan semua elemen pada “mask” dengan elemen-elemen yang bersesuaian pada piksel yang bertetangga, dan kemudian menjumlahkan hasilnya. Misalnya “mask” yang digunakan berbentuk segiempat 3 x 5 piksel sbb.

  Dan nilai-nilai piksel yang bersesuaian pada citra adalah Kemudian dikalikan dan dijumlahkan.

  1

  2 m (s, t) p (i  s, j  t)

  (5.1)

    s   1 t  

  2 Dengan demikian dibutuhkan tiga langkah dalam filtering, yaitu: 1. menempatkan “mask” pada piksel yang akan diproses, 2. mengalikan elemen-elemen pada “mask” dengan elemen yang bersesuaian pada piksel-piksel tetangga pada citra,

  3. menjumlahkan seluruh hasil perkalian.

  Ketiga langkah di atas dilakukan untuk semua piksel pada citra input. Diagram berikut mengilustrasikan proses spatial filtering tsb.

  Operasi yang sejenis dengan spatial filtering adalah konvolusi. Metode yang diterapkan dalam konvolusi sama dengan yang diterapkan dalam spatial filtering, namun filter diputar 180  terlebih dahulu sebelum proses perkalian dan penjumlahan. Dengan notasi yang sama dengan yang digunakan sebelumnya, maka output konvolusi dengan “mask” 3 x 5 untuk piksel tunggal adalah

  1

  2 m (-s,-t) p (i s, j t)  

  (5.2)

    s   1 t  

  1

  2 m (s, t) p (i  s, j  t)

  (5.3)

    s 1 t

  2    

  Pada persamaan yang terakhir, piksel citra diputar 180 ; sehingga diperoleh hasil yang sama dengan persamaan sebelumnya. Konvolusi menjadi penting dalam pembahasan transformasi Fourier dan teori konvolusi. Dalam prakteknya, sebagian besar “mask” filter adalah simetris terhadap putaran (rotationally symmetric) sehingga spatial filtering dan konvolusi akan menghasilkan output yang sama. Contoh

  Satu filte r linear yang penting adalah dengan menggunakan “mask” 3 x 3 dan mengambil rerata dari semua nilai yang tercakup dalam “mask”. Nilai rerata ini akan menjadi nilai aras keabuan pada citra output. Operasinya dapat dijelaskan sbb.

  Dimana a sampai dengan i adalah nilai piksel pada citra input, dan rerata aras keabuan akan menjadi piksel citra output pada posisi piksel yang sama yaitu posisi piksel e.

  Misalnya citra yang piksel-pikselnya sbb.

  170 240 10 80 150 230 50 70 140 160 40 60 130 200 220 100 120 190 210 30 110 180 250 20 90

  Maka piksel-piksel yang bertetangga pada sudut kanan atas adalah dan reratanya adalah 111,1111 dan dapat dibulatkan menjadi 111 (Ini akan menjadi piksel citra output pada posisi (2,2)). Selanjutnya piksel-piksel bertetangga yang kedua adalah dan reratanya adalah 108,8889 dan dapat dibulatkan menjadi 108 atau 109. (Ini akan menjadi piksel citra output pada posisi (2,3)). Dengan melakukan operasi yang sama untuk seluruh piksel pada citra, maka diperoleh hasil sbb.

   Contoh implementasi dalam Matlab untuk filter rerata 3x3 pada matriks 5x5. Cara yang mudah untuk menggambarkan filter linear adalah dengan menggunakan koefisien-koefisien untuk semua nilai aras keabuan piksel dalam “mask”. Untuk filter di atas, output filter dapat dinyatakan sbb.

  (a i) h g f e d c b

  Contoh Sebuah filter

  1

  9

  1

  9

  1

  9

  1

  9

  1

       

  1

     

     

  1

  2

  1

  2

  4

  2

  1

  2

  9

  9

  9

  1

  1        

  (5.4) Sehingga filter dapat dinyatakan dengan matriks sbb.

       

     

           

        

  1

  1

  1

  1

  1

  1

  1

  1

  1

  9

  1

  9

  1

  9

  1

  9

  Batas atau tepi citra (edges of the image) merupakan suatu hal yang harus diselesaikan dalam operasi filtering , misalnya bagaimana jika sebagian “mask” berada di luar citra. Perhatikan gambar berikut. Pendekatan untuk menyelesaikan hal ini adalah 1. Tidak mempedulikan batas atau tepi citra.

  Dalam hal ini, “mask” hanya diaplikasikan pada piksel-piksel pada citra dimana seluruh “mask” berada dalam citra. Pendekatan ini menghasilkan citra output yang ukurannya lebih kecil daripada citra input. Jika ukuran “mask” sangat besar, akan menyebabkan sejumlah besar informasi menjadi hilang. Pada contoh yang telah dibahas di atas, digunakan pendekatan jenis ini.

  2. Tambahkan piksel-piksel dengan nilai 0 (Pad with zeroes) Dalam pendekatan ini, diasumsikan bahwa semua piksel yang berada di luar citra mempunyai nilai aras keabuan nol. Pendekatan ini menghasilkan citra output yang ukurannya sama dengan citra input, namun kadang mempunyai pengaruh pada batas-batas tepi citra.

  Filtering Menggunakan Matlab

  Matlab menyediakan fungsi untuk melakukan linear filtering, yaitu fungsi filter2.m dengan sintaks filter2 (filter, image,

  „shape‟) Parameter “shape” bersifat opsional, digunakan untuk mendefinisikan metode atau pendekatan untuk menangani batas atau tepi citra, yaitu:  filter2 (filter, image, „same‟)

  Merupakan default Matlab; menghasilkan matriks yang sama ukurannya dengan matiks citra input. Digunakan padding dengan nilai nol.

   filter2 (filter, image, „valid‟) Hanya mengaplikasikan filter pada piksel-pik sel “di dalam” citra saja, tidak mempedulikan piksel-piksel pada batas atau tepi citra. Ukuran citra output lebih kecil daripada citra input.

   filter2 (filter, image, „full‟) Menghasilkan matriks yang ukurannya lebih besar daripada matiks citra input. Digunakan padding dengan nilai nol, dan diterapkan pada semua wilayah dimana masih terdapat overlap antara citra dan filter.

  Contoh

  >> a = ones(3,3)/9

  a = 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111

  >> x = magic(5)

  x = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

  >> s = filter2(a, x, 'same')

  s = 7.6667 8.5556 6.5556 6.7778 5.8889 8.7778 11.1111 10.8889 12.8889 10.5556 6.6667 11.0000 13.0000 15.0000 10.6667 6.7778 13.1111 15.1111 14.8889 8.5556 5.6667 10.5556 10.7778 8.7778 3.8889

  >> v = filter2(a, x, 'valid')

  f = 11.1111 10.8889 12.8889 11.0000 13.0000 15.0000 13.1111 15.1111 14.8889

  >> f = filter2(a, x, 'full')

  f = 1.8889 4.5556 4.6667 3.6667 2.6667 2.5556 1.6667 4.4444 7.6667 8.5556 6.5556 6.7778 5.8889 3.4444 4.8889 8.7778 11.1111 10.8889 12.8889 10.5556 5.8889 4.1111 6.6667 11.0000 13.0000 15.0000 10.6667 4.5556 2.7778 6.7778 13.1111 15.1111 14.8889 8.5556 3.7778 2.3333 5.6667 10.5556 10.7778 8.7778 3.8889 1.3333 1.2222 3.2222 6.0000 5.0000 4.0000 1.2222 1.0000

  Tidak ada pendekatan tunggal yang terbaik dalam hal memilih jenis filter, pemilihan harus disesuaikan dengan permasalahan yang dihadapi (problem dependent) dan hasil yang diinginkan.

  Filter yang akan digunakan dapat dibuat sendiri atau dapat pula menggunakan fungsi fspecial.m; yang menyediakan beberapa pilihan filter termasuk diantaranya filter pe-rerata (average). Contoh

  >> fspecial (‘average’, [5,7])

   membuat filter pe-rerata ukuran 5 x 7

  >> fspecial (‘average’, 11)

   membuat filter pe-rerata ukuran 11 x 11 Jenis-jenis filter yang dapat dipilih antara lain adalah 1. 'average' averaging filter 2. 'disk' circular averaging filter 3. 'gaussian' Gaussian lowpass filter 4. 'laplacian' filter approximating the 2-D Laplacian operator 5. 'log' Laplacian of Gaussian filter 6. 'motion' motion filter 7. 'prewitt' Prewitt horizontal edge-emphasizing filter 8. 'sobel' Sobel horizontal edge-emphasizing filter 9. 'unsharp' unsharp contrast enhancement filter Contoh clear all ; clc; I = imread ( 'cameraman.tif' ); f = fspecial ( 'average' ,[5,5]); If = filter2 (f,I); subplot (1,2,1), imshow (I) title ( 'citra input' ) subplot (1,2,2), imshow (mat2gray(If)) title ( 'citra output' )

  

citra input citra output

Filtering Menggunakan Scilab

  Scilab memmpunyai fungsi-fungsi untuk melakukan filtering citra dalam domain spasial, antara lain fungsi: imfilter

  • filter2
  • fspecial
  • dengan beberapa pilihan jenis filter dan dimungkinkan untuk membentuk filter sendiri.

  

Tugas : pelajari sintaks ke-3 fungsi untuk filtering di atas, lakukan filtering dengan

ke-3 fungsi tsb untuk citra cameraman.bmp (pilihan jenis filter bebas).

  Filter pe-rerata akan mengaburkan citra, makin besar ukuran filter maka citra cenderung makin kabur. Dengan menggunakan filter berukuran besar maka dapat terlihat jelas pengaruh padding dengan nilai nol di sekelilling tepi atau batas citra. Perhatikan hasil filtering dengan filter pe-rerata ukuran 15 x 15 berikut.

  

citra input citra output

  Filter pe-rerata penting dalam permasalahan-permasalahan di mana aspek citra yang menjadi perhatian adalah bukan detail citra, misalnya pengamat hanya tertarik pada berapa jumlah objek yang ada pada citra, atau hanya tertarik pada luas daerah gelap dan daerah terang pada citra.

  Separable Filter

  Beberapa filter dapat diimplementasikan sebagai dua filter yang lebih sederhana secara berurutan. Misalnya, oleh karena

  (5.5) maka filter pe-rerata 3 x 3 dapat diimplementasikan dengan menerapkan filter 3 x 1, kemudian diikuti dengan menerapkan filter 1 x 3 pada hasil filtering yang pertama. Dengan demikian maka dikatakan bahwa filter pe-rerata dapat dibagi (separable) menjadi dua filter yang lebih kecil. Separabilitas menghasilkan penghematan waktu pengolahan. Misalkan filter n x n dapat dibagi menjadi 2 filter ukuran n x 1 dan 1 x n.

  2

  2 Penerapan filter n x n membutuhkan sejumlah n perkalian dan (n

  • – 1) penjumlahan untuk setiap piksel citra. Dengan menggunakan filter n x 1, hanya dibutuhkan sejumlah n perkalian dan (n
  • – 1) penjumlahan. Karena dilakukan dua kali, jumlah total operasi yang dibutuhkan adalah 2n perkalian dan
  • – 1) penjumlahan. Jika n cukup besar, maka penghematan waktu pengolahan bisa menjadi pertimbangan tersendiri.

  Semua filter pe-rerata merupakan filter yang separable. Filter yang lain yang

  separable adalah filter laplacian,

  (5.5)

  LPF dan HPF

  Secara garis besar, frekuensi dari sebuah citra merupakan ukuran besarnya perubahan nilai aras keabuan terhadap jarak. Komponen frekuensi tinggi dicirikan dengan adanya perubahan nilai aras keabuan yang besar pada jarak yang dekat; contoh komponen frekuensi tinggi adalah tebing (edges) dan derau (noise). Komponen frekuensi rendah dicirikan dengan perubahan yang kecil pada nilai aras keabuan, termasuk di dalamnya misalnya latar belakang (background). Dengan demikian maka, HPF  akan melewatkan komponen frekuensi tinggi dan mengurangi atau menghilangkan komponen frekuensi rendah. LPF  akan melewatkan komponen frekuensi rendah dan mengurangi atau menghilangkan komponen frekuensi tinggi.

  Sebagai contoh, filter pe-rerata adalah LPF karena cenderung membuat citra menjadi kabur (tebing-tebing citra menjadi hilang atau kabur). Contoh filter HPF adalah Pada contoh filter HPF di atas, jumlah semua elemen dalam matriks adalah nol. Hal ini berarti bahwa pada bagian citra yang berfrekuensi rendah (yaitu nilai aras keabuannya hampir sama) maka hasil filtering akan mendekati nol. Contoh

  Terlihat bahwa hasil filtering mempunyai nilai yang mendekati nol. Untuk menangani hasil filtering yang nilainya di luar aras keabuan yang ada (yaitu 0

  • – 255) dapat digunakan pendekatan sbb.

  1. Membuat nilai negatif menjadi positif.

  Pendekatan ini memang menyelesaikan permasalahan adanya nilai negatif pada hasil filtering tetapi tidak mengatasi masalah jika ada nilai di atas 255. Sehingga pendekatan ini hanya digunakan dalam keadaan yang khusus saja, misalnya saat hanya terdapat beberapa nilai negatif saja dan nilai tersebut dekat dengan nol.

  2. Memotong nilai (Clip values) Pendekatan ini menerapkan operasi pengambangan (thresholding) pada nilai aras keabuan hasil filtering sehingga nilainya berada pada rentang 0

  • – 255.

   (5.6)

  3. Penyekalaan (scaling transformation) Misalkan nilai aras keabuan hasil filtering berada pada rentang g L H dengan g L

  • – g adalah nilai terendah dan g H adalah nilai tertinggi. Maka semua nilai pada rentang g tersebut dapat ditransformasikan ke rentang 0

  L H

  • – g
  • – 255 menggunakan transformasi linear sbb.
Oleh karena gradien garis linear di atas adalah 255 / (g H L ), maka persamaan

  • – g garis transformasi dapat dinyatakan sbb.

  (5.7) Contoh (dalam Matlab) clear all ; clc; I = imread ( 'cameraman.tif' ); f = [1 -2 1;-2 4 -2;1 -2 1]; fI = filter2(f, I); maks = max(fI(:)) mins = min(fI(:)) fI2 = (fI - mins)/(maks - mins); % terskala 1 fI3 = fI/60; % terskala 2 subplot (1,3,1), imshow (I) title ( 'citra input' ) subplot (1,3,2), imshow (fI2) title ( 'ouput HPF terskala 1' ) subplot (1,3,3), imshow (fI3) title ( 'ouput HPF terskala 2' ) citra input ouput HPF terskala 1 ouput HPF terskala 2 HPF atau filter lolos tinggi sangat penting dalam deteksi tebing dan peningkatan tebing (edge detection and edge enhancement). Tebing-tebing pada citra dicirikan atau ditandai dengan perubahan yang mencolok (besar) pada nilai aras keabuannya. Contoh HPF yang lain adalah filter laplacian dan filter log.

  Contoh (dalam Matlab)

  >> f1 = fspecial ('laplacian')

  f1 = 0.1667 0.6667 0.1667 0.6667 -3.3333 0.6667 0.1667 0.6667 0.1667

  >> f2 = fspecial ('log')

  f2 = 0.0448 0.0468 0.0564 0.0468 0.0448 0.0468 0.3167 0.7146 0.3167 0.0468 0.0564 0.7146 -4.9048 0.7146 0.0564 0.0468 0.3167 0.7146 0.3167 0.0468 0.0448 0.0468 0.0564 0.0468 0.0448

  Contoh (dalam Matlab) clear all ; clc; I = imread ( 'cameraman.tif' ); f1 = fspecial( 'laplacian' ); f2 = fspecial( 'log' ); I1 = filter2(f1,I); I2 = filter2(f2,I); subplot (1,3,1), imshow (I) title ( 'citra input' ) subplot (1,3,2), imshow (I1/100) title ( 'ouput HPF Laplacian' ) subplot (1,3,3), imshow (I2/100) title ( 'ouput HPF Log' )

  citra input ouput HPF Laplacian ouput HPF Log Tugas:

  Implementasikan filter rerata (halaman 8) untuk neighborhood atau mask sebagai berikut menggunakan citra cameraman.tif. Hindari mengkopas hasil karya orang lain, kesamaan minimal 40% akan dieliminasi.

  a.

  Mask ukuran 5x3 b. Mask ukuran 3x5 c. Mask ukuran 5x5 d. Mask ukuran 5x7