BAB V IMPLEMENTASI PERANGKAT LUNAK Bab ini menjelaskan tahap implementasi serta pengujian yang dilakukan pada pembangunan aplikasi transformasi warna untuk penderita buta warna yang disebut dengan CoolOur.
V.1
Implementasi
Aplikasi CoolOur yang dibangun adalah aplikasi transformasi warna untuk membantu penderita buta warna dalam mengakses informasi yang berkaitan terhadap warna pada suatu citra. Sub bab ini membahas implementasi aplikasi CoolOur meliputi lingkungan implementasi, implementasi metoda, implementasi antarmuka, serta batasan dalam implementasi. Dalam hal ini, implementasi adalah proses konstruksi, yaitu pembangunan aplikasi melalui pengodean program (coding). V.1.1 Lingkungan Implementasi Lingkungan implementasi terdiri dari lingkungan perangkat keras dan lingkungan perangkat lunak yang digunakan dalam pengembangan sistem. Lingkungan perangkat keras digunakan untuk keseluruhan sistem adalah sebagai berikut : 1. Processor Intel Pentium 4 1.70 GHz 2. RAM 512 MB. Sedangkan lingkungan perangkat lunak yang digunakan dalam pengembangan sistem adalah sebagai berikut: 1. Sistem Operasi Windows 2000 2. IDE Borland Delphi 7.0 V.1.2 Implementasi Aplikasi CoolOur Aplikasi CoolOur dibangun dalam lingkungan Windows dengan menggunakan IDE Borland Delphi 7.0. Dari hasil perancangan, implementasi CoolOur dijabarkan dalam kelas-kelas implementasi, termasuk di dalamnya implementasi metoda transformasi warna yang telah dijabarkan pada bab sebelumnya. Kelas 45
perancangan yang diimplementasikan pada aplikasi CoolOur ini dapat dilihat pada Tabel IV-1. Tabel V-1 Implementasi Kelas Perancangan
No
Paket
Kelas Implementasi
Keterangan
(.pas) 1.
UInterface
CoolOur
Kelas ini berfungsi sebagai kelas utama yang menyediakan fitur browse, sebagai acuan pengguna dalam memilih citra yang terdapat pada harddisk.
TestForm
Kelas ini bertujuan untuk menyediakan fitur pengujian jenis buta warna yang diderita pengguna. Kelas ini berhubungan dengan ColorSetting yang akan secara otomatis menyesuaikan filter warna dengan jenis buta warna yang diderita. Kelas ini menggunakan ColorTest sebagai kelas yang mengatur dan menentukan jenis buta warna pengguna.
ViewerForm
Kelas ini adalah kelas user interface yang digunakan untuk menampilkan citra yang telah dipilih oleh pengguna. Kelas ini menggunakan kelas Viewer yang berfungsi meakukan pengolahan tampilan.
SettingForm
Kelas ini adalah kelas user interface yang berfungsi menampilkan pengaturan yang dapat dilakukan oeh pengguna. Kelas ini menggunakan kelas ColorSetting sebagai kelas yang
46
melakukan pengaturan terhadap filter warna. Filter
ColorSetting
Kelas ini digunakan oleh SettingForm yang berfungsi melakukan pengaturan terhadap setting filter warna yang akan digunakan pada citra. Kelas ini menggunakan kelas ColorFilter yang nantinya akan melakukan filter terhadap citra yang telah dipilih oleh pengguna.
Viewer
Kelas ini berfungsi untuk menampilkan citra yang telah dipilih oleh pengguna, serta bertugas untuk mengubah tampilan seperti zoom, dan pengenalan piksel terpilih dalam bentuk nilai RGB dan HSV.
ColorFilter
Kelas ini adalah kelas yang bertugas untuk melakukan filter terhadap citra terpilih berdasarkan pengaturanpengaturan yang telah ditentukan sebelumnya.
Deuteran
Kelas ini adalah kelas turunan dari kelas ColorFilter yang berfungsi untuk melakukan filter citra yang dikhususkan kepada penderita dengan jenis buta warna deuteran.
Protan
Kelas ini adalah kelas turunan dari kelas ColorFilter yang berfungsi untuk melakukan filter citra yang dikhususkan kepada penderita dengan jenis buta warna protan.
Tritan
Kelas ini adalah kelas turunan dari
47
kelas ColorFilter yang berfungsi untuk melakukan filter citra yang dikhususkan kepada penderita dengan jenis buta warna tritan. Custom
Kelas ini adalah kelas turunan dari kelas ColorFilter yang berfungsi untuk melakukan filter citra yang dapat dikostumisasi sesuai keinginan pengguna.
EPoints
Kelas ini adalah kelas entity tambahan yang digunakan untuk menyimpan titik-titik acuan penggeseran nilai hue, saturation dan value.
CBTest
ColorTest
Kelas ini adalah kelas abstrak untuk acuan test buta warna.
Ishihara
Kelas ini adalah kelas turunan dari ColorTest yang menggunakan plateplate Ishihara sebagai penentu jenis buta warna seseorang.
V.1.3 Implementasi Antarmuka Antarmuka yang diimplementasikan adalah antarmuka untuk aplikasi CoolOur. Implementasi antarmuka dapat dilihat pada Gambar IV-2, sub bab IV.2.3 Prosedur pengujian fungsionalitas aplikasi.
V.1.4 Batasan dalam Implementasi Berdasarkan analisis kebutuhan pengembangan sistem kini yang telah didefinisikan serta proses implementasi yang telah dilakukan, batasan implementasi pada tesis ini yaitu : 1. Format citra yang didukung oleh aplikasi CoolOur ini adalah format jpg, dan bmp. 2. Metoda transformasi warna yang di implementasi dalam aplikasi ini hanya jenis buta warna parsial, dan tidak implementasi jenis total.
48
V.2
Pengujian
Sub bab ini berisi pengujian terhadap aplikasi yang telah dibuat. Pengujian dilakukan dengan menjalankan seluruh aplikasi pada sistem CoolOur, kemudian melakukan pengujian terhadap fungsionalitas aplikasi dalam lingkup tesis ini.
V.2.1 Tujuan Pengujian Pengujian dilakukan dengan tujuan sebagai berikut: 1. Membuktikan kesesuaian aplikasi dengan spesifikasi kebutuhan pada bagian analisis dan perancangan. 2. Mengetahui kinerja aplikasi. Hal ini berkaitan dengan diimplementasikannya metoda transformasi warna pada citra dengan dimensi yang berbeda.
V.2.2 Lingkungan Pengujian Pengujian perangkat lunak dilakukan dengan menggunakan
komputer dan telah
terinstalasi aplikasi CoolOur. Spesifikasi perangkat keras pengujian dapat dilihat pada Tabel IV-2. Tabel V-2 Spesifikasi Perangkat Pengujian
No.
Spesifikasi Perangkat Keras Pengujian
1
Prosesor
Intel Pentium 4
2
Memori
512 RAM
3
Sistem Operasi
Windows XP Professional
4
Layar Monitor
LCD
V.2.3 Prosedur Pengujian Pengujian fungsionalitas aplikasi dilakukan dengan memasukkan data-data sesuai kebutuhan pada setiap layanan yang disediakan, mengeksekusi layanan yang disediakan tersebut, kemudian mengamati hasil keluaran aplikasi. Pengujian ini dilakukan untuk setiap use case dalam sistem. Hasil pengujian fungsionalitas aplikasi berdasarkan use case yang telah dilakukan adalah sebagai berikut : 1. Use case Browse. Langkah awal dalam melakukan transformasi warna adalah pemilihan citra yang akan dilakukan transformasi. Fungsi tersebut digambarkan dalam use case browse, di mana pengguna memilih citra yang akan diubah. Hasil pengujian untuk use case browse dokumen adalah sebagai berikut.
49
Tabel V-3 Tabel Pengujian Use Case Browse
Kondisi Awal Pengguna dihadapkan
Masukkan Pengguna
Kondisi Akhir
- Path direktori tempat Pada bagian kanan akan
pada file explorer dan
data
citra
berada muncul isi dari folder terpilih
path direktori awal
dapat
yang terbuka adalah
dengan
Desktop.
folder yang tersedia
dilakukan yang berupa berkas citra menyeleksi berekstensi jpg ataupun bmp.
dalam tree view. Hasil input serta output fungsi browse berdasarkan Tabel IV-3 dapat dilihat pada Gambar IV-2.
Gambar V-1 Antarmuka Browse
2. Use case Test Fungsi pengujian jenis buta warna ini terdapat dalam modul CBTest yang diimplementasikan pada sub menu ‘menu’ pada antarmuka browse. Hasil pengujian untuk pencarian data dokumen adalah sebagai berikut.
50
Tabel V-4 Pengujian use caseTest
Kondisi Awal
Masukkan Pengguna
Pengguna akan
Angka/
dihadapkan pada suatu
terlukiskan pada citra, hasil analisis jenis buta warna
citra, di mana citra
atau tanda minus (-) jika pada setiap jawaban.
tersebut merupakan plate pengguna dari Ishihara
Huruf
Kondisi Akhir
tidak
melihat apapun.
yang Tabel jawaban pengguna serta
dapat Atribut pilihan filter yang terdapat pada Form setting akan berubah sesuai jenis buta warna.
Antarmuka untuk proses pengujian jenis buta warna dapat dilihat pada Gambar IV-4.
Gambar V-2 Antarmuka pengujian jenis buta warna.
Hasil dari tes buta warna ini akan terdiri dari empat macam jenis yaitu normal, protan, deutan, atau total. Untuk hasil protan atau deutan akan mengubah pilihan filter yang terdapat pada kelas ColorSetting menjadi protan atau deutan. Sedangkan untuk jenis custom akan mengakibatkan pilihan filter menjadi custom. 3. Use case Customize Filter Attributes Hasil pengujian untuk pengaturan atribut filter adalah sebagai berikut:
Tabel V-5 Pengujian Use case Customize Filter Attributes
Kondisi Awal
Pilihan filter adalah
Masukkan Pengguna
Kondisi Akhir
- Memilih pada daerah Pilihan filter berubah menjadi hue, saturation atau custom, dan titik poin yang
51
deuteran/ protan. Dengan beberapa titik
terubah tersimpan dalam
value.
- Mengubah nilai titik memori.
poin hue, saturation,
acuan hue, saturation
dan value yang telah
dan poin.
ditentukan. Antarmuka untuk pengaturan atribut filter terdapat pada Gambar IV-5.
Gambar V-3 Antarmuka Filter Setting yang digunakan untuk mengatur atribut filter.
Gambar V-4 Antarmuka Filter Image
52
4. Use case Filter Image Ini adalah fungsi utama dari aplikasi CoolOur di mana pengguna dapat melakukan transformasi warna pada citra (filter) sehingga informasi pada suatu citra dapat diambil dengan maksimal. Hasil pengujian untuk transformasi warna pada citra adalah sebagai berikut: Tabel V-6 Pengujian Use case Customize Filter Attributes
Kondisi Awal
Pengguna telah
Masukkan Pengguna
Kondisi Akhir
- Melakukan pengaturan Warna tiap-tiap piksel pada
memilih suatu berkas
skala
transformasi citra akan berubah, sesuai
citra yang akan
warna terhadap hue, dengan atribut filter yang telah
ditransformasi melalui
saturation, value.
ditentukan serta skala perubahan yang telah diatur.
use case browse yang telah dijelaskan sebelumnya
Antarmuka untuk transformasi warna citra terdapat pada Gambar IV-6. procedure TColorFilter.countClosest(var _hsv: array of Real); var h, s, v, _h, _s, _v: Real; begin h := _hsv[0]; s := _hsv[1]; v := _hsv[2];
{ Shifts Hue } if (h >= 0) and (h < Hue[1].getNode) then begin _h := h - Round((Hue[1].getNode h)*Hue[1].getMagMid2*hueLevel); if _h < 0 then _h := 0; end else if (h >= Hue[1].getNode) and (h < Hue[1].getMid) then begin _h := h + Round((h Hue[1].getNode)*Hue[1].getMagMid1*hueLevel); if _h > Hue[1].getMid then _h := Hue[1].getMid; end
53
else if (h >= Hue[1].getMid) and (h < Hue[2].getNode) then begin _h := h - Round((Hue[2].getNode h)*Hue[2].getMagMid2*hueLevel); if _h < Hue[1].getMid then _h := Hue[1].getMid; end else begin _h := h + Round((h Hue[2].getNode)*Hue[2].getMagMid1*hueLevel); if _h > Hue[2].getMid then _h := Hue[2].getMid; end;
{ Shifts Saturation and Level} _s := s + s*satLevel; _v := v + v*valLevel;
_hsv[0] := _h; _hsv[1] := _s; _hsv[2] := _v; end; Gambar V-5. Implementasi Fungsi countClosest.
function TCustom.countClosestHue(value: Integer): Integer; var res, hp, mp: Integer; i: Integer; begin value := value - deltaHue; if(value < 0) then value := value+360; res := 0; for i:=1 to hueCount do begin hp := (Hue[i].getNode - deltaHue); mp := (Hue[i].getMid - deltaHue); if (mp < 0) then mp := mp + 360; if (value >= hp) and (value < mp) then begin res := value + Round((value hp)*hueLevel*Hue[i].getMagMid1);
54
if(res > mp) then res := mp; Break; end else if (value >= mp) and (value < (Hue[i+1].getNode deltaHue)) then begin res := value - Round(((Hue[i+1].getNode -deltaHue) value)*hueLevel*Hue[i].getMagMid2); if(res < mp) then res := mp; Break; end; end; res := res+ deltaHue; if(res >= 360) then res := res-360; countClosestHue := res; end; Gambar V-6. Implementasi Fungsi countClosestHue.
function TCustom.countClosestSat(value: Integer): Integer; var i : Integer; begin for i:=1 to satCount do begin if (value >= Sat[i].getNode) and (value < Sat[i].getMid) then begin if(Sat[i].getTypeCount = -1) then begin value := value - Round((Sat[i].getMid value)*satLevel); if(value < Sat[i].getNode) then value := Sat[i].getNode; end else if(Sat[i].getTypeCount = 1) then begin value := value + Round((value Sat[i].getNode)*satLevel); if(value > Sat[i].getMid) then value := Sat[i].getMid;
55
end; end; end; countClosestSat := value; end; Gambar V-7. Imlementasi fungsi countClosestSat.
function TCustom.countClosestVal(value: Integer): Integer; var i : Integer; begin for i:=1 to valCount do begin if (value >= Val[i].getHue) and (value < Val[i].getMid) then begin if(Val[i].getTypeCount = -1) then begin value := value - Round((Val[i].getMid value)*valLevel); if(value < Val[i].getHue) then value := Sat[i].getHue; end else if(Val[i].getTypeCount = 1) then begin value := value + Round((value Val[i].getHue)*valLevel); if(value > Val[i].getMid) then value := Sat[i].getMid; end; end; end; countClosestVal := value; end; Gambar V-8. Implementasi Fungsi countClosestVal.
5. Use case Save Filtered Image Ini adalah fungsi di mana pengguna dapat menyimpan citra yang telah ditransformasi. Hasil pengujian untuk penyimpanan citra hasil transformasi adalah sebagai berikut:
56
Tabel V-7 Pengujian Use case Save Filtered Image
Kondisi Awal
Masukkan Pengguna
Citra telah
- Menekan
tombol Berkas citra hasil transformasi
simpan
ditransformasi, dan tidak ada berkas citra
Kondisi Akhir dengan nama terpilih telah
- Memasukkan
nama tersimpan pada harddisk sesuai
yang telah
berkas dan memilih path yang telah dimasukkan.
ditransformasi tersebut
path
tempat
citra
tersebut
pada harddisk.
berkas akan
disimpan - Menekan tombol OK
Gambar V-9. Antarmuka Save Filtered Image
57
V.2.4 Analisis Hasil Pengujian Dari pengujian yang telah dilakukan, dapat diperoleh hasil pengamatan sebagai berikut: 1. Berdasarkan pengujian fungsionalitas aplikasi, dapat diambil kesimpulan bahwa secara umum, fungsionalitas aplikasi CoolOur yang telah dibangun dapat berjalan dengan baik. 2. Transformasi warna yang dilakukan telah dapat menolong penderita buta warna jenis deuteran mengambil informasi pada citra lebih banyak. Namun untuk jenis buta warna protan perlu diuji lebih lanjut.
58