Bilinear Interpolation merupakan salah satu metode yang digunakan pada penskalaan atau perubahan ukuran citra. Sebuah citra digital dapat ditransformasikan menjadi citra baru dengan ukuran yang berbeda dari aslinya. Image scalling atau image resizing merupakan proses yang dapat digunakan untuk merubah ukuran citra. Secara teknis, untuk merubah ukuran citra kita dapat menggunakan dua nilai sebagai input. Kita dapat menggunakan nilai skala, atau langsung menggunakan nilai ukuran panjang dan lebar dari citra hasil yang di-inginkan.
Sebagai permulaan, mari kita bahas dulu apa itu bilinear interpolation, bilinear interpolation secara umum merupakan operasi interpolasi pada ruang dua dimensi (x,y) yang dimulai dengan proses interpolasi pada satu arah atau sumbu x dan dilanjutkan dengan interpolasi pada arah lainnya atau sumbu y. Pada perubahan ukuran citra, tujuan dari bilinear interpolasi adalah untuk menemukan nilai piksel pada sebuah piksel berdasarkan nilai dari empat piksel tetangganya. Beberapa literatur menggunakan istilah weighted arithmetic mean atau weighted sum dari empat piksel tetangganya.
Sebelum masuk kepada contoh bilinear interpolation, mari kita lihat dulu formula atau persamaan yang digunakan pada metode bilinear interpolation. Nilai pada suatu titik atau piksel pada posisi x,y atau biasa disebut dengan f(x,y) dapat dihitung dengan :
dimana dan
dapat diperoleh dari :
dimana :
adalah piksel tetangga pada posisi kiri atas dengan posisi
adalah piksel tetangga pada posisi kiri bawah dengan posisi
adalah piksel tetangga pada posisi kanan atas dengan posisi
adalah piksel tetangga pada posisi kanan bawah dengan posisi
Image Resizing / Image Scaling
Setelah kita mengetahui persamaan dasar dari bilinear interpolation, selanjutnya kita akan menggunakan bilinear interpolation pada proses perubahan ukuran citra atau penskalaan citra. Perubahan ukuran citra dan penskalaan citra pada dasarnya merupakan operasi yang sama hanya berbeda inputnya saja. Pada perubahan ukuran citra, kita akan memberikan input ukuran panjang dan lebar baru yang di-inginkan, sedangkan penskalaan citra kita hanya memasukkan skala citra baru yang di-inginkan baru dari nilai skala tersebut akan dihitung ukuran panjang dan lebar dari citra baru.
sebagai ilustrasi, kita akan menggunakan citra grayscale berukuran 3x3 sebagai berikut :
selanjutnya kita ingin memperbesar citra diatas ke ukuran 5x5. Tahap pertama adalah menghitung skala lebar (Sx) dan tinggi (Sy) dari perubahan ukuran citra :
S_x = 5 / 3 = 1.67
S_y = 5 / 3 = 1.67
Berikutnya kita akan mencari nilai piksel yang akan mengisi citra baru. Piksel pertama yang kita akan cari nilai warnanya adalah piksel pada posisi (0,0). Untuk mengisi nilai warna pada piksel citra baru, kita haru mencari dulu piksel yang akan digunakan sebagai acuan atau reference pada citra lama.
Untuk dapat menghitung nilai piksel pada posisi (0,0) pada citra output, maka kita akan mencari dulu piksel reference atau piksel acuan pada citra lama atau citra input.
X = 0 / 1.67 = 0
Y = 0 / 1.67 = 0
Maka diperoleh piksel acuan dari piksel input adalah piksel pada posisi (0,0).
Setelah diperoleh piksel referensi, selanjutnya kita akan menghitung nilai bilinear interpolation pada piksel referensi dari citra input. Untuk menghitung bilinear interpolation, kita membutuhkan empat piksel tetangga yaitu Q11, Q12, Q21 dan Q22.
Permasalahan disini adalah, tidak ada piksel di titik Q11, Q12 dan Q21. Untuk itu, kita dapat menduplikasi piksel pinggir sebagai piksel bayangan agar diperoleh nilai untuk titik yang berada di luar citra.
Dari hasil duplikasi, maka kita peroleh titik - titik tetangga dari piksel acuan yaitu :
Q11 = 84, Q12 = 133, Q21 = 74 dan Q22 = 239.
Selanjutnya kita akan menghitung f(x,y1) dan f(x,y2) :
Maka nilai bilinear interpolation diperoleh :
Nilai yang diperoleh dari perhitungan bilinear interpolation akan digunakan sebagai nilai piksel(0,0) pada citra hasil.
Pada piksel berikutnya di posisi (1,0) diperoleh X dan Y referensi yaitu (1,0) sehingga diperoleh nilai bilinear interpolation sebesar 105.
Dengan cara yang sama selanjutnya anda dapat melanjutkan untuk mencari nilai piksel - piksel selanjutnya dari citra hasil. Sebagai catatan, pemilihan Q11, Q12, Q21, dan Q22 dapat menggunakan berbagai cara dan teknik seperti menggunakan Q11(x,y), Q12(x,y+1), Q21(x+1,y), Q22(x+1,y+1), namun pada dasarnya hasilnya tidak akan berbeda jauh. Sekian artikel kali ini, semoga bermanfaat.