BAB III
ANALISA DAN PERANCANGAN
3.1 Analisis Permasalahan
Ada beberapa permasalahan yang dihadapi dalam pembuatan program aplikasi deteksi panas hasil foto kamera webcam antara lain :
1. Kamera webcam ini tidak mempunyai lampu LED seperti kamera inframerah, maka kamera webcam ini tidak dapat mendeteksi objek suhu panas dalam keadaan gelap tanpa lampu. Tetapi kamera webcam pada program aplikasi ini dapat mendeteksi suhu apabila masih terdapat sedikit cahaya, seperti kamera night vision.
2. Dalam pembuatan program aplikasi deteksi panas hasil foto kamera webcam ini laporan yang dihasilkan tidak sama persis seperti kamera thermal aslinya, karena pada kamera thermal asli memang dirancang agar kamera tersebut menjadi kamera yang super sensitif terhadap panas, tetapi penulis berusaha membuat program aplikasi ini agar dapat berfungsi sesuai fungsi yang diinginkan.
3.2 Identifikasi Kebutuhan Sistem
Adapun kebutuhan yang ada dalam pembuatan program aplikasi deteksi panas hasil foto kamera webcam adalah :
1. Webcam
Merupakan hardware yang digunakan untuk capture foto. 2. Hasil transform (deteksi panas)
Merupakan foto yang telah diubah menjadi foto thermal (panas). 3. Save foto
Untuk menyimpan hasil foto menggunakan video webcam dan untuk menyimpan hasil transform.
4. Print
Untuk mencetak hasil transfom foto dalam bentuk kertas. 3.3 Proses Input
Yaitu proses memasukkan data ke dalam program dan biasanya proses ini dilakukan oleh user. Data-data yang dimasukkan pada proses ini antara lain.
Data ini didapat dari user itu sendiri, misalnya foto apa yang ingin di ubah menjadi foto thermal (panas), dan foto yang dihasilkan dari kamera webcam itu sendiri.
1. Pemrosesan Image di MATLAB Berbasis Video Kamera A. Mendeteksi Jenis Video Kamera
Sebelum memulai mengambil data dari video kamera perlu dipastikan bahwa adapter kamera kita sudah terbaca dengan baik oleh matlab, apabila menggunakan eksternal webcam untuk melakukan hal tersebut dapat digunakan perintah :
imaqhwinfo >> imaqhwinfo ans =
InstalledAdaptors: {'coreco' 'winvideo'} MATLABVersion: '7.11.0 (R2010b)'
ToolboxName: 'Image Acquisition Toolbox' ToolboxVersion: '(R2010b)'
Disini dapat dilihat bahwa kamera yang digunakan menggunakan {'coreco' 'winvideo'} sebagai kamera webcam.
B. Menampilkan Dan Mengambil Gambar Video Kamera
Proses selanjutnya dalam pemrosesan video yaitu mengambil data dengan menggunakan perintah videoinput dan menentukan parameter seperti video resolusi, lebar, panjang dan band dari video kemudian membuat sebuah handle yang menampung image frame tersebut. Setelah handle image didapatkan maka
biasanya video dapat ditampilkan menggunakan perintah video on, pada aplikasi ini pengguna menggunakan perintah seperti dibawah ini :
Global Vid
Untuk memanggil driver webcam
% --- Executes on button press in btnVid_on.
function btnVid_on_Callback(hObject, eventdata, handles) global vid
val=get(handles.popup,'value'); str=get(handles.popup,'string');
selected_string = str{val};vid = videoinput('winvideo',1,selected_string); set(vid,'ReturnedColorSpace','rgb');
vidRes = get(vid, 'VideoResolution'); imWidth = vidRes(1);
imHeight = vidRes(2);
nBands = get(vid, 'NumberOfBands');
hImage = image( zeros(imHeight, imWidth, nBands) ); axes(handles.axes1);
preview(vid, hImage);
C. Menentukan Resolusi Ukuran Gambar Yang Ingin Di Foto
Untuk menentukan resolusi ukuran menggunakan fungsi : vidRes = get(vid, 'VideoResolution');
dimana ukuran data resolusi yang telah ada terlebih dahulu disimpan pada popup menu yaitu sebagai berikut :
YUY2_640x480 YUY2_352x288 YUY2_320x240 YUY2_176x144 YUY2_160x120 D. Capture Video
Untuk capture video kamera webcam menggunakan : capture= getsnapshot(vid);
berfungsi untuk mengambil gambar yang ada di kamera webcam E. Menentukan tempat penyimpanan
Untuk menentukan tempat penyimpanan hasil foto yang diambil dari video kamera webcam yang telah di capture menggunakan :
% --- Executes on button press in Save_Video.
function Save_Video_Callback(hObject, eventdata, handles) global capture [nama_file_simpan, path_simpan]=uiputfile(... {'*.jpg','File JPEG(*.jpg)'; '*.png','File PNG(*.png)';... '*.bmp','File BMP(*.bmp)';... '*.*','Semua file(*.*)'},...
'Menyimpan File Hasil Capture'); if ~isequal(nama_file_simpan,0)
imwrite(capture,fullfile(path_simpan,... nama_file_simpan));
end
Dimana Penyimpanan dapat menentukan lokasi dan pemberian nama file gambar serta format JPEG, PNG, BMP.
Gambar 3.4 Menyimpan File Hasil Capture Masih Format .jpg Saja
Pada MATLAB, sebuah gambar akan disimpan sebagai sebuah matriks m x n x 3, di mana m adalah jumlah pixel dalam arah sumbu x, n adalah jumlah pixel pada sumbu y dan 3 adalah jumlah layer (R, G, dan B).
2. Pembacaan Image
Pada matlab fungsi untuk melakukan pembacaan image standar yaitu: imread(‘filename’) atau fread(‘filename’) tetapi pada pembuatan program aplikasi deteksi panas hasil kamera webcam ini penulis menggunakan imread [FileName,PathName] sebagai pembacaan image
Perintah ini digunakan untuk membaca beberapa format file diantaranya: TIFF : Tagged Image File Format .tif .tiff
GIF : Graphics Interchange Format .gif BMP : Windows Bitmap .bmp
PNG : Portable Network Graphics .png XWD : X-Window Dump .xwd
Kemudian untuk menentukan file mana yang yang akan di tampilkan pada program disini menggunakan fungsi (uigetfile) dimana pada program ini digunakan untuk membuka file. Fungsi uigetfile menghasilkan dua keluaran, yaitu variabel nama file dan variabel direktori. Variabel nama file digunakan untuk menyimpan nama file yang dibuka dan variabel direktori digunakan untuk menyimpan path direktori.
Gambar 3.5 Open File
A. Ekstraksi Nilai Piksel Red, Green Dan Blue (RGB)
Gambar = imread(‘Nama Gambar(.jpg)’); (membaca file gambar)
Red = gambar(:,:,1); % memanggil matriks gambar yang hanya berisi piksel warna merah
green = gambar(:,:,2);% memanggil matriks gambar yang hanya berisi piksel warna hijau
warna biru
Dari keterangan diatas bisa dilihat bahwa untuk mengambil nilai piksel merah memiliki indeks 1, hijau memiliki indeks 2 dan warna biru memiliki indeks 3. Ketiga angka tersebut dimaksudkan agar jangan sampai tertukan dan membingungkan antara warna RGB.
Selanjutnya untuk menampilkan gambar Red, Green dan Blue (RGB) biasanya menggunakan fungsi imshow
imshow(Nama Gambar) imshow(red)
imshow(green) imshow(blue)
Disini pengguna menggunakan fungsi image(handles.gambar) untuk menangani gambar yang ingin di tampilkan sehingga data yang telah terbaca pada gui data dapat di tampilkan.
B. Menetapkan Tampilan Sumbu
Kita dapat menggunakan perintah axis untuk memperlihatkan sumbu atau menyembunyikannya.
axis on : akan memerperlihatkan sumbu. Dan telah menjadi penetapan pada MATLAB.
axis off : akan menyembunyikan sumbu.
Pada program aplikasi ini pengguna menggunakan axis off dimana akan menyembunyikan sumbu.
3.4 Proses Konversi Gambar
1. RGB ke Grayscale
Untuk merubah gambar RGB ke gambar grayscale di MATLAB sebenarnya sudah disediakan fungsi khusus pada matlab yaitu :
rgb2gray(matrik_gambar) mengkonversi RGB ke Grayscale
Grayscale adalah teknik yang digunakan untuk mengubah citra berwana (RGB) menjadi bentuk grayscale atau tingkat keabuan (dari hitam ke putih). Dengan pengubahan ini, matriks penyusun citra yang sebelumnya 3 matriks akan berubah menjadi 1 matriks saja. Citra dalam skala abu-abu memiliki variasi warna 0 – 255 dan berukuran 1x8 bit. Tentu saja berbeda dengan citra biner yang hanya memiliki warna hitam dan putih berarti hanya memiliki komponen warna 0-1 saja.
Disini pengguna menggunakan fungsi rgb2gray(handles.gambar,10); inti y sama tapi disini pengguna menggunakan nilai 10 dari 0-255 intensitas sebagai tingkat warna abu-abu .
Dari Warna RGB kemudian di ubah menjadi binerisasi citra yang merupakan proses merubah citra ke dalam bentuk biner (0 dan 1). Dengan merubah ke bentuk biner, citra hanya akan mempunyai 2 warna yakni hitam dan putih. Dengan proses ini, citra RGB juga akan menjadi 1 matriks penyusun saja.
Citra biner (binary image) adalah citra yang setiap pikselnya hanya memiliki 2 kemungkinan derajat keabuan yakni 0 dan 1. Proses pembineran dilakukan dengan membulatkan keatas atau kebawah untuk setiap nilai keabuan dari piksel yg berada diatas atau bawah nilainya. Metode untuk menentukan besarnya itu disebut thresholding.
Thresholding digunakan untuk mengatur jumlah derajat keabuan yang ada pada citra. Dengan menggunakan thresholding maka derajat keabuan bisa diubah sesuai keinginan, dalam program aplikasi ini pengguna menggunakan derajat keabuan 10, maka tinggal membagi nilai derajat keabuan dengan 10. Proses thresholding ini pada dasarnya adalah proses pengubahan kuantisasi pada citra. sehingga untuk melakukan thresholding dengan derajat keabuan dapat digunakan rumus:
X=b.int(w/b) dimana :
w = nilai derajat keabuan sebelum thresholding x = nilai derajat keabuan setelah thresholding
axis off;
axis digunakan karena memang yang ditampilkan bukan grafik (citra).
2. RGB ke HSV
HSV merupakan kependekan dari Hue, Saturation, dan Value. Dimana karakteristik pokok dari warna tersebut adalah:
1. Hue: menyatakan warna sebenarnya, seperti merah, violet, dan kuning dan digunakan menentukan kemerahan (redness), kehijauan (greeness), dsb.
2. Saturation: kadang disebut chroma, adalah kemurnian atau kekuatan warna.
3. Value : kecerahan dari warna. Nilainya berkisar antara 0-100 %. Apabila nilainya 0 maka warnanya akan menjadi hitam, semakin besar nilai maka semakin cerah dan muncul variasi-variasi baru dari warna tersebut.
Untuk transformasi dari RGB ke HSV pengguna menggunakan fungsi : hsvgambar = rgb2hsv(handles.gambar) ;
dimana pada program ini (handles.gambar) adalah input citra yang sudah dinormalkan ukurannya, dan hsvgambar adalah citra hasil transformasi ke HSV
Pertama-tama cari nila maksimum dan minimum dari ketiga komponen RGB.
1. Satruation (S) : S=(max-min)/max, memiliki nilai 0-1 2. Value (V) : V= max, 0-1
3. Hue (H) : H = 0-360 (derajat)
Pertama-tama hitung R’, G’, dan B’ R'=max-R / max-min
G'=max-G / max-min B'=max-B / max-min
Jika Satruation, S=0, maka hue tidak terdefinisi (tidak memiliki hue berarti monochrome). kemungkinan lain:
· if (R = max and G = min) -> H = 5 + B’ · else if (R = max and G ≠ min) -> H = 1 − G’ · else if (G = max and B = min) -> H = R’ + 1 · else if (G = max and B ≠ min) -> H = 3 – B’ · else if (R = max) -> H = 3 + G’ · otherwise -> H = 5 – R’
Hue (H) lalu dikonversi menjadi derajat/degrees dengan cara mengalikan dengan 60 sehingga menghasilkan HSV dengan S dan V antara 1 dan H antara 0-360
axis off;
axis digunakan karena memang yang ditampilkan bukan grafik (citra).
3. RGB ke Thermal (panas) A. Gambaran Image
Larik dua dimensi dapat ditampilkan sebagai image, dengan elemen-elemen larik menentukan kejelasan atau warna image. Disini pengguna menggunakan nilai Y (hot)
Name Size Bytes Class
Y 648×509 2638656 double array caption 2×28 112 char array map 128×3 3072 double array
mengambil file durer.mat, menambah tiga variabel ke workspace. Matriks Y adalah matriks 648-kali-509 dan map adalah matriks 128-kali-3 yang merupakan peta warna dari image ini.
MAT, seperti durer.mat, adalah file biner yang dapat dibuat pada satu platform dan selanjutnya dibaca oleh MATLAB pada platform yang berbeda.
Elemen dari Y merupakan bilangan bulat antara 1 dan 128, yang disediakan sebagai identitas pada peta warna, map. Selanjutnya
image(Y) colormap(map)
axis image
menghasilkan Dürer’s etching. Pada scan resolusi tinggi bagi persegi magic tersedia dalam file lain. Ketiklah
load detail
dan kemudian menggunakan tomboh panah atas pada keyboard untuk mengeksekusi ulang image, colormap, dan perintah axis. Pernyataan
Untuk transformasi dari RGB ke Thermal (panas) pengguna menggunakan:
[Y,map] = rgb2ind(handles.gambar,10);
bermaksud mengarahkan gambar (image) ke object bernama gambar imagesc(Y)
membaca dan mencari image yang sudah ada pada nilai Y colormap(hot)
Fungsi hot membangkitkan peta warna yang berisi arsiran merah, oranye, dan kuning. Secara khusus, matriks image tertentu telah memiliki peta warna spesifik yang sesuai dengan matriks tersebut.
axis digunakan karena memang yang ditampilkan bukan grafik (citra).
3.5 Hasil Analisa Mulai Dari 2, 4, 10, dan 225
Dari hasil pengujian yang dilakukan didapatkan perbandingan hasil ekstraksi citra sebagai berikut: Ekstraksi Warna (RGB) Citra Asli Citra Grayscale Citra HSV Citra Thermal (panas) Intensity Distributio n (0-255) 2 4 10 255
Warna Keterangan Suku
Putih Warna terpanas 38,8 oC +
Merah, Coklat, Kuning Panas 36,7 oC
Biru Normal 30 oC
Hitam Dingin, temperatur
maksimum
21 oC
Gambar 3.7 Table Temperatur Suhu 3.6 Menyimpan data citra ke dalam file
Langkah terakhir dalam pengolahan citra biasanya menyimpan data citra ke dalam file. Untuk melakukan hal ini, Matlab menyediakan fungsi yang bernama imwrite yang berarti image write. Matlab mensupport beberapa jenis format penyimpanan citra. Silahkan ketik help imwrite untuk mengetahui lebih lanjut mengenai format-format yang didukung oleh Matlab.
Berikut ini adalah penggunaan imwrite. imwrite(matrixCitra,'Kompor.jpeg');
Apa yang dilakukan pada potongan kode di atas adalah membuat sebuah citra yang bernama FruitModified.jpeg dan menyimpan data citra yang bernama matrixCitra ke dalam file tersebut dengan format penyimpanan bertipe jpeg. 3.7 Cetak Menggunakan Print
Untuk mencetak hasil transform gambar yang telah ada digunakan : printpreview;
Gambar 3.8 Tampilan Print Preview Belum Ada Gambar
3.8 Rancangan Tampilan Program
Rancangan tampilan awal dari program aplikasi deteksi panas hasil foto kamera webcam ini, masih dibuat secara sederhana, tanpa menggunakan banyak motif, tapi penulis berusaha untuk merancang tampilan utama ini sehingga dapat mewakili seluruh aspek aspirasi penulis, adapun rancangan tampilan awalnya adalah sebagai berikut:
3.9 Perancangan Program
Adapun langkah pembuatan program sebagai berikut :
1. Buka bahasa pemrograman Matlab 7.11.0 (R2010b) dengan cara klik start menu kemudian klik program, lalu klik Matlab, setelah masuk ke tampilan awal Matlab kemudian pilih file lalu new pilih salah satu, pilih project Matlab dengan mengunakan GUI.
2. Lalu pilih Blank GUI (Default) kemudian klik ok, sehingga muncul tampilan GUI.
3. Klik kontrol Panel untuk membuat panel agar program terlihat lebih rapih seperti pada gambar 3.16
4. Klik kontrol Axes pada toolbox untuk membuat Axes1 dan Axes2 sesuai ukuran, seperti pada no 1 dan 2, pada gambar 3.16
5. Klik kontrol Push Button untuk membuat tombol video on, video off, capture, save video, setting, print, save foto, exit, open, HSV, Gray, normal dan thermal seperti no 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 dan 18 pada gambar 3.16 6. Klik kontrol Edit Text untuk membuat halaman dimana kita membuka gambar
dan untuk mengetahui ukuran seperti no 7 pada gambar 3.16
7. Klik kontrol Pop-up Menu untuk menentukan ukuran video yang kita inginkan seperti no 6 pada gambar 3.16
mulai Pilih foto / video Deteksi driver webcam Masuk aplikasi Pilih citra foto Menampilkan gambar Video Baca citra asli Video on / off stop Mulai video Pilih pixel capture Simpan foto/ tidak kembali Simpan file Lokasi file Print yes / no Baca citra untuk di print Koneksi ke printer 3 1 2 Pilih efek foto Proses Deteksi Menampilkan citra hasil pendeteksian
3 Setting Print Kondisi berhenti yes / no 1 end 2
3.10 Algoritma A. Menampilkan Gambar gambar=imread(‘kompor.jpg’); [a,b,c]=size(gambar); for baris=1:a for kolom=1:b gambar1(baris,kolom,: )=mid(baris,(b-(kolom-1)),: ); end end imshow(mid) axis off B. Algoritma RGB ke Grayscale
%mengambil data gambar tmp = imread('kompor.jpg'); %konsetrasi abu-abu
grayVal = 1.2;
%lakukan pembacaan pixel sebesar dimensi gambar yaitu 375x500x3 for i=1:375
for j=1:500
%melakukan manipulasi marix menjadi gray v = (tmp(i,j,1) + tmp(i,j,2) + tmp(i,j,3) ) / grayVal; img(i,j,1) = v ;
img(i,j,3) = v ; end
end
%menampikan gambar hasil manipulasi imshow(img);
Berikut ini adalah penjelasan dari angka-angka dimensi tersebut.
• 375 = Mengartikan Lebar Image
• 500 = Mengartikan Panjang Image
• 3 = Mengartikan image terdiri dari 3 matriks yaitu (Red, Green, Blue) B. Algoritma RGB ke HSV
Chsv <- transformasi citra RGB ke HSV For i <- 1 to jumlah piksel
Euclidmin(nilai min) <- 1000
Bin_warna(kode binery warna) (jumlah warna referensi) <- 0
For j <- 1 to jumlah warna referensi piksel ke i dan warna referensi ke – j If euclin < jarak euclidmin Then
Euclidmin <- euclid Id <- j
End End
end
SIMBOL NAMA FUNGSI
TERMINATOR
Permulaan / akhir Program
GARIS ALIR
(FLOW LINE) Arah aliran program
PROCESS
Proses perhitungan / proses
Pengolahan data
INPUT/OUTPUT DATA
Proses input / output data,
Parameter, informasi
PREDEFINED PROCESS
(SUB PROGRAM)
Permulaan sub program / proses menjalankan sub program
DECISION
Perbandingan pernyataan,
penyeleksian data yang memberikan pilihan untuk langkah
selanjutnya ON PAGE
CONNECTOR
Penghubung bagian-bagian flowchart yang berada pada satu halaman