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
perancangan yang diimplementasikan pada aplikasi CoolOur ini dapat dilihat pada
Tabel IV-1.
Tabel V-1 Implementasi Kelas Perancangan
No Paket
Kelas
Implementasi
(.pas)
Keterangan
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
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
pengaturan-pengaturan 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.
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
plate-plate 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.
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.
Tabel V-3 Tabel Pengujian Use Case Browse
Kondisi Awal Masukkan Pengguna Kondisi Akhir Pengguna dihadapkan
pada file explorer dan path direktori awal yang terbuka adalah Desktop.
- Path direktori tempat data citra berada dapat dilakukan dengan menyeleksi folder yang tersedia dalam tree view.
Pada bagian kanan akan muncul isi dari folder terpilih yang berupa berkas citra berekstensi jpg ataupun bmp.
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.
Tabel V-4 Pengujian use caseTest
Kondisi Awal Masukkan Pengguna Kondisi Akhir Pengguna akan
dihadapkan pada suatu citra, di mana citra tersebut merupakan plate dari Ishihara
Angka/ Huruf yang terlukiskan pada citra, atau tanda minus (-) jika pengguna tidak dapat melihat apapun.
Tabel jawaban pengguna serta hasil analisis jenis buta warna pada setiap jawaban.
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 Masukkan Pengguna Kondisi Akhir
Pilihan filter adalah
- Memilih pada daerahhue, saturation atau
Pilihan filter berubah menjadi custom, dan titik poin yang
deuteran/ protan.
Dengan beberapa titik
poin hue, saturation,
dan value yang telah
ditentukan.
value.
- Mengubah nilai titik acuan hue, saturation dan poin.
terubah tersimpan dalam memori.
Antarmuka untuk pengaturan atribut filter terdapat pada Gambar IV-5.
Gambar V-3 Antarmuka Filter Setting yang digunakan untuk mengatur atribut filter.
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 Masukkan Pengguna Kondisi Akhir
Pengguna telah
memilih suatu berkas
citra yang akan
ditransformasi melalui
use case browse yang
telah dijelaskan
sebelumnya
- Melakukan pengaturan skala transformasi warna terhadap hue, saturation, value.
Warna tiap-tiap piksel pada citra akan berubah, sesuai dengan atribut filter yang telah ditentukan serta skala
perubahan yang telah diatur.
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
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);
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;
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:
Tabel V-7 Pengujian Use case Save Filtered Image
Kondisi Awal Masukkan Pengguna Kondisi Akhir
Citra telah
ditransformasi, dan
tidak ada berkas citra
yang telah
ditransformasi tersebut
pada harddisk.
- Menekan tombol simpan - Memasukkan nama berkas dan memilih path tempat berkas citra tersebut akan disimpan- Menekan tombol OK
Berkas citra hasil transformasi dengan nama terpilih telah tersimpan pada harddisk sesuai path yang telah dimasukkan.
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.