Data Yang Digunakan Analisis Sistem

BAB 3 ANALISIS DAN PERANCANGAN SISTEM Bab ini membahas analisis metode K-Means Clustering pada sistem dan membahas tahap-tahap yang dilakukan pada sistem yang akan dibangun.

3.1 Data Yang Digunakan

Data yang digunakan dalam penelitian ini adalah data citra hasil rekaman satelit Quickbird yang didapat dari internet.

3.2 Analisis Sistem

Analisis diperlukan sebagai dasar perancangan sistem. Pada penelitian ini, terdapat lima tahap proses yaitu tahap segmentasi menggunakan metode k-means clustering, tahap median filtering, tahap pengenalan ciri bangunan, tahap pengenalan koordinat, dan penyusunan polygon bangunan. Adapun tahapan dari segmentasi menggunakan metode k-means clustering yaitu sebagai berikut: 1. Masukkan file citra quickbird. 2. Inisialisasi jumlah klaster. 3. Mulai pembacaan data dan kembalikan sebagai byte array array dua dimensi. 4. Dengan menggunakan persamaan 3.1, hitung jarak setiap objek ke setiap centroid √ 3.1 5. Setiap piksel disusun ke sentroid terdekat. Universitas Sumatera Utara 6. Hitung sentroid baru dari klaster yang baru terbentuk, di mana sentroid baru itu diperoleh dari rata-rata setiap piksel yang terletak pada klaster yang sama 7. Hasil dari tahapan segmentasi yaitu citra baru dengan dua klaster, yaitu klaster putih untuk bangunan dan klaster hitam untuk objek lainnya. Adapun median filtering yang digunakan adalah median filtering dengan matriks 4x4, tahapan dari median filtering yaitu sebagai berikut : 1. Untuk setiap piksel X,Y pada citra, buat sebuah matriks berukuran 4x4 seperti gambar 3.1 [ ] Gambar 3.1 Matriks untuk median filtering 4x4 2. Urutkan setiap nilai pada matriks seperti gambar 3.1 secara ascending 3. Ganti nilai pada piksel X,Y dengan nilai tengah median dari matriks seperti gambar 3.1. Adapun tahapan dari pengenalan ciri bangunan yaitu sebagai berikut: 1. Inisialisasi jumlah minimum panjang, dan minimum lebar toleransi objek bangunan. 2. Deklarasikan array integer dua dimensi dengan panjang sesuai dengan panjang citra, serta lebar sesuai lebar citra. 3. Untuk setiap piksel citra, representasikan piksel warna putih dengan nilai 1 pada array, kemudian piksel warna hitam dengan nilai 0. 4. Lakukan seleksi untuk setiap piksel yang terhubung, seperti pada gambar 3.2 5. Hapus setiap piksel yang tidak memenuhi minimum panjang dan lebar terhubung secara bertikal maupun horizontal. 6. Hasil dari tahapan pengenalan ciri bangunan yaitu citra baru dengan pola bangunan yang lebih rapi. Universitas Sumatera Utara Panjang Piksel yang terhubung horizontal = nilai minimum lebar bangunan { } Gambar 3.2. Proses seleksi piksel yang terhubung Adapun tahapan dari pengenalan koordinat yaitu sebagai berikut: 1. Lakukan pengenalan koordinat asli pada citra, dengan cara mengklik pada citra 2. Simpan nilai koordinat x,y pada sebuah array list. 3. Hitung jarak koordinat asli hasil inputan dengan koordinat citra pada monitor dengan persamaan 3.2 dan persamaan 3.3 Px = ∑ 3.2 Py = ∑ 3.3 4. Hitung nilai Lintang dan Bujur citra dengan persamaan 3.4 dan persamaan 3.5, L = xi + Px 3.4 B = yi + Py 3.5 5. Hasil dari tahapan pengenalan koordinat yaitu citra baru dengan koordinat lintang dan bujur. Adapun tahapan dari penyusunan polygon bangunan bertujuan untuk membentuk urutan koordinat agar dapat di simpan sebagai tipe data vektor berbentuk polygon. Tahapan penyusunan polygon bangunan menggunakan metode Fillgrid, yaitu sebagai berikut: Panjang Piksel yang terhubung vertikal = nilai minimum panjang bangunan Universitas Sumatera Utara 1. Untuk setiap array bernilai 1, temukan array bernilai 1 yang berdekatan dengannya, seperti pada gambar 3.3. Gambar 3.3. Metode Fillgrid untuk mencari piksel bernilai 1 2. Cari piksel bernilai 1 dengan prioritas seperti pada gambar 3.4. Gambar 3.4 . Prioritas pencarian piksel bernilai 1 3. Setelah ditemukan piksel bernilai 1, pindahkan pointer pencarian ke piksel yang baru tersebut. 4. Apabila ada lebih dari satu piksel sekitar yang bernilai 1, pindahkan pointer sesuai dengan prioritas pencarian pada gambar 3.3, kemudian set nilai Boolean cabang true, dan simpan piksel cabang yang lain ke dalam array list bernama data cabang. 5. Apabila tidak ada lagi piksel bernilai 1 disekitar, dan Boolean cabang = true, kembalikan lagi pointer ke percabangan yang disimpan pada array list data cabang. 6. Ulangi mulai dari langkah 1, hingga tidak ada lagi piksel bernilai 1 pada sekitar atau piksel bernilai 1 berikutnya adalah piksel titik mulai. 7. Hasil dari tahapan penyusunan polygon bangunan adalah polygon bangunan yang siap untuk disimpan sebagai data vektor geografis. � � � � � � � � � � � � � � � � � � � � � � 1 2 3 4 5 6 7 8 Universitas Sumatera Utara Start not_terminated=true,c lasses,lowerbounds,up perbounds,bins,mean, histogram,changedPixel Index = 0 mean = 255 bins-1index NO Index++ Index bins YES i=0 NO Lowerbounds[i]=Math.maxmean + classes.geti.getMean2, currentBound; Upperbounds[i]= Math.minmean + classes.geti.getMean2, currentBound currentBound=0 currentBound=255 i classes.size i=0 h=0 w=0 greyValue = image .getRGBw, h.getRed; histogram[greyvalue] +=1 w++ wimage.getWidth YES h++ NO wimage.getHeight YES i++ YES NO i classes.size i++ YES i=0 NO C=lowerbound Counter+= histogram[i] tempMean+= histogram[i]+c C++ C=upperbound Mean = tempMean counter NO YES classes.geti. mean = mean changedPixel=0 Not_terminated = false; YES NO Not_terminated = true YES i=0 C = Math.maxcMean + classes.geti.getMea n2, 0 C lowerbounds[i] J=c YES Changed+= histogram[j[ j++ Jlowerbounds[i] YES NO C lowerbounds[ i] j = lowerbounds[i] YES changed+= histogram[j] J++ Jc YES changedPixels = changed; NO Stop NO NO NO Gambar 3.5 Flowchart tahapan segmentasi menggunakan metode k-means clustering Universitas Sumatera Utara Start Matriks,image a=0 b=0 count = 0 c = 0 d = 0 matriks[count] = image.getRGBa+c,b+d count++ d=3 YES d++ c++ NO c=3 YES a=0 NO b = a+1 matriks[a]matriks[b] temp = matriks[a] array[a] = array[b] array[b] = temp YES b++ bmatriks.length YES a++ NO amatriks.length YES image.setRGBa+1, b+1, matriks[8] NO Stop NO Gambar 3.6 Flowchart tahapan median filtering Universitas Sumatera Utara Start minWidth, minHeight, cekKiri, cekKanan,arr[][], status,w,h,a,b w=0 h=0 red = new Colorimage.getRGB w, h.getRed red =0 threshold =68; alpha = new Colorimage.getRGBw, h.getAlpha red threshold arr[h][w] = 1 YES arr[h][w] = 0 NO himage.getHeight h++ w++ NO YES wimage.getWidth b=0 NO YES A Gambar 3.7. Flowchart tahapan pengenalan ciri bangunan Universitas Sumatera Utara A w++ wimage.getWidth b=0 NO a=0 cekKanan=0; cekKiri=0; arr[b][a]=1 arr[b][max0,a-1]=1 YES kiri = max0,a-minWidth YES arr[b][a]=arr[b][kiri] arr[b][kiri+1]=1 cekKiri++ YES B NO NO YES Gambar 3.7. Flowchart tahapan pengenalan ciri bangunan lanjutan Universitas Sumatera Utara B a=0 cekKanan=0; cekKiri=0; arr[b][a]=1 arr[b][max0,a-1]=1 YES kiri = max0,a-minWidth YES arr[b][a]=arr[b][kiri] arr[b][kiri+1]=1 cekKiri++ YES kiri++ kirimax0,a YES NO arr[b][minarr[b].length- 1,a+1]==1 kanan = minarr[b].length- 1,a+minWidth YES arr[b][a]==arr[b][kanan] arr[b][kanan-1]==1 cekKanan++; YES kanan-- kanana YES cekAtas=0,cekBawah=0 NO status = Aman YES YES NO NO NO NO D E C Gambar 3.7. Flowchart tahapan pengenalan ciri bangunan lanjutan Universitas Sumatera Utara cekKanan+cekKiri+1 minWidth status = Mencurigakan YES y=max0,b-minHeight status.equalsMencurigakan arr[y][a]==1 YES x=max0,a-minWidth YES arr[y][x]==1 cekAtas++; YES xa x++ YES x=minarr[b].length- 1,a+minWidth NO arr[y][x]==1 cekAtas++ YES x-- xa YES NO status = Dihapus arr[b][a]=0 NO NO NO F NO C Gambar 3.7. Flowchart tahapan pengenalan ciri bangunan lanjutan Universitas Sumatera Utara y=minarr.length-1,b+minHeight cekBawah = 0 status.equalsMencurigakan arr[y][a]==1 YES x=max0,a-minWidth YES arr[y][x]==1 cekBawah++ YES x++ xa YES x=minarr[b].length- 1,a+minWidth NO arr[y][x]==1 cekBawah++ YES x-- xa YES NO NO YES I NO NO NO D G H Gambar 3.7. Flowchart tahapan pengenalan ciri bangunan lanjutan Universitas Sumatera Utara status = dihapus cekAtas + cekBawah minWidth YES arr[b][a]=0; status = dihapus arr[b][a]=0 y-- yb a++ NO aarr[b].length b++ NO barr.length J NO G E F I YES H cekAtas minHeight NO Gambar 3.7. Flowchart tahapan pengenalan ciri bangunan lanjutan Universitas Sumatera Utara J status =aman NO a=0 cekAtas = 0 cekBawah = 0 arr[a][b]==1 arr[max0,a-1][b]==1 YES atas=max0,a- minHeight YES arr[a][b]==arr[atas][b] cekAtas++ YES atas++ atasa YES arr[minarr.length- 1,a+1][b]==1 NO bawah = minarr.length- 1,a+minHeight YES arr[a][b]==a rr[bawah][b] cekBawah++ YES bawah-- bawaha YES status = mencurigakan NO cekAtas + cekBawah +1minHeight YES cekKiri=0 cekKanan=0 kiri = max0,b- minWidth2 b=0 J K L M NO NO NO Gambar 3.7. Flowchart tahapan pengenalan ciri bangunan lanjutan Universitas Sumatera Utara J arr[max0,a- 1][kiri]==1 atas = max0,a- minHeight YES arr[a][kiri]==ar r[atas][kiri] cekKiri++ atas++ atasa YES NO bawah = minarr.length- 1,a+minHeight arr[minarr.length- 1,a+1][kiri]==1 YES arr[a][b]==a rr[bawah][b] cekKiri++ YES bawah-- bawaha YES cekKiri minHeight NO arr[a][b]=0 YES status =dihapus kanan = minarr[0].length- 1,b+3 NO cekKanan minHeight arr[a][b]=0 status = dihapus YES kanan-- kananb YES NO NO NO NO K Gambar 3.7. Flowchart tahapan pengenalan ciri bangunan lanjutan Universitas Sumatera Utara status = hapus a++ aarr.length b++ NO barr[0].length y=0 YES x=0 arr[y][x]=1 hasil.setRGBx,y, 0 YES x++ xarr[y].length YES y++ NO yarr.length YES Stop NO K L M NO NO Gambar 3.7. Flowchart tahapan pengenalan ciri bangunan lanjutan Universitas Sumatera Utara Start x,y,data, dataDigit, lon,lat Datadigit.add x, y,lon,lat x=0 projectionX += dataDigit.getx .getLongit ude-data.getX projectionY += dataDigit.getx. getLatitude +convertYdata.getY x++ xdataDigit.size YES projectionX = projectionX dataDigit.size NO projectionY = projectionY dataDigit.size x=0 lon = dataDigit.getx. getX+p rojectionX lat = dataDigit.getx.getY+pro jectionX Stop Gambar 3.8 Flowchart tahapan pengenalan koordinat Universitas Sumatera Utara Start startX,startY,tempX,tempY,ketemu ,count=0,posisi = 10000,arr[startY][startX]= 0,data,w,h,red,alpha,cabang w=0 h=0 red = new Colorimage.getRGB w, h.getRed red =0 threshold =68; alpha = new Colorimage.getRGBw, h.getAlpha red threshold arr[h][w] = 1 YES arr[h][w] = 0 NO himage.getHeight h++ w++ NO YES wimage.getWidth YES cabang = arr[maxtempY- 1,0][tempX]+arr[tempY][mintem pX+1,arr[tempY]. length -1] NO cabang +=arr[minarr. length - 1,tempY+1][tempX]+arr[tempY][ max0,tempX-1] cabang += arr[maxtempY- 1,0][minarr[0]. length - 1,tempX+1]+arr[mintempY+1,a rr. length - 1][minarr[0]. length - 1,tempX+1] cabang += arr[mintempY+1,arr. length - 1][max0,tempX- 1]+arr[maxtempY- 1,0][max0,tempX-1] cabang 1 arr[maxtempY- 1,0][tempX]==1 YES data.addnew dataArraytempX,m axtempY-1,0 YES NO NO A Gambar 3.9 Flowchart tahapan penyusunan polygon bangunan Universitas Sumatera Utara arr[tempY][mintem pX+1,arr[tempY].l ength-1]==1 data.addnew dataArraymintempX +1,arr[tempY].leng th-1,tempY YES arr[minarr. length - 1,tempY+1][tempX]==1 NO data.addnew dataArraytempX ,minarr.length -1,tempY+1 YES arr[tempY][max 0,tempX-1]==1 NO data.addnew dataArraymax0 ,tempX- 1,tempY YES arr[maxtempY- 1,0][minarr[0]. length - 1,tempX+1]==1 NO data.addnew dataArrayminarr[ 0].length- 1,tempX+1,maxtem pY-1,0 YES arr[mintempY+1,arr. length -1][minarr[0]. length - 1,tempX+1]==1 NO data.addnew dataArrayminarr[0].l ength- 1,tempX+1,mintempY+1 ,arr.length-1 YES arr[mintempY+1,arr. lengt h -1][max0,tempX-1]==1 NO data.addnew dataArraymax0,tempX- 1,mintempY+1,arr.leng th-1 YES arr[maxtempY- 1,0][max0,tempX- 1]==1 NO data.addnew dataArraymax0,tempX -1,maxtempY-1,0 YES STOP NO A Gambar 3.9 Flowchart tahapan penyusunan polygon bangunan lanjutan Universitas Sumatera Utara

3.3 General Architecture