SKRIPSI
MUTIARA
111401013
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah sarjana
Komputer
MUTIARA
111401013
PERSETUJUAN
Pembimbing 2 Pembimbing 1
Diketahui/disetujui oleh
Ilmu Komputer
Ketua,
PERNYATAAN
SKRIPSI
Saya menyatakan bahwa skripsi ini adalah hasil karya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing telah disebut sumbernya.
Medan,
Mutiara
111401013
UCAPAN TERIMAKASIH
Puji dan syukur penulis panjatkan kehadirat Allah Subhanallahu wa Ta’ala yang telah
memberikan rahmat-Nya kepada penulis sehingga penulis dapat menyelesaikan skripsi
ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi
S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas
Sumatera Utara.
Ucapan terima kasih penulis sampaikan kepada semua pihak yang mendukung
dan memotivasi penulis, baik secara langsung maupun tidak langsung. Pada
kesempatan ini, penulis mengucapkan terima kasih kepada:
1. Bapak Prof. Dr. Runtung Sitepu, S.H, M.Hum. selaku Rektor Universitas
Sumatera Utara.
2. Bapak Prof. Dr. Opim Salim Sitompul, M.Sc. selaku Dekan Fakultas Ilmu
Komputer dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom. selaku Ketua Program Studi S-1 Ilmu
Komputer Universitas Sumatera Utara.
4. Ibu Maya Silvi Lydia, B.Sc, M.Sc. selaku Sekretaris Program Studi S-1 Ilmu
Komputer Universitas Sumatera Utara.
5. Bapak Dr. Syahril Efendi, S.Si, M.IT selaku Dosen Pembimbing I yang
memberikan ilmu, kritik dan saran yang membangun dalam penulisan skripsi
ini.
6. Bapak Handrizal, S.Si, M.Comp.Sc selaku Dosen Pembimbing II yang
memberikan ilmu, kritik dan saran yang membangun dalam penulisan skripsi
ini.
7. Bapak Drs. Marihat Situmorang, M.Kom. selaku Pembanding I yang telah
memberikan kritik dan saran yang bermanfaat dalam penulisan skripsi ini.
8. Ibu Amalia, S.T, M.T. selaku pembanding II yang telah memberikan kritik dan
saran yang bermanfaat dalam penulisan skripsi ini.
9. Seluruh dosen dan pegawai Program studi S1 Ilmu Komputer Fasilkom-TI
USU yang telah membantu penulis dalam proses penulisan skripsi.
10. Orang tua dan seluruh keluarga penulis yang selalu memberikan semangat
tiada hentinya mendo’akan dan memberikan dukungan kepada penulis.
11. Gusra Algeri, S.kom, Murni Kurniati, S.kom, Mawaddah, S.kom, Muhammad
Harun daulay, S.kom, Surya Ismail S.kom, Muhammad Irfan, Mulia Rambe,
Rina Windayani, S.T, Renida Hikmana S.T yang telah memberikan banyak
waktu dan nasehat untuk penulis dalam menyelesaikan skripsi ini.
Semoga Allah SWT melimpahkan berkah kepada semua pihak yang telah
memberikan bantuan serta dukungan kepada penulis dalam menyelesaikan
skripsi ini.
Penulis
Mutiara
ABSTRAK
Interpolasi citra merupakan salah satu masalah yang cukup penting dalam berbagai
bidang yang diantaranya adalah untuk perbesaran citra. Interpolasi adalah suatu proses
untuk menentukan harga suatu fungsi pada titik-titik posisi antara suatu sampel
dengan sampel tetangganya, hal ini dilakukan dengan menyusun fungsi kontinu
melalui sampel-sampel masukan diskrit. Dengan demikian metode interpolasi
merupakan sasaran disain, analisis, dan evaluasi suatu algoritma interpolasi, yang
membutuhkan pertimbangan antara sasaran ketelitian dan efisiensi. Pada penelitian ini
penulis melakukan percobaan untuk mendapatkan hasil perbandingan perbesaran citra
dengan menggunakan algoritma Interpolasi Linear, Bilinear dan Nearst Neighbor.
Adapun Parameter perbandingan hasil interpolasi yang digunakan adalah Mean
Squared Error (MSE) dan Peak Signal Noise Ratio (PSNR). Sampel citra yang
digunakan pada penelitian ini adalah citra berformat Bmp dan Jpg. Pada penelitian ini
digunakan sebelas buah sampel citra dengan format JPG dan BMP kemudian
dibandingkan nilai MSE dan PSNR dari setiap metode tersebut. sehingga dapat
disimpulkan metode bilinear lebih unggul dari pada metode lainnya, dimana untuk
metode bilinear memperoleh MSE rata-rata 33,21 dan PSNR rata-rata -20,43
sementara metode linear menghasilkan MSE rata-rata 36,67 dan PSNS rata-rata -20,83
kemudian untuk nearst neighbor memperoleh nilai MSE rata-rata 38,57 dan PSNR
rata-rata -20,99.
Kata Kunci : Pengolahan Citra, Citra Digital, Resize Citra, Algoritma Interpolasi
Linear, Bilinear dan Nearst Neighbor.
ABSTRACT
DAFTAR ISI
PERSETUJUAN ................................................................................................. ii
PERNYATAAN ................................................................................................ iii
UCAPAN TERIMAKASIH ............................................................................... iv
ABSTRAK ......................................................................................................... vi
ABSTRACT ...................................................................................................... vii
DAFTAR ISI .................................................................................................... viii
DAFTAR TABEL .............................................................................................. xi
DAFTAR GAMBAR ........................................................................................ xii
BAB 1 PENDAHULUAN .................................................................................. 1
1.1 Latar belakang ................................................................................... 1
1.2 Rumusan Masalah ............................................................................. 2
1.3 Batasan Masalah ............................................................................... 2
1.4 Tujuan Penelitian .............................................................................. 3
1.5 Manfaat Penelitian ............................................................................ 3
1.6 Metodologi Penelitian ....................................................................... 3
1.7 Sistematika Penulisan ....................................................................... 4
DAFTAR TABEL
DAFTAR GAMBAR
Dalam kehidupan sehari-hari manusia tidak pernah lepas dari teknologi informasi.
Seiring berjalannya waktu kebutuhan manusia akan teknologi informasi pun semakin
meningkat. Salah satu teknologi informasi yang masih perkembang pada saat ini
adalah teknologi pengolahan citra (image processing). Teknologi ini telah digunakan
seperti pada kamera digital, laptop, televisi, dan lain-lain.
Selain representasi warna yang terkandung dalam sebuah citra digital, ukuran
dari citra digital tersebut juga akan sangat berpengaruh pada proses pengolahan citra
digital. Pada beberapa kasus akuisisi citra yang dilakukan, terkadang dihasilkan
ukuran citra yang didapat tidak sesuai dengan yang diinginkan. Untuk keperluan yang
berkaitan dengan pengolahan citra digital, memerlukan citra dengan ukuran tertentu
sebagai masukan. Pada proses pattern recognition, seperti pengenalan tulisan tangan,
optical character recognition (OCR) atau pada pengenalan wajah, dapat menghasilkan
keluaran yang salah jika ukuran citra masukan yang diproses tidak sesuai. Proses-
proses dalam algoritma computer vision akan lebih mudah jika citra masukan yang
diolah adalah citra dengan ukuran tertentu. Berdasarkan hal-hal tersebut dapat
disimpulkan bahwa penentuan ukuran dari suatu citra digital sangat penting dalam
proses pengolahan citra lebih lanjut (Sutojo, 2009).
Terdapat beberapa algoritma pengubahan ukuran citra yang biasa dipakai,
yaitu replikasi pixel, interpolasi linear, bilinear, Nearst Neighbor dan bicubic.
Interpolasi disebut juga dengan istilah resampling adalah sebuah metode pencitraan
untuk meningkatkan atau mengurangi jumlah piksel dalam gambar digital. Beberapa
kamera digital menggunakan interpolasi untuk menghasilkan gambar yang lebih besar
daripada yang ditangkap sensor atau untuk membuat zoom digital. Hampir semua
perangkat lunak editing gambar mendukung satu atau lebih metode interpolasi.
Bagaimana gambar yang diperbesar bisa halus tanpa meninggalkan kesan pecah
sangat tergantung pada kecanggihan algoritma interpolasi tersebut.
Interpolasi citra merupakan salah satu masalah yang cukup penting dalam
berbagai bidang. Misalnya dalam bidang medis seperti pembesaran citra, citra yang
mempunyai resolusi yang rendah dapat diambil oleh user dengan mudah pada saat
browsing dari pada citra yang mempunyai resolusi yang besar. Pada beberapa aplikasi,
untuk membuat browsing citra lebih mudah dan efektif, teknik interpolasi yang efektif
dibutuhkan untuk hal tersebut selain itu juga dibutuhkan kompleksitas perhitungan
yang rendah, dikarenakan interpolasi adalah suatu proses untuk menentukan harga
suatu fungsi pada titik-titik posisi antara suatu sampel dengan sampel tetangganya,
maka interpolasi dapat digunakan untuk proses pembesaran citra, hal ini dilakukan
dengan menyusun fungsi kontinu melalui sampel-sampel masukan diskrit. Dengan
demikian harga fungsi dapat diperoleh untuk setiap sembarang titik, tidak hanya harga
fungsi pada titik sampel. Ketelitian hasil perhitungan interpolasi atau lama waktu yang
diperlukan untuk perhitungan dari suatu algoritma interpolasi sangat tergantung pada
metode interpolasi yang digunakan. Dengan demikian metode interpolasi merupakan
sasaran disain, analisis, dan evaluasi suatu algoritma interpolasi, yang membutuhkan
pertimbangan antara sasaran ketelitian dan efisiensi.
Berdasarkan hal yang telah diuraikan diatas maka penulis berniat membuat
penelitian dengan judul Perbandingan Interpolasi Linear, Bilinear dan Nearst
Neighbor untuk Perbesaran Citra.
Yang menjadi rumusan masalah pada penelitian ini adalah bagaimana mendapatkan
hasil perbandingan perbesaran citra dengan menggunakan algoritma Interpolasi
Linear, Bilinear dan Nearst Neighbor.
Tujuan penelitian ini adalah untuk mendapatkan algoritma perbesaran citra yang
paling baik.
Manfaat penelitian ini adalah menghasilkan aplikasi perangkat lunak untuk melakukan
perbesaran citra.
BAB 1 : PENDAHULUAN
Pada bab ini merupakan bagian yang berisi mengenai latar belakang,
rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian,
metodologi penelitian, serta sistematika penulisan.
Secara umum, pengolahan citra digital menunjuk pada pemrosesan gambar 2D (dua
dimensi) menggunakan komputer. Ditinjau dari sudut pandang matematis, citra
merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang dwimatra
(Putra, 2010). Secara matematis fungsi intensitas cahaya pada bidang dwimatra
disimbolkan dengan f(x, y), yang dalam hal ini:
(x, y) : koordinat pada bidang dwimatra
f(x, y) : intensitas cahaya (brightness) pada titik (x, y)
Suatu citra dapat didefenisikan sebagai fungsi (x,y) berukuran M baris dan N
kolom, dengan x dan y adalah koordinat spasial, dan amplitudo f di titik koordinat
(x,y) dinamakan intensitas atau tingkat keabuan dari citra pada titik tersebut. Apabila
nilai x, y, dan nilai amplitudo f secara keseluruhan berhingga (finite) dan bernilai
diskrit maka citra tersebut adalah citra digital.
Citra digital tersusun atas sejumlah berhingga elemen, masing-masing
memiliki lokasi dan nilai/intensitas tertentu. Elemen-elemen ini disebut elemen
gambar, elemen citra, pels, dan juga piksel yang sering disebut adalah piksel (Ahmad,
2012).
Sebuah citra adalah kumpulan piksel-piksel yang disusun dalam larik dua-
dimensi. Indeks baris dan kolom (x,y) dari sebuah piksel dinyatakan dalam bilangan
bulat. Piksel (0,0) terletak pada sudut kiri atas pada citra, indeks x bergerak ke kanan
dan indeks y bergerak ke bawah. Konvensi ini dipakai merujuk pada cara penulisan
larik yang digunakan dalam pemrograman komputer (Basuki, 2005).
Hal yang berlawanan untuk arah vertikal berlaku pada kenyataan dan juga
pada sistem grafik dalam matematika yang sudah lebih dulu dikenal. Gambar 2.1
memperlihatkan perbedaan kedua sistem ini. Hubungan antara koordinat citra dan
indeks larik untuk citra yang bersangkutan dapat dilihat pada gambar 2.1 dibawah ini.
Pada contoh ini citra ditunjukkan dalam bentuk diagram berupa kumpulan segi-empat
dengan sisi-sisi yang sama. Ini disebut square tesselation, sebuah teknik yang umum
digunakan dalam menggambarkan bagaimana citra digital dibentuk.
(a) (b)
Gambar 2.1 Perbedaan letak titik origin pada koordinat grafik dan pada citra; (a)
koordinat grafik pada matematika, (b) koordinat pada citra (Putra, 2010)
a (0,0) m kolom
(x,y)
(x,y)
x
y
n baris
Gambar 2.2 Hubungan antara koordinat pada citra dan indeks larik pada komputer
untuk menyimpan data citra (Putra, 2010)
Indeks baris (x) dan indeks kolom (y) menyatakan suatu koordinat titik pada citra,
sedangkan f(x,y) merupakan intensitas (derajat keabuan) pada titik (x,y). Gambar 3
menunjukkan ilustrasi digitalisasi citra grayscale dengan M = 12 baris dan N = 12
kolom.
f(2,1) = 6
1 2 3 4 5 6 7 8 9 10 11 12
1 6 6 6 6 6 6 6 89 237 237 237 237
2 6 6 89 237 237 237 6 6 89 237 237 237
3 6 6 89 237 237 237 237 6 6 89 237 237
4 6 6 89 237 237 237 237 6 6 89 237 237
5 6 689 237 237 237 237 6 6 89 237 237
6 6 689 237 237 237 6 6 89 237 237 237
7 6 6 6 6 6 6 6 89 237 237 237 237
8 6 6 6 6 6 6 89 237 237 237 237 237
9 6 6 89 237 237 6 6 89 237 237 237 237
10 6 6 89 237 237 237 6 6 89 237 237 237
11 6 6 89 237 237 237 237 6 6 89 237 237
12 6 6 89 237 237 237 237 237 6 6 89 237
f(4,7) = 237
Pada citra berskala keabuan, nilai seperti 6 atau 237 dinamakan sebagai intensitas
(Murni, 2002).
5. Bentuk (Shape)
Shape adalah properti intrinsik dari objek tiga dimensi, dengan pengertian bahwa
shape merupakan properti intrinsik utama untuk sistem visual manusia. Manusia
lebih sering mengasosiasikan objek dengan bentuknya ketimbang elemen lainnya
(warna misalnya). Pada umumnya, citra yang dibentuk oleh mata merupakan citra
dwimatra (2 dimensi), sedangkan objek yang dilihat umumnya berbentuk trimatra
(3 dimensi).
6. Tekstur (texture)
Tekstur hubungan mutual antara nilai intensitas piksel-piksel yang bertetangga
yang berulang di suatu area yang luas daripada jarak hubungan tersebut.
Elemen yang terlibat dalam pemrosesan citra dapat dibagi menjadi empat komponen
(Munir, 2004):
a. Digitizer
b. Komputer digital
c. Piranti tampilan
d. Piranti penyimpanan
Media Penyimpanan
Piranti
Tampilan
Digitizer terdiri dari tiga komponen dasar: sensor citra yang bekerja sebagai
pengukur intensitas cahaya, perangkat penjelajah yang berfungsi merekam hasil
pengukuran intensitas pada seluruh bagian citra, dan pengubah analog-ke-digital yang
berfungsi melakukan penerokan dan kuantisasi. Komputer digital yang digunakan
pada sistem pemroses citra dapat bervariasi dari komputer mikro sampai komputer
besar yang mampu melakukan bermacam-macam fungsi pada citra digital resolusi
tinggi. Piranti tampilan peraga berfungsi mengkonversi matriks intensitas yang
merepresentasikan citra ke tampilan yang dapat diinterpretasi oleh mata manusia.
Contoh piranti tampilan adalah monitor peraga dan pencetak (printer).
Nilai suatu pixel memiliki nilai dalam rentang tertentu, mulai dari nilai minimum
sampai nilai maksimum. Jangkauan yang digunakan berbeda-beda tergantung dari
jenis warnanya. Namun secara umum jangkauannya adalah 0 – 255, citra dengan
penggambaran seperti ini digolongkan ke dalam citra integer. Berikut adalah jenis-
jenis citra berdasarkan nilai pikselnya (Sutoyo, 2009).
Citra biner merupakan citra digital yang hanya memiliki dua kemungkinan nilai piksel
yaitu hitam dan putih. Citra biner juga disebut citra B&W (black and white) atau citra
monokrom. Hanya dibutuhkan 1 bit untuk mewakili nilai setiap piksel dari citra biner.
Gradasi warna : Bit 0 = warna hitam Bit 1 = warna putih. Seperti diperlihatkan pada
gambar 2.6 dibawah ini.
Citra grayscale yaitu citra digital yang hanya memiliki satu nilai kanal pada setiap
pikselnya, dengan kata lain nilai bagian RED = GREEN = BLUE. Nilai tersebut
digunakan untuk menunjukkan tingkat intensitas. Warna yang dimiliki adalah warna
dari hitam, keabuan, dan putih. Tingkatan keabuan disini merupakan warna abu-abu
dengan berbagai tingkatan dari hitam hingga mendekati putih. Citra grayscale berikut
memiliki kedalaman warna 8 bit ( 28 = 256 kombinasi warna keabuan) (Gonzales,
2003). Banyaknya warna tergantung pada jumlah bit yang disediakan di memori untuk
menampung kebutuhan warna ini.
Semakin besar jumlah bit warna yang disediakan di memori, semakin halus
gradasi warna citra yang ditampilkan di monitor. Seperti diperlihatkan pada gambar
2.7 dibawah ini.
Citra berwarna, atau biasa dinamakan citra RGB, merupakan jenis citra yang
menyajikan warna dalam bentuk komponen R (merah), G (hijau), dan B (biru). Setiap
komponen warna menggunakan 8 bit (nilainya berkisar antara 0 sampai dengan 255).
Dengan demikian, kemungkinan warna yang bisa disajikan mencapai 255 x 255 x 255
atau 16.581.375 warna. Tabel 2.1 dibelakang menunjukkan contoh warna dan nilai
R,G, dan B.
Menghitung nilai RGB citra asli adalah sama dengan citra penyisip, dimana setiap
pikselnya mengandung 24-bit kandungan warna atau 8-bit untuk masing-masing
warna dasar (R, G, dan B), dengan kisaran nilai kandungan antara 0 (00000000)
sampai 255 (11111111) untuk tiap warna yang dapat ditulis sebagai berikut (Gonzales,
2003).
Red : RGB (255, 0, 0) ……….………….…………..……………....… (2.4)
Green : RGB (0, 255, 0) .…………………..………………….....……… (2.5)
Blue : RGB (0, 0, 255) …..……………….…………………....………. (2.6)
Dari nilai triplet RGB persamaan (2.4) sampai (2.6) di atas dapat dikonversikan ke
dalam nilai desimal seperti dibawah ini:
Ketika sebuah citra diperbesar dengan cara memproyeksikan semua piksel dari citra
asal ke citra hasil, maka akan ada piksel-piksel kosong yang terdapat pada citra hasil.
Hal ini dikarenakan jumlah piksel yang terdapat pada citra hasil jelas akan lebih
banyak dari jumlah piksel citra asal, sehingga akan terdapat piksel-piksel pada citra
hasil yang tidak diketahui nilainya. Proses pengisian piksel-piksel yang kosong
(piksel-piksel yang tidak diketahui nilainya) menjadi bagian yang tidak terpisahkan
dari proses perbesaran citra. Tanpa proses ini, citra hasil akan menjadi tidak
sempurna. Proses pengisian ini sering disebut proses resampling.
dimana :
Z’ adalah piksel citra hasil yang akan dicari nilainya
Z adalah titik perpotongan antara garis proyeksi Z’ ke bidang citra asal,
AX, Bx, Ay dan By adalah titik-titik referensi penentu nilai Z’
(x0, y0), (x0, y1), (x1, y0), (x1, y1) adalah titik-titik piksel citra asal di sekitar titik Z
dax adalah jarak antara titik Z ke Ax
dbx adalah jarak antara titik Z ke Bx
day adalah jarak antara titik Z ke Ay
dby adalah jarak antara titik Z ke By
Interpolasi disebut juga dengan istilah resampling adalah sebuah metode pencitraan
untuk meningkatkan atau mengurangi jumlah piksel dalam gambar digital (Zarcelonia,
2014). Beberapa kamera digital menggunakan interpolasi untuk menghasilkan gambar
yang lebih besar daripada sensor ditangkap atau untuk membuat zoom digital. Hampir
semua perangkat lunak editing gambar mendukung satu atau lebih metode interpolasi.
Bagaimana gambar yang diperbesar bisa halus tanpa meninggalkan kesan pecah
sangat tergantung pada kecanggihan algoritma interpolasi tersebut.
Interpolasi citra bekerja dalam dua arah, dan mencoba untuk mencapai
pendekatan yang terbaik dari sebuah piksel yang warna dan intensitas yang didasarkan
pada nilai-nilai di sekitar piksel. Tidak seperti fluktuasi gradien yang ideal, nilai-nilai
piksel dapat berubah lebih jauh dari satu lokasi ke lokasi berikutnya. Jadi semakin
banyak yang diketahui tentang informasi di sekitar pixel, semakin baik dalm proses
interpolasi. Oleh karena itu semakin diperbesar, semakin banyak informasi yang harus
diketahui.
foto (Christanto, 2006). Algoritma adaptif, meliputi banyak algoritma yang dimiliki
oleh software berlisensi seperti Qimage, PhotoZoomPro, GenuineFractals dan lain-
lain. Banyak dari versi yang berbeda menerapkan algoritma mereka (pada basis
piksel) ketika mereka mendeteksi keberadaan tepi – bertujuan untuk meminimalkan
kesan interpolasi di daerah yang tajam. Algoritma ini terutama dirancang untuk
memaksimalkan artefak secara detail pada foto yang diperbesar.
Interpolasi linier merupakan metode yang digunakan untuk mengetahui nilai dari
sesuatu yang berada didalam sebuah interval atau diantara dua buah titik yang segaris.
sedangkan ekstrapolasi merupakan suatu metode menentukan sesuatu yang berada
diluar sebuah intervar atau titik titik yang segaris.
Misalkan kita mempunyai m buah data x, dan tiap-tiap x memiliki pasangan y,
yang merupakan fungsi x, dengan perkataan lain y = f(x). Untuk suatu harga, dengan
terletak diantara dua nilai x yang ada pada himpunan data, misalnya:
xk < x < xk +1
Interpolasi linear untuk meramalkan nilai y = f(x) dapat dilakukan dengan
menganggap bahwa y1 dan y2 dihubungkan oleh suatu garis lurus, seperti diperlihatkan
pada gambar 2.10 dibawah ini.
Persamaan garis lurus yang melalui2 titik P1 (x1, y1) dan P2 (x2, y2)
𝑦 −𝑦
y = 𝑥 2−𝑥 1 𝑥 − 𝑥1 + 𝑦1
2 1
2.5−1.5
y= 2.1 − 1 + 1.5
3−1
y = 2.05
Titik terbaru adalah P3 = (x,y)= (2.1, 2.05)
Persamaan linear seperti diketahui, dapat diperoleh dari dua titik data. Dimana dua
data tersebut dihubungkan melalui suatu garis lurus (linear). Persamaan di atas
dimanfaatkan untuk memperkirakan suatu nilai data di antara dua titik data (Prasetyo,
2011). Memperkirakan nilai data baru di antara nilai-nilai data ini disebut interpolasi.
Gambar 2.12 Proses interpolasi pada dua titik data (Prasetyo, 2011)
Gambar 2.13 Proses interpolasi bilinear pada citra digital. (Christanto, 2006)
Keterangan:
= piksel hasil interpolasi
= piksel tetangga
X = piksel antara
Nilai pixel antara x dihitung terlebih dahulu dengan melakukan perhitungan numerik
pada pixel A(i,j) dan B(i,j+1), kemudian pixel antara y dihitung dengan melakukan
perhitungan numerik pada pixel C(i+1,j) dan D(i+1,j+1). Proses interpolasi bilinear
akan melakukan proses pada salah satu sisi dahulu (vertikal atau horisontal) kemudian
baru mengerjakan proses pada sisi yang lain. Untuk mengimplementasikan metode
interpolasi bilinear ini, berikut bagan alir yang menjelaskan proses peningkatan
resolusi citra digital dengan interpolasi bilinear.
Gambar 2.14 Nilai keabuan citra asal pada operasi geometri (Christanto, 2006)
Seperti contoh gambar 2.14 diatas, pada interpolasi bilinier, nilai keabuan dari
keempat titik yang saling bertetangga tadi memberi sumbangan terhadap nilai keabuan
hasil, dengan bobot masing-masing yang linier dengan jaraknya terhadap koordinat
yang dimaksud. Makin dekat titik tetangga tersebut, makin besar bobotnya, dan
sebaliknya makin jauh akan makin kecil bobotnya.
Keabuan output dihitung dengan penjumlahan berbobot dari keabuan input
titik-titik yang ikut menyumbang tersebut.
K0 w * Ki
dari contoh diatas, bobot ke arah horisontal untuk koordinat x = 3 dan x = 4 masing-
masing adalah:
wx (3) 0.2 dan wx (4) 0.8
Perhatikan bahwa koordinat x = 3.8 lebih dekat ke x = 4 dibandingkan ke x =
3. sementara bobot ke arah vertikal untuk koordinat y = 9 dan y = 10 masing-masing
adalah:
w y (9) 0.6 dan wy (10) 0.4
Perhatikan pula bahwa jumlah bobot untuk tiap arah adalah 1. Kombinasi antara bobot
horisontal dan vertikal memberikan bobot untuk tiap titik:
w(3,9) wx (3) * w y (9) 0.2 * 0.6 0.12
w(3,10) wx (3) * w y (10) 0.2 * 0.4 0.08
w(4,9) wx (4) * w y (9) 0.8 * 0.6 0.48
w(4,10) wx (4) * w y (10) 0.8 * 0.4 0.32
Terlihat bahwa titik yang paling dekat dengan koordinat titik asal hasil
transformasi balik memiliki bobot yang paling besar (0,48), sedangkan titik terjauh
memiliki bobot yang paling kecil (0,08). Total bobot untuk keempat titik tersebut
adalah 1. Setelah semua bobot pada keempat titik bertetangga tersebut diperoleh, nilai
keabuan hasil dihitung sesuai dengan persamaan.
K 0 w * Ki w(3,9) * K i (3,9) w(3,10) * K i (3,10)
w(4,9) * K i (4,9) w(4,10) * K i (4,10)
0.12 *100 0.08 *160 0.48 *120 0.32 * 200
146.4 146
Karena nilai keabuan merupakan bilangan bulat, apabila hasil penjumlahan
berbobot tersebut berupa bilangan pecah, maka harus dilakukan pembulatan ke
bilangan terdekat.
Gambar 2.15 Nilai keabuan citra asal pada operasi geometri (Christanto, 2006)
2.3.6 Perhitungan Mean Square Error (MSE) dan Peak Signal to Noise Ratio
(PSNR)
MSE didalam statistik merupakan kuadrat rata-rata dari error yaitu perbedaan
antara citra asli dengan citra hasil pengolahan. Semakin kecil nilai MSE maka citra
asli dengan citra hasil pengolahan mempunyai kesamaan. MSE digunakan untuk
mengukur rata-rata kesalahan yang berasal dari kuantitas yang akan diestimasi
(Kusumanto, 2011).
1 𝑛
MSE = 𝑁 𝑖=1(𝑆 − 𝑆𝑒 )2
Nmax = 110
110
PSNR = 10 x log ( 67.5
)
110
PSNR = 10 x log ( )
8.21
PSNR = 10 x log(13.39)
PSNR = 10 x 1.12
PSNR = 11,2
Arsitektur umum perbesaran citra pada penelitian ini dapat dilihat seperti pada
Gambar 3.1.
Resampling Interpolasi
Hitung MSE & PSNR Linear, Bilinear dan
Nearst Neighbor
Kesimpulan
Keterangan:
1. Input file citra adalah pemilihan file citra oleh user yang berformat JPG
maupun BMP.
2. Melakukan proyeksi citra asli ke citra hasil.
3. Baca nilai piksel citra adalah pembacaan nilai intensitas piksel citra.
4. Melakukan resampling menggunakan algoritma interpolasi Linear, Bilinear
dan Nearst Neighbor.
5. Membandingkan hasil resampling dengan ke tiga algoritma diatas.
6. Hitung nilai MSE dan PSNR.
7. Buat kesimpulan
Pada citra input pada umumnya adalah citra warna 24-bit (true color) nilai pikselnya
terdiri dari 3 byte yaitu nilai Red Green dan Blue (RGB) terdapat dalam data bitmap
berbentuk biner. Untuk membaca nilai RGB-nya, dilakukan dengan membaca data
bitmap yang panjangnya 3 byte, masing-masing byte menyatakan komponen R, G, dan
B. Setiap byte data merepresentasikan 8 bit jadi pada citra warna ada 3 byte x 8 bit =
24 bit kandungan warna. Citra warna 24 bit dapat dilihat seperti pada Gambar 3.2.
Pada citra asli pada Gambar 3.2 di atas, tiap pixel-nya mengandung 24-bit
kandungan warna atau 8-bit untuk masing-masing warna dasar (R, G, dan B), dengan
selang nilai warna antara 0 (00000000) sampai 255 (11111111) untuk tiap warna.
Sebagai contoh data bitmap citra warna di atas adalah seperti pada Gambar 3.3.
Pada contoh citra Gambar 3.3 di atas, data pertama adalah header yang berisi
informasi nama file, jenis format dan dimensi citra. Nilai piksel (0,0) adalah
110000111010010011110100. Nilai RGB dihitung dengan persamaan 2.2, 2.3 dan 2.4
sebagai berikut:
Nilai R = 110000111010010011110100 mod 100000000 = 1111 0100 = 244
Nilai G = (110000111010010011110100 and 1111111100000000)/100000000
= 1010 0100= 164 (desimal)
Nilai B= (110000111010010011110100 and
111111110000000000000000) / 10000000000000000
= 1100 0011 = 195 (desimal)
Sehingga diperoleh nilai piksel (0,0) 11110000 11110000 11111111:
R= 11110001 = 244 (desimal)
G= 10110100 = 164 (desimal)
B= 10010000 = 195 (desimal)
Dalam analisa ini jumlah piksel yang dihitung sebanyak 25 piksel saja dan
untuk mendapatkan nilai RGB piksel selanjutnya dilakukan sama seperti cara di atas
dan selanjutnya nilai RGB semua nilai piksel pada citra dimasukkan ke dalam matriks
seperti pada Tabel 3.1.
Tabel 3.1 Matriks Nilai RGB Citra Warna
R G B R G B R G B R G B R G B
244,164,195 200,162,12 210,180,200 200,100,28 20,100,110
120,180,10 271,100,200 210,177,220 200,100,200 114,105,100
150,180,200 120,180,200 77,150,200 240,200,200 100,100,100
110,190,100 200,180,200 200,100,200 200,170,200 80,150,200
144,160,100 140,170,245 192,100,200 200,200,200 10,130,120
Pada penelitian ini dilakukan diperbesar citra dengan cara memproyeksikan semua
piksel dari citra asli ke citra hasil, maka akan ada piksel-piksel kosong yang terdapat
pada citra hasil. Hal ini dikarenakan jumlah piksel yang terdapat pada citra hasil jelas
akan lebih banyak dari jumlah piksel citra asli, sehingga akan terdapat piksel-piksel
pada citra hasil yang tidak diketahui nilainya. Proses pengisian piksel-piksel yang
kosong yang merupakan piksel-piksel yang tidak diketahui nilainya menjadi bagian
dari proses perbesaran citra yang disebut proses resampling. Proses proyeksi piksel
citra asli ke citra hasil ini dapat dijelaskan sebagai berikut:
Z’
Z day’
dby’
’ ’
dax dbx
Start
X=0
Y=0
Tidak
X mod skala=0
Y mod Skala =0
Ya
Y=Y+1
Tidak
Ya
X=X+1
Tidak
Ya
Stop
Start
X=0
Y=0
Tidak
X mod skala<> 0
Y mod Skala <> 0
Ya
Y=Y+1
A B C
A B C
Tidak
Ya
X=X+1
Tidak
Ya
Stop
Untuk mencari nilai pixel f(0,0) yang bernilai 0 maka digunakan persamaan:
𝑓(𝑦1)−𝑓(𝑦0)
f(x) = f(x0) + 𝑥1−𝑥0
(x-x0) + y0
dimana:
f(x) = intensitas warna RGB titik yang dicari
f(x0) = intensitas warna RGB titik sebelah kiri
f(x1) = intensitas warna RGB sebelah kanan
x0 = posisi titik sebalah kiri
x1 = posisi titik sebelah kanan
x = titik yang dicari
200−0
f(0,0) = 0 + (0-0)
100−0
f(0,0) = 0
nilai pixel f(0,1)
0−144
f(0,0) = 0 + 130−100 (0-100)
Proses interpolasi bilinear akan melakukan proses pada salah satu sisi dahulu (vertikal
atau horisontal) kemudian baru mengerjakan proses pada sisi yang lain. Harga
interpolasi yang diberikan pada suatu titik diperhitungkan dengan memperhatikan
distribusi 4 nilai pixel tetangga.
Pada gambar 3.9 mengilustrasikan nilai keabuan sebuah citra, misalkan dari
transformasi balik sebuah titik hasil diperoleh koordinat titik asal (3.8, 9.4), maka titik
terdekatnya dipilih dari 4 buah titik yang mungkin yaitu: (3,9), (3,10), (4,9) atau
(4,10). Dengan fungsi pembulatan maka dapat ditentukan koordinat tetangga
terdekatnya adalah (4,9), sehingga nilai keabuan pada titik ini yang dipakai,
K 0 ( x' , y' ) K i (4,9) 120 .
Seperti contoh Gambar 3.9 diatas, pada interpolasi bilinier, nilai keabuan dari
keempat titik yang saling bertetangga tadi memberi sumbangan terhadap nilai keabuan
hasil, dengan bobot masing-masing yang linier dengan jaraknya terhadap koordinat
yang dimaksud. Makin dekat titik tetangga tersebut, makin besar bobotnya, dan
sebaliknya makin jauh akan makin kecil bobotnya.
Keabuan output dihitung dengan penjumlahan berbobot dari keabuan input
titik-titik yang ikut menyumbang tersebut.
K0 w * Ki
dari contoh diatas, bobot ke arah horisontal untuk koordinat x = 3 dan x = 4 masing-
masing adalah:
wx (3) 0.2 dan wx (4) 0.8
Perhatikan bahwa koordinat x = 3.8 lebih dekat ke x = 4 dibandingkan ke x = 3.
sementara bobot ke arah vertikal untuk koordinat y = 9 dan y = 10 masing-masing
adalah:
w y (9) 0.6 dan wy (10) 0.4
Perhatikan pula bahwa jumlah bobot untuk tiap arah adalah 1. Kombinasi antara bobot
horisontal dan vertikal memberikan bobot untuk tiap titik:
w(3,9) wx (3) * w y (9) 0.2 * 0.6 0.12
w(3,10) wx (3) * w y (10) 0.2 * 0.4 0.08
w(4,9) wx (4) * w y (9) 0.8 * 0.6 0.48
w(4,10) wx (4) * w y (10) 0.8 * 0.4 0.32
Terlihat bahwa titik yang paling dekat dengan koordinat titik asal hasil
transformasi balik memiliki bobot yang paling besar (0,48), sedangkan titik terjauh
memiliki bobot yang paling kecil (0,08). Total bobot untuk keempat titik tersebut
adalah 1.
Setelah semua bobot pada keempat titik bertetangga tersebut diperoleh, nilai keabuan
hasil dihitung sesuai dengan persamaan.
K 0 w * Ki w(3,9) * K i (3,9) w(3,10) * K i (3,10)
w(4,9) * K i (4,9) w(4,10) * K i (4,10)
0.12 *100 0.08 *160 0.48 *120 0.32 * 200
146.4 146
Karena nilai keabuan merupakan bilangan bulat, apabila hasil penjumlahan
berbobot tersebut berupa bilangan pecah, maka harus dilakukan pembulatan ke
bilangan terdekat.
Pada interpolasi nearest neighbor (tetangga terdekat), nilai keabuan titik hasil diambil
dari nilai keabuan pada titik asal yang paling dekat dengan koordinat hasil perhitungan
dari transformasi spasial. Untuk citra 2 dimensi, tetangga terdekat dipilih di antara 4
titik asal yang saling berhubungan satu sama lain.
Pada interpolasi nearest neighbour (tetangga terdekat), nilai keabuan titik hasil
diambil dari nilai keabuan pada titik asal yang paling dekat dengan koordinat hasil
perhitungan dari transformasi spasial. Untuk citra 2 dimensi, tetangga terdekat dipilih
di antara 4 titik asal yang saling berhubungan satu sama lain.
Pada Gambar 3.10 mengilustrasikan nilai keabuan sebuah citra, misalkan dari
transformasi balik sebuah titik hasil diperoleh koordinat titik asal (3.8, 9.4), maka titik
terdekatnya dipilih dari 4 buah titik yang mungkin yaitu: (3,9), (3,10), (4,9) atau
(4,10). Dengan fungsi pembulatan maka dapat ditentukan koordinat tetangga
terdekatnya adalah (4,9), sehingga nilai keabuan pada titik ini yang dipakai,
K 0 ( x' , y' ) K i (4,9) 120 .
3.2 Perancangan
Dalam merancang perangkat lunak yang berorientasi ramah bagi pengguna (user
friendy), maka diperlukan sebuah tampilan antar muka (user interface) yang mudah
digunakan serta informatif.
Adapun rancangan yang dibangun adalah:
a. Rancangan Flowchart
b. Rancangan Antarmuka
a. Flowchart Linier
Flowchart Umum Perbesaran citra dengan algoritma Interpolasi Linear dapat dilihat
seperti pada Gambar 3.11.
Mulai
Hitung nilai
f(x)
Xi+1 X0 = f(Xi+1)
Xi+1 X0 f(Xi+1) – f(Xi)
Ya
Hasil
stop
b. Flowchart Bilinier
Flowchart Umum Perbesaran citra dengan algoritma Interpolasi Bilinear dapat dilihat
seperti pada Gambar 3.12.
Start
Tidak
Jumlah Perbesaran Sudah
Terpenuhi?
Ya
Stop
GAMBAR LATAR
Keterangan :
Pada halaman menu utama yang terdapat gambar latar dan terdapat tampilan sub menu
pilihan aplikasi yang dapat diakses setelah pengguna berhasil melakukan otoritas
pengguna sub Menu pada menu Utama terdiri dari menu ResizeImage, Help, About
serta tombol Close, yang berfungsi sebagai berikut:
1. Sub Menu ResizeImage berfungsi untuk melakukan perbesaran citra.
2. Menu Help berfungsi untuk menampilkan halaman bantuan.
3. Menu About berfungsi untuk menampilkan halaman keterangan.
4. Menu Exit berfungsi untuk keluar dari halaman menu utama.
1 2 3 4
Nama File xxx 5 Nama File xxx 8 Nama File xxx 12 Nama File xxx 16
xx xx xx Dimensi xx
Size xxx 6 Dimensi
xxx 9 Dimensi
xxx 13 xxx 17
x x x x
Dimensi xxx Size xxx Size xxx Size xxx
7 10 14 18
x x x x
MSE/PSNR MSE/PSNR MSE/PSNR xxx
xxx xxx 15 19
11
x x x
20 21 22 23 24 25
2. Picture Box : berfungsi untuk menampilkan citra hasil resize dengan algoritma
Interpolasi Linear.
3. Picture Box : berfungsi untuk menampilkan citra hasil resize dengan algoritma
Interpolasi Bilinear.
4. Picture Box : berfungsi untuk menampilkan citra hasil resize dengan algoritma
Interpolasi Nearst Neighbor.
5. TextBox : berfungsi untuk menampilkan nama file citra asli.
6. TextBox : berfungsi untuk menampilkan ukuran file citra asli.
7. TextBox : berfungsi untuk menampilkan dimenasi file citra asli.
8. TextBox : berfungsi untuk menampilkan nama file citra hasil Interpolasi Linear.
9. TextBox : berfungsi untuk menampilkan dimensi citra hasil Interpolasi Linear.
10. TextBox : berfungsi untuk menampilkan size citra hasil Interpolasi Linear.
11. TextBox : berfungsi untuk menampilkan MSE dan PSNR citra hasil Interpolasi
Linear.
12. TextBox : berfungsi untuk menampilkan nama file citra hasil Interpolasi
Bilinear.
13. TextBox : berfungsi untuk menampilkan dimensi citra hasil Interpolasi Bilinear.
14. TextBox : berfungsi untuk menampilkan size citra hasil Interpolasi Bilinear.
15. TextBox : berfungsi untuk menampilkan MSE dan PSNR citra hasil Interpolasi
Bilinear.
16. TextBox : berfungsi untuk menampilkan nama file citra hasil Interpolasi Nearst
Neighbor.
17. TextBox : berfungsi untuk menampilkan dimensi citra hasil Interpolasi Nearst
Neighbor.
18. TextBox : berfungsi untuk menampilkan size citra hasil Interpolasi Nearst
Neighbor.
19. TextBox : berfungsi untuk menampilkan MSE dan PSNR citra hasil Interpolasi
Nearst Neighbor.
20. Button : berfungsi untuk melakukan memanggil file citra asli.
21. Button : berfungsi untuk melakukan perbesaran citra dengan algoritma
Interpolasi Linear.
22. Button : berfungsi untuk melakukan perbesaran citra dengan algoritma
Interpolasi Bilinear.
Rancangan Help adalah rancangan sederhana yang terdiri dari objek Label-label serta
gambar. Tampilan ini dirancang untuk menampilkan informasi tentang persiapan awal
mengenai perangkat keras yang digunakan serta tata cara pengoperasian aplikasi yang
dijelaskan tahap demi tahap. Untuk lebih jelasnya rancangan Help dapat dilihat pada
Gambar 3.15.
Rancangan About adalah tampilan sederhana yang hanya memiliki satu tombol yaitu
tombol Quit. Rancangan ini berfungsi untuk menampilkan informasi tentang profil
penulis. Profil penulis meliputi biodata singkat penulis serta data-data akademik
berupa nama mahasiswa, Nomor Induk Mahasiswa, Nama Perguruan Tinggi tempat
mahasiswa, serta gambar latar belakang. Untuk lebih jelasnya rancangan About dapat
dilihat pada Gambar 3.16.
Nama Penulis
Foto Penulis NIM Logo
Kampus
Pengujian Viewer Citra berfungsi untuk melakukan pengujian secara kasat mata
antara citra asli dengan citra hasil interpolasi Linear, Bilinear dan Nearst Neighbor.
Pengujian Viewer Citra dapat dilihat seperti pada Gambar 3.17.
Citra Asli
Citra Hasil Interpolasi Linear
Citra Asli
Citra Hasil Interpolasi Bilinear
Citra Asli
Citra Hasil Interpolasi Nearst Neighbor
Pengujian Nilai MSE dan PSNR Citra berfungsi untuk melakukan pengujian dengan
menghitung nilai error antara citra asli dengan citra hasil interpolasi Linear, Bilinear
dan Nearst Neighbor. Rancangan Hasil Pengujian Perbesaran citra menggunakan
algoritma Interpolasi Linear, Bilinear dan Nearst Neighbor dapat dilihat pada Tabel
3.2.
Tabel 3.2 Rancangan Hasil Pengujian Perbesaran Citra Format mbp dan jpg
4.1 Implementasi
Tampilan Menu Utama berisi gambar latar serta tampilan menu. Tampilan Menu
terdiri dari Resize Image, Help, About serta Close yang dapat dilihat seperti pada
Gambar 4.1.
Pada Gambar 4.2 diatas terlihat pemasukan citra bola yang diperbesar dengan
algoritma Interpolasi Linear, Bilinear dan Nearst Neighbor. Algoritma Linear
menghasilkan MSE untuk = 86337.6 dan PSNR= -25.29, Algoritma Bilinear
menghasilkan MSE untuk = 81112.41 dan PSNR= -25.02, Algoritma Nearst Neighbor
menghasilkan MSE untuk = 95885.26 dan PSNR= -25.75.
Resise
Algoritma Dimensi
Interpolasi 32 x 32
Linear Piksel.
Size
3KB
Resise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 32 x 32
Linear Piksel.
Size
3KB
Resise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 16 x 16
Linear Piksel.
Size 1
KB
Resise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 16 x 16
Linear Piksel.
Size 1
KB
Resise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 16 x 16
Linear Piksel.
Size 1
KB
Resise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 16 x 16
Linear Piksel.
Size 1
KB
Resise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 16 x 16
Linear Piksel.
Size 1
KB
esise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 16 x 16
Linear Piksel.
Size 1
KB
esise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 16 x 16
Linear Piksel.
Size 1
KB
Resise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 16 x 16
Linear Piksel.
Size 1
KB
esise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
Resise
Algoritma Dimensi
Interpolasi 16 x 16
Linear Piksel.
Size 1
KB
Resise
Algoritma
Interpolasi
Bilinear
Resise
Algoritma
Interpolasi
Nearst
Neighbor
MSE = (1/1024)*8.8409
= 0.00097*8.8409
MSE = 86337.6
= 10*log10 (0.002953)
PSNR = -25.29
b. Bilinier
MSE = (1/1024)*8.30591
= 0.00097*8.30591
MSE = 81112,41
= 10*log10 (0.00314)
PSNR = -25.02
c. Nearst Neighbor
MSE = (1/1024)*9,81865
= 0.00097*9,81865
MSE = 95885,26
= 10*log10 (0.00265)
PSNR = -25.75
MSE = (1/1024)*8.8409
= 0.00097*8.8409
MSE = 86337.6
= 10*log10 (0.00295)
PSNR = -25.29
b. Billinier
MSE = (1/1024)*8.30591
= 0.00097*8.30591
MSE = 8.1112.41
= 10*log10 (0.00314)
PSNR = -25.02
c. Nearst Neighbor
MSE = (1/1024)*9.818
= 0.00097*9.818
MSE = 95885.26
= 10*log10 (0.00265)
PSNR = -25.75
Hasil pengujiann perbesaran dengan format Bmp dapat dilihat pada Tabel 4.12.
45,000.00
40,000.00
35,000.00
30,000.00
25,000.00
MSE
20,000.00
PSNR
15,000.00
10,000.00
5,000.00
0.00
-5,000.00 Linear Bilinear NN
Gambar 4.5 Tampilan Grafik Nilai MSE dan PSNR Rata-rata Citra BMP
1. Hasil pengujiann perbesaran dengan format Jpg dapat dilihat pada Tabel 4.13.
45,000.00
40,000.00
35,000.00
30,000.00
25,000.00
MSE
20,000.00
PSNR
15,000.00
10,000.00
5,000.00
0.00
-5,000.00 Linear Bilinear NN
Gambar 4.6 Tampilan Grafik Nilai MSE dan PSNR Rata-rata citra JPG
Misalkan sebuah gambar dengan pixel 3 x 3 dan dilakukan pembesaran 2 kali maka
proses dari metode interpolasi linier adalah sebagai berikut:
New height = tinggi pixel yang dicari
New width = lebar pixel yang dicari
Old height = tinggi pixel sebelumnya
Old width = lebar pixel sebelumnya
Scale = pembesaran yang dilakukan
New height = Old height * Scale
=3*2
=6
New width = Old width * Scale
=3*2
=6
Maka matriknya:
Untuk mencari nilai pixel f(0,0) yang bernilai 0 maka digunakan persamaan:
𝑓(𝑦1)−𝑓(𝑦0)
f(x) = f(x0) + 𝑥1−𝑥0
(x-x0) + y0
dimana:
f(x) = intensitas warna RGB titik yang dicari
f(x0) = intensitas warna RGB titik sebelah kiri
f(x1) = intensitas warna RGB sebelah kanan
x0 = posisi titik sebalah kiri
x1 = posisi titik sebelah kanan
x = titik yang dicari
200−0
f(0,0) = 0 + (0-0)
100−0
f(0,0) = 0
nilai pixel f(0,1)
0−144
f(0,0) = 0 + 130−100 (0-100)
5.1 Kesimpulan
5.2 Saran
Setiap penelitian tentu tidak lepas dari kekurangan dan terus berkembang mengikuti
perkembangan teknologi, oleh karena itu penulis memberikan saran untuk penelitian
selanjutnya.
DAFTAR PUSTAKA
Christanto, R., Sanubari, J., & Timotius, I. K. 2006. Peningkatan Resolusi Citra
Digital dengan Interpolasi Bilinear. Jurnal Fakultas Teknik – UKSW.
Putra, D., 2010. Pengolahan Citra Citra Digital. Yogyakarta. Penerbit: ANDI.
Sutoyo et al. 2009. Teori Pengolahan citra digital. Yogyakarta. Penerbit ANDI.
Imports System.IO
Imports System.Drawing
Imports System.Drawing.Imaging
Public Class frmResizeImg1
Inherits System.Windows.Forms.Form
Dim ItemList1 As New ArrayList()
Dim ItemList2 As New ArrayList()
Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
Dim ItemList3 As New ArrayList()
Friend WithEvents lblDimensi1 As System.Windows.Forms.Label
Friend WithEvents Label11 As System.Windows.Forms.Label
Friend WithEvents lblDimensi2 As System.Windows.Forms.Label
Friend WithEvents Label13 As System.Windows.Forms.Label
Friend WithEvents lblDimensi3 As System.Windows.Forms.Label
Friend WithEvents Label17 As System.Windows.Forms.Label
Friend WithEvents SaveFileDialog1 As System.Windows.Forms.OpenFileDialog
Friend WithEvents SaveD As System.Windows.Forms.SaveFileDialog
Friend WithEvents lblFile1 As System.Windows.Forms.Label
Friend WithEvents Label19 As System.Windows.Forms.Label
Friend WithEvents lblFile2 As System.Windows.Forms.Label
Friend WithEvents Label20 As System.Windows.Forms.Label
Friend WithEvents lblFile3 As System.Windows.Forms.Label
Friend WithEvents Label21 As System.Windows.Forms.Label
Friend WithEvents lblSize1 As System.Windows.Forms.Label
Friend WithEvents Label22 As System.Windows.Forms.Label
Friend WithEvents lblSize2 As System.Windows.Forms.Label
Friend WithEvents Label23 As System.Windows.Forms.Label
Friend WithEvents lblSize3 As System.Windows.Forms.Label
Friend WithEvents Label25 As System.Windows.Forms.Label
Friend WithEvents Label18 As System.Windows.Forms.Label
Friend WithEvents Label24 As System.Windows.Forms.Label
Friend WithEvents Label26 As System.Windows.Forms.Label
Friend WithEvents Label27 As System.Windows.Forms.Label
Friend WithEvents Label7 As System.Windows.Forms.Label
Dim Dimensi As Integer
#Region " Windows Form Designer generated code "
'picNearestNeighbor
'
Me.picNearestNeighbor.BorderStyle =
System.Windows.Forms.BorderStyle.FixedSingle
Me.picNearestNeighbor.Location = New System.Drawing.Point(1002, 26)
Me.picNearestNeighbor.Name = "picNearestNeighbor"
Me.picNearestNeighbor.Size = New System.Drawing.Size(300, 250)
Me.picNearestNeighbor.SizeMode =
System.Windows.Forms.PictureBoxSizeMode.AutoSize
Me.picNearestNeighbor.TabIndex = 8
Me.picNearestNeighbor.TabStop = False
'
'btnLoad
'
Me.btnLoad.Location = New System.Drawing.Point(22, 27)
Me.btnLoad.Name = "btnLoad"
Me.btnLoad.Size = New System.Drawing.Size(84, 29)
Me.btnLoad.TabIndex = 9
Me.btnLoad.Text = "Load"
Me.btnLoad.UseVisualStyleBackColor = True
'
'GroupBox1
'
Me.GroupBox1.Controls.Add(Me.btnClose)
Me.GroupBox1.Controls.Add(Me.btnClear)
Me.GroupBox1.Controls.Add(Me.btnLoad)
Me.GroupBox1.Controls.Add(Me.btnProses3)
Me.GroupBox1.Controls.Add(Me.btnProses1)
Me.GroupBox1.Controls.Add(Me.btnProses2)
Me.GroupBox1.Location = New System.Drawing.Point(13, 406)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Size = New System.Drawing.Size(571, 65)
Me.GroupBox1.TabIndex = 10
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "Tombol"
'
'btnClose
'
Me.btnClose.Location = New System.Drawing.Point(485, 27)
Me.btnClose.Name = "btnClose"
Me.btnClose.Size = New System.Drawing.Size(80, 29)
Me.btnClose.TabIndex = 11
Me.btnClose.Text = "Close"
Me.btnClose.UseVisualStyleBackColor = True
'
'btnClear
'
Me.btnClear.Location = New System.Drawing.Point(394, 27)
Me.btnClear.Name = "btnClear"
Me.btnClear.Size = New System.Drawing.Size(80, 29)
Me.btnClear.TabIndex = 10
Me.btnClear.Text = "Clear"
Me.btnClear.UseVisualStyleBackColor = True
'
'Label3
'
Me.Label3.Location = New System.Drawing.Point(999, 6)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(171, 16)
Me.Label3.TabIndex = 11
Me.Label3.Text = "Citra Hasil Interpolasi Nearest Neighbor"
'
'OpenFileDialog1
'
Me.OpenFileDialog1.FileName = "OpenFileDialog1"
'
'lblDimensi
'
Me.lblDimensi.BorderStyle =
System.Windows.Forms.BorderStyle.FixedSingle
Me.lblDimensi.Location = New System.Drawing.Point(69, 362)
Me.lblDimensi.Name = "lblDimensi"
Me.lblDimensi.Size = New System.Drawing.Size(243, 18)
Me.lblDimensi.TabIndex = 136
'
'Label5
'
Me.Label5.Location = New System.Drawing.Point(10, 363)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(53, 18)
Me.Label5.TabIndex = 135
Me.Label5.Text = "Dimensi"
'
'lblFile
'
Me.lblFile.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblFile.Location = New System.Drawing.Point(69, 311)
Me.lblFile.Name = "lblFile"
Me.lblFile.Size = New System.Drawing.Size(243, 18)
Me.lblFile.TabIndex = 134
'
'lblSize
'
Me.lblSize.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblSize.Location = New System.Drawing.Point(69, 340)
Me.lblSize.Name = "lblSize"
Me.lblSize.Size = New System.Drawing.Size(67, 18)
Me.lblSize.TabIndex = 133
'
'Label4
'
Me.Label4.Location = New System.Drawing.Point(9, 341)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(51, 18)
Me.Label4.TabIndex = 132
Me.Label4.Text = "Size"
'
'Label6
'
Me.Label6.AutoSize = True
Me.Label6.Location = New System.Drawing.Point(10, 315)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(54, 13)
Me.Label6.TabIndex = 131
Me.Label6.Text = "Nama File"
'
'pbLinear
'
Me.pbLinear.Location = New System.Drawing.Point(359, 281)
Me.pbLinear.Name = "pbLinear"
Me.pbLinear.Size = New System.Drawing.Size(298, 19)
Me.pbLinear.TabIndex = 137
'
'pbBilinear
'
Me.pbBilinear.Location = New System.Drawing.Point(685, 282)
Me.pbBilinear.Name = "pbBilinear"
Me.pbBilinear.Size = New System.Drawing.Size(299, 19)
Me.pbBilinear.TabIndex = 138
'
'pbNN
'
Me.pbNN.Location = New System.Drawing.Point(1002, 282)
Me.pbNN.Name = "pbNN"
Me.pbNN.Size = New System.Drawing.Size(300, 19)
Me.pbNN.TabIndex = 139
'
'lblMSE1
'
Me.lblMSE1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblMSE1.Location = New System.Drawing.Point(417, 386)
Me.lblMSE1.Name = "lblMSE1"
Me.lblMSE1.Size = New System.Drawing.Size(67, 18)
Me.lblMSE1.TabIndex = 141
'
'Label8
'
Me.Label8.Location = New System.Drawing.Point(357, 386)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(50, 18)
Me.Label8.TabIndex = 140
Me.Label8.Text = "MSE"
'
'lblPSNR1
'
Me.lblPSNR1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblPSNR1.Location = New System.Drawing.Point(558, 386)
Me.lblPSNR1.Name = "lblPSNR1"
Me.lblPSNR1.Size = New System.Drawing.Size(67, 18)
Me.lblPSNR1.TabIndex = 143
'
'Label9
'
Me.Label9.Location = New System.Drawing.Point(498, 387)
Me.Label9.Name = "Label9"
Me.Label9.Size = New System.Drawing.Size(54, 18)
Me.Label9.TabIndex = 142
Me.Label9.Text = "PSNR"
'
'lblPSNR2
'
Me.lblPSNR2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblPSNR2.Location = New System.Drawing.Point(880, 388)
Me.lblPSNR2.Name = "lblPSNR2"
Me.lblPSNR2.Size = New System.Drawing.Size(67, 18)
Me.lblPSNR2.TabIndex = 147
'
'Label10
'
Me.Label10.Location = New System.Drawing.Point(820, 388)
Me.Label10.Name = "Label10"
Me.Label10.Size = New System.Drawing.Size(54, 18)
Me.Label10.TabIndex = 146
Me.Label10.Text = "PSNR"
'
'lblMSE2
'
Me.lblMSE2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblMSE2.Location = New System.Drawing.Point(741, 388)
Me.lblMSE2.Name = "lblMSE2"
Me.lblMSE2.Size = New System.Drawing.Size(67, 18)
Me.lblMSE2.TabIndex = 145
'
'Label12
'
Me.Label12.Location = New System.Drawing.Point(681, 388)
Me.Label12.Name = "Label12"
Me.Label12.Size = New System.Drawing.Size(51, 18)
Me.Label12.TabIndex = 144
Me.Label12.Text = "MSE"
'
'lblPSNR3
'
Me.lblPSNR3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblPSNR3.Location = New System.Drawing.Point(1192, 386)
Me.lblPSNR3.Name = "lblPSNR3"
Me.lblPSNR3.Size = New System.Drawing.Size(67, 18)
Me.lblPSNR3.TabIndex = 151
'
'Label14
'
Me.Label14.Location = New System.Drawing.Point(1132, 386)
Me.Label14.Name = "Label14"
Me.Label14.Size = New System.Drawing.Size(54, 18)
Me.Label14.TabIndex = 150
Me.Label14.Text = "PSNR"
'
'lblMSE3
'
Me.lblMSE3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblMSE3.Location = New System.Drawing.Point(1059, 388)
Me.lblMSE3.Name = "lblMSE3"
Me.lblMSE3.Size = New System.Drawing.Size(67, 18)
Me.lblMSE3.TabIndex = 149
'
'Label16
'
Me.Label16.Location = New System.Drawing.Point(1000, 388)
Me.Label16.Name = "Label16"
Me.Label16.Size = New System.Drawing.Size(50, 18)
Me.Label16.TabIndex = 148
Me.Label16.Text = "MSE"
'
'ProgressBar1
'
Me.ProgressBar1.Location = New System.Drawing.Point(12, 282)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(300, 19)
Me.ProgressBar1.TabIndex = 152
'
'lblDimensi1
'
Me.lblDimensi1.BorderStyle =
System.Windows.Forms.BorderStyle.FixedSingle
Me.lblFile1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblFile1.Location = New System.Drawing.Point(414, 312)
Me.lblFile1.Name = "lblFile1"
Me.lblFile1.Size = New System.Drawing.Size(243, 18)
Me.lblFile1.TabIndex = 160
'
'Label19
'
Me.Label19.AutoSize = True
Me.Label19.Location = New System.Drawing.Point(354, 312)
Me.Label19.Name = "Label19"
Me.Label19.Size = New System.Drawing.Size(54, 13)
Me.Label19.TabIndex = 159
Me.Label19.Text = "Nama File"
'
'lblFile2
'
Me.lblFile2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblFile2.Location = New System.Drawing.Point(741, 313)
Me.lblFile2.Name = "lblFile2"
Me.lblFile2.Size = New System.Drawing.Size(243, 18)
Me.lblFile2.TabIndex = 162
'
'Label20
'
Me.Label20.AutoSize = True
Me.Label20.Location = New System.Drawing.Point(681, 313)
Me.Label20.Name = "Label20"
Me.Label20.Size = New System.Drawing.Size(54, 13)
Me.Label20.TabIndex = 161
Me.Label20.Text = "Nama File"
'
'lblFile3
'
Me.lblFile3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblFile3.Location = New System.Drawing.Point(1059, 315)
Me.lblFile3.Name = "lblFile3"
Me.lblFile3.Size = New System.Drawing.Size(243, 18)
Me.lblFile3.TabIndex = 164
'
'Label21
'
Me.Label21.AutoSize = True
Me.Label21.Location = New System.Drawing.Point(999, 315)
Me.Label21.Name = "Label21"
Me.Label21.Size = New System.Drawing.Size(54, 13)
Me.Label21.TabIndex = 163
Me.Label21.Text = "Nama File"
'
'lblSize1
'
Me.lblSize1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.lblSize1.Location = New System.Drawing.Point(416, 363)
Me.lblSize1.Name = "lblSize1"
Me.lblSize1.Size = New System.Drawing.Size(67, 18)
Me.lblSize1.TabIndex = 166
'
'Label22
'
Me.Label22.Location = New System.Drawing.Point(356, 364)
Me.Label22.Name = "Label22"
'
Me.Label27.Location = New System.Drawing.Point(1144, 367)
Me.Label27.Name = "Label27"
Me.Label27.Size = New System.Drawing.Size(26, 18)
Me.Label27.TabIndex = 174
Me.Label27.Text = "Kb"
'
'Label7
'
Me.Label7.Location = New System.Drawing.Point(10, 6)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(81, 16)
Me.Label7.TabIndex = 175
Me.Label7.Text = "Citra Asli"
'
'frmResizeImg1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(1314, 483)
Me.Controls.Add(Me.Label7)
Me.Controls.Add(Me.Label27)
Me.Controls.Add(Me.Label26)
Me.Controls.Add(Me.Label24)
Me.Controls.Add(Me.Label18)
Me.Controls.Add(Me.lblSize3)
Me.Controls.Add(Me.Label25)
Me.Controls.Add(Me.lblSize2)
Me.Controls.Add(Me.Label23)
Me.Controls.Add(Me.lblSize1)
Me.Controls.Add(Me.Label22)
Me.Controls.Add(Me.lblFile3)
Me.Controls.Add(Me.Label21)
Me.Controls.Add(Me.lblFile2)
Me.Controls.Add(Me.Label20)
Me.Controls.Add(Me.lblFile1)
Me.Controls.Add(Me.Label19)
Me.Controls.Add(Me.lblDimensi3)
Me.Controls.Add(Me.Label17)
Me.Controls.Add(Me.lblDimensi2)
Me.Controls.Add(Me.Label13)
Me.Controls.Add(Me.lblDimensi1)
Me.Controls.Add(Me.Label11)
Me.Controls.Add(Me.ProgressBar1)
Me.Controls.Add(Me.lblPSNR3)
Me.Controls.Add(Me.Label14)
Me.Controls.Add(Me.lblMSE3)
Me.Controls.Add(Me.Label16)
Me.Controls.Add(Me.lblPSNR2)
Me.Controls.Add(Me.Label10)
Me.Controls.Add(Me.lblMSE2)
Me.Controls.Add(Me.Label12)
Me.Controls.Add(Me.lblPSNR1)
Me.Controls.Add(Me.Label9)
Me.Controls.Add(Me.lblMSE1)
Me.Controls.Add(Me.Label8)
Me.Controls.Add(Me.pbNN)
Me.Controls.Add(Me.pbBilinear)
Me.Controls.Add(Me.pbLinear)
Me.Controls.Add(Me.lblDimensi)
Me.Controls.Add(Me.Label5)
Me.Controls.Add(Me.lblFile)
Me.Controls.Add(Me.lblSize)
Me.Controls.Add(Me.Label4)
Me.Controls.Add(Me.Label6)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.picNearestNeighbor)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.picBilinear)
Me.Controls.Add(Me.picLinear)
Me.Controls.Add(Me.picOriginal)
Me.Controls.Add(Me.GroupBox1)
Me.Name = "frmResizeImg1"
Me.Text = "Resize Image dengan Algoritma Interpolasi"
CType(Me.picOriginal,
System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picLinear, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picBilinear,
System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picNearestNeighbor,
System.ComponentModel.ISupportInitialize).EndInit()
Me.GroupBox1.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
#End Region
End Sub
End Sub
End Sub
Private Sub Linear(ByVal from_pic As PictureBox, ByVal to_pic As
PictureBox, _
Optional ByVal anti_alias As Boolean = False)
pbLinear.Value = 30
Dim from_bm As New Bitmap(from_pic.Image)
Dim wid As Integer = from_pic.Width
Dim hgt As Integer = from_pic.Height
Dim to_bm As New Bitmap(wid, hgt)
KKK.Save(SaveD.FileName, ImageFormat.Bmp)
Case 2
KKK.Save(SaveD.FileName, ImageFormat.Jpeg)
End Select
Dim fileDetails As System.IO.FileInfo = New _
System.IO.FileInfo(lblFile3.Text)
lblSize3.Text = fileDetails.Length.ToString / 1024
MsgBox("Citra berhasil di simpan .....", MsgBoxStyle.OkOnly,
"Save _
Sukses")
Catch
MsgBox("Gagal disimpan ", MsgBoxStyle.Exclamation)
End Try
End If
End Sub
lblDimensi.Text = ""
lblFile.Text = ""
lblSize.Text = ""
lblMSE1.Text = ""
lblMSE2.Text = ""
lblMSE3.Text = ""
lblPSNR1.Text = ""
lblPSNR2.Text = ""
lblPSNR3.Text = ""
lblFile1.Text = ""
lblSize1.Text = ""
lblFile2.Text = ""
lblSize2.Text = ""
lblFile3.Text = ""
lblSize3.Text = ""
pbLinear.Hide()
pbBilinear.Hide()
pbNN.Hide()
End Sub
End Sub
.AddExtension = True
.CheckFileExists = True
.CheckPathExists = True
.DefaultExt = ".jpg"
.Filter = "Citra jpg (*.jpg)|*.jpg|Citra bmp (*.bmp)|*.bmp"
.Multiselect = False
End With
picOriginal.Image = ResizeImg
Else
lblDimensi.Text = "Lebar : " & Lebar & " x tinggi :" & Tinggi
Dimensi = Lebar * Tinggi
End If
btnProses1.Enabled = True
btnProses2.Enabled = True
btnProses3.Enabled = True
End If
End Sub
Sub BacaCitraOri()
Dim tempbmp2 As New Bitmap(picOriginal.Image)
Dim Red1 As Integer, Green1 As Integer, Blue1 As Integer
Dim X, Y As Integer
ProgressBar1.Width = picOriginal.Width
ProgressBar1.Show()
ItemList1.Clear()
With (tempbmp2)
For X = 0 To .Height - 1
Application.DoEvents()
For Y = 0 To .Width - 1
Red1 = (.GetPixel(Y, X).R)
If Red1 < 0 Then
Red1 = 0
End If
Next
If X Mod 10 = 0 Then
ProgressBar1.Value = Int(100 * X /
(picOriginal.Image.Height - 2))
End If
Next
End With
ProgressBar1.Hide()
End Sub
Sub BacaCitraLinear()
Dim tempbmp2 As New Bitmap(picLinear.Image)
Dim Red2 As Integer, Green2 As Integer, Blue2 As Integer
Dim X, Y As Integer
ProgressBar1.Width = picLinear.Width
ProgressBar1.Show()
ItemList2.Clear()
With (tempbmp2)
For X = 0 To .Height - 1
Application.DoEvents()
For Y = 0 To .Width - 1
Red2 = (.GetPixel(Y, X).R)
If Red2 < 0 Then
Red2 = 0
End If
Next
If X Mod 10 = 0 Then
ProgressBar1.Value = Int(100 * X / (picLinear.Image.Height
- 2))
End If
Next
End With
ProgressBar1.Hide()
pbLinear.Hide()
End Sub
Sub BacaCitraBilinear()
Dim tempbmp2 As New Bitmap(picBilinear.Image)
Dim Red2 As Integer, Green2 As Integer, Blue2 As Integer
Dim X, Y As Integer
pbBilinear.Width = picBilinear.Width
pbBilinear.Show()
ItemList2.Clear()
With (tempbmp2)
For X = 0 To .Height - 1
Application.DoEvents()
For Y = 0 To .Width - 1
Red2 = (.GetPixel(Y, X).R)
If Red2 < 0 Then
Red2 = 0
End If
Next
If X Mod 10 = 0 Then
pbBilinear.Value = Int(100 * X / (picBilinear.Image.Height
- 2))
End If
Next
End With
ProgressBar1.Hide()
pbBilinear.Hide()
End Sub
Sub BacaCitraNN()
Dim tempbmp2 As New Bitmap(picNearestNeighbor.Image)
Dim Red2 As Integer, Green2 As Integer, Blue2 As Integer
Dim X, Y As Integer
pbNN.Width = picNearestNeighbor.Width
pbNN.Show()
ItemList2.Clear()
With (tempbmp2)
For X = 0 To .Height - 1
Application.DoEvents()
For Y = 0 To .Width - 1
Red2 = (.GetPixel(Y, X).R)
If Red2 < 0 Then
Red2 = 0
End If
End If
ItemList2.Add(Red2)
ItemList2.Add(Green2)
ItemList2.Add(Blue2)
Next
If X Mod 10 = 0 Then
pbNN.Value = Int(100 * X / (picNearestNeighbor.Image.Height
- 2))
End If
Next
End With
ProgressBar1.Hide()
pbNN.Hide()
End Sub
Sub HitMSELinear()
'prosedur untuk menghitung MSE
Dim i As Single
Dim Piksel1 As Single
Dim Piksel2 As Single
Dim Selisih As Single
Dim TSelisih As Single
Dim MSE As Single
For i = 0 To ItemList1.Count - 1
Piksel1 = ItemList1.Item(i)
Piksel2 = ItemList2.Item(i)
'Selisih = (Math.Abs(Piksel1 - Piksel2)) ^ 2
Selisih = (Piksel1 - Piksel2) ^ 2
TSelisih = TSelisih + Selisih
Piksel1 = 0
Piksel2 = 0
Selisih = 0
Next
If TSelisih > 0 Then
MSE = (1 / Dimensi) * (TSelisih)
lblMSE1.Text = MSE
lblPSNR1.Text = 10 * Math.Log10(255 / MSE)
Else
lblMSE1.Text = 0
End If
End Sub
Sub HitMSEBilinear()
'prosedur untuk menghitung MSE
Dim i As Single
Dim Piksel1 As Single
Dim Piksel2 As Single
Dim Selisih As Single
Dim TSelisih As Single
Dim MSE As Single
For i = 0 To ItemList1.Count - 1
Piksel1 = ItemList1.Item(i)
Piksel2 = ItemList2.Item(i)
Selisih = (Piksel1 - Piksel2) ^ 2
TSelisih = TSelisih + Selisih
Piksel1 = 0
Piksel2 = 0
Selisih = 0
Next
Sub HitMSENN()
'prosedur untuk menghitung MSE
Dim i As Single
Dim Piksel1 As Single
Dim Piksel2 As Single
Dim Selisih As Single
Dim TSelisih As Single
Dim MSE As Single
For i = 0 To ItemList1.Count - 1
Piksel1 = ItemList1.Item(i)
Piksel2 = ItemList2.Item(i)
Selisih = (Piksel1 - Piksel2) ^ 2
TSelisih = TSelisih + Selisih
Piksel1 = 0
Piksel2 = 0
Selisih = 0
Next
End Sub
End Class