DAFTAR PUSTAKA
Acharya, T., & Ray, A. K. 2005.
Image Processing Principles And Applications
.
Canada : John Wiley & Sons Inc., Hooboken, New Jersey.
Ambler, S. W. 2005.
The Elements of UML
™
2.0 Style
. Cambridge University Press:
Cambridge.
Barus, O. 2011.
Identifikasi Tepi Citra Menggunakan Algoritma Sobel Edge
Detection
. Skripsi. Universitas Sumatera Utara.
Chaudari, R., & Patil, A. M. 2012. Content Based Image Retrieval Using Color And
Shape Features.
International Journal of Advanced Research In Electrical,
Electronics, And Instrumental Engineering
1(5) : 386-392.
Gonzalez, R.C., Woods R.E., & Eddins S.L. 2004.
Digital Image Processing Using
Matlab
. Pearson Prentice Hall, New Jersey.
Hastuti, I., Hariadi, M., & Purnama, I. K. E. 2009. Content Based Image Retrieval
Berdasarkan Fitur Bentuk Menggunakan Metode Gradient Vector Flow
Snake.
Prosiding Seminar Nasional Informatika 2009 (SEMNASIF 2009)
,
pp. 140-145.
Jadhav, S. H., & Ahmed, S. A. 2012. A Content Based image Retrieval System Using
Homogeneity Feature Extraction From Recency-based Retrieved Image
Library.
IOSR Journal of Computer Engineering
7(6) : 13-24.
Karimah, F., U. 2014.
Rancang Bangun Aplikasi Pencarian Citra Batik Besurek
Berbasis Tekstur dengan Metode Gray Level Co-occurance Matrix dan
Euclidean Distance
. Skripsi. Universitas Bengkulu.
Karmilasari & Sumarna, A. 2011. Temu Kenali Citra Berbasis Konten Warna.
Prosiding Seminar Nasional Aplikasi Teknologi Informasi 2011 (SNATI 2011)
,
pp. 112-117.
Khair, O. F. 2013.
Analisis Perbandingan Pendeteksian Tepi Citra dengan Operator
Sobel, Operator Prewitt, dan Operator Modifikasi Sobel
. Skripsi. Universitas
Sumatera Utara.
Kusumaningsih, I. 2009.
Ekstraksi Ciri Warna, Bentuk dan Tekstur Untuk Temu
Kembali Citra Hewan
. Skripsi. Institut Pertanian Bogor.
Larasati, T., Hidayat, B., & Novianty, A. 2012.
Analisis dan Simulasi Image Retrieval
Berdasarkan Ciri Warna Dengan Metode Wavelet
. Skripsi. Institut Teknologi
Telkom Bandung.
Long, F., Zhang, H., & Feng, D. D. 2003.
Fundamentals of Content Based Image
Retrieval,
Technological Fundamentals and
Applications
. NewYork:
Springer-Verlag.
Putranto, B. Y. B., Hapsari, W., & Wijana, K. 2010. Segmentasi Warna Citra dengan
Deteksi Warna HSV Untuk Mendeteksi Objek.
Jurnal Informatika
6(2) : 1-14.
Rakhmawati, & Puji R. 2013.
Sistem Deteksi Bunga Menggunakan Nilai HSV dari
Citra Mahkota Bunga
. Skripsi. Universitas STIKBANK.
Rapianti, C.L. 2011.
Sistem Informasi Apotek Sehat Farma Langkat
. Skripsi.
Universitas Sumatera Utara.
Sebayang, A. M. S. 2014.
Implementasi Kombinasi Beaufort Cipher dan Affine Cipher
pada Three-Pass Protocol untuk Pengamanan Data
. Skripsi. Universitas
Sumatera Utara.
Setiawan, A. E. 2011.
Perbandingan Content Based Image Retrieval dengan Fitur
Warna Menggunakan Metode Colour Histogram dan Fitur Tekstur
Menggunakan Metode Grey Level Co-Occurence Matrices
. Skripsi.
Universitas Sumatera Utara.
Sutoyo, T., Mulyanto, E., Suhartono, V., Nurhayati, O. D. & Wijanarto. 2009.
Teori
Pengolahan Citra Digital
. ANDI: Yogyakarta.
Syarif, H. 2014.
Content Based Image Retrieval Berbasis Color Histogram Untuk
Pengklasifikasian Ikan Koi Jenis Kohaku
. Skripsi. Universitas Dian
Nuswantoro Semarang.
Vairalkar, M. K., Nimbhorkar, S. U. 2012. Edge Detection of Images Using Sobel
Operator.
International Journal of Emerging Technology and Advanced
Engineering
2(1) : 291-293.
Whitthen, e
t al
. 2004. Metode Desain & Analisis Sistem. Edisi 6. New York :
McGraw-Hill.
Wijaya, E. 2012.
Analisis Intensitas Metode Pendeteksian Tepi Sobel.
Jurnal
Komputer dan Informatika (KOMPUTA)
1(1) : 25-27.
LISTING PROGRAM
1.
Class sobelMatch.java
import java.awt.image.BufferedImage; import java.io.File;
import java.io.FileOutputStream; import java.io.IOException;
public final class sobelMatch {
public String getValueSobel(File fileImage) throws IOException { String integralPro = "";
double Gx[][], Gy[][], alphaG[][], rgbG[][];
File fileImg = new File(fileImage.getAbsolutePath()); BufferedImage getImg = ImageIO.read(fileImg);
int height = getImg.getHeight(); int width = getImg.getWidth();
int intPro[][] = new int[width][height];
BufferedImage outImg = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
int[][] alphaGrayValue = new int[width][height]; int[][] rgbGrayValue = new int[width][height]; for(int i=0; i<width; i++){
for(int j=0; j<height; j++){ int pixel = getImg.getRGB(i, j); int a = (pixel>>24)&0xff;
int r = (pixel>>16)&0xff; int g = (pixel>>8)&0xff; int b = pixel&0xff;
alphaGrayValue[i][j] = a;
rgbGrayValue[i][j] = (r+g+b)/3; }
}
Gx = new double[width][height]; Gy = new double[width][height]; alphaG = new double[width][height]; rgbG = new double[width][height]; for (int i=0; i<width; i++) { for (int j=0; j<height; j++) {
if (i==0 || i==width-1 || j==0 || j==height-1) Gx[i][j] = Gy[i][j] = alphaG[i][j] = rgbG[i][j] = 0;
else{
Gx[i][j] = alphaGrayValue[i+1][j-1] + 2*alphaGrayValue[i+1][j] +
alphaGrayValue[i+1][j+1]
- alphaGrayValue[i-1][j-1] - 2*alphaGrayValue[i-1][j]
Gy[i][j] = alphaGrayValue[i-1][j+1] + 2*alphaGrayValue[i][j+1] +
alphaGrayValue[i+1][j+1]
- alphaGrayValue[i-1][j-1] - 2*alphaGrayValue[i][j-1]
- alphaGrayValue[i+1][j-1]; alphaG[i][j] =
Math.abs(Gx[i][j])+Math.abs(Gy[i][j]);
Gx[i][j] = rgbGrayValue[i+1][j-1] +
2*rgbGrayValue[i+1][j] + rgbGrayValue[i+1][j+1] - rgbGrayValue[i-1][j-1] - 2*rgbGrayValue[i-1][j] - rgbGrayValue[i-1][j+1];
Gy[i][j] = rgbGrayValue[i-1][j+1] +
2*rgbGrayValue[i][j+1] + rgbGrayValue[i+1][j+1] - rgbGrayValue[i-1][j-1] - 2*rgbGrayValue[i][j-1] - rgbGrayValue[i+1][j-1];
rgbG[i][j] = Math.abs(Gx[i][j]) + Math.abs(Gy[i][j]);
}
int NewColor = ((int)alphaG[i][j]<<24) |
((int)rgbG[i][j]<<16) | ((int)rgbG[i][j]<<8) | (int)rgbG[i][j]; outImg.setRGB(i, j, NewColor);
} }
FileOutputStream outFile = new
FileOutputStream("sobel"+fileImage.getName()); ImageIO.write(outImg, "jpg", outFile); for(int i=0 ; i<width ; i++){
int temp = 0;
for(int j=0 ; j<height ; j++){ temp += intPro[i][j]; }
}
for(int i=0 ; i<height ; i++){ int temp=0;
for(int j=0 ; j<width ; j++){ temp += intPro[j][i]; }
if(i==height-1)
integralPro += Integer.toString(temp); else
integralPro += Integer.toString(temp)+" "; }
return integralPro; }
2.
Class hsvMatch.java
import java.awt.image.BufferedImage; import java.io.File;
import java.io.IOException; import java.text.DecimalFormat; import java.text.NumberFormat;
public class hsvMatch {
public double[] getValueHSV(File fileImg) throws IOException{ double[] result = new double[162];
NumberFormat nf =
NumberFormat.getNumberInstance(Locale.getDefault()); DecimalFormat df = (DecimalFormat) nf;
df.applyPattern("#.#####"); Arrays.fill(result, 0); double[] hBinValue = {
0.00000,0.00000,0.00000,0.00000,0.00000,0.00000,0.00000,0.00000,0.000 00,
0.05882,0.05882,0.05882,0.05882,0.05882,0.05882,0.05882,0.05882,0.058 82,
0.11765,0.11765,0.11765,0.11765,0.11765,0.11765,0.11765,0.11765,0.117 65,
0.23529,0.23529,0.23529,0.23529,0.23529,0.23529,0.23529,0.23529,0.235 29,
0.29412,0.29412,0.29412,0.29412,0.29412,0.29412,0.29412,0.29412,0.294 12,
0.35294,0.35294,0.35294,0.35294,0.35294,0.35294,0.35294,0.35294,0.352 94,
0.41176,0.41176,0.41176,0.41176,0.41176,0.41176,0.41176,0.41176,0.411 76,
0.47059,0.47059,0.47059,0.47059,0.47059,0.47059,0.47059,0.47059,0.470 59,
0.52941,0.52941,0.52941,0.52941,0.52941,0.52941,0.52941,0.52941,0.529 41,
0.58824,0.58824,0.58824,0.58824,0.58824,0.58824,0.58824,0.58824,0.588 24,
0.70588,0.70588,0.70588,0.70588,0.70588,0.70588,0.70588,0.70588,0.705 88,
0.76471,0.76471,0.76471,0.76471,0.76471,0.76471,0.76471,0.76471,0.764 71,
0.82353,0.82353,0.82353,0.82353,0.82353,0.82353,0.82353,0.82353,0.823 53,
0.88235,0.88235,0.88235,0.88235,0.88235,0.88235,0.88235,0.88235,0.882 35,
0.94118,0.94118,0.94118,0.94118,0.94118,0.94118,0.94118,0.94118,0.941 18,
1.00000,1.00000,1.00000,1.00000,1.00000,1.00000,1.00000,1.00000,1.000 00
};
double[] sBinValue = {
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00,
0.00000,0.00000,0.00000,0.50000,0.50000,0.50000,1.00000,1.00000,1.000 00
};
double[] vBinValue = {
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
0.00000,0.50000,1.00000,0.00000,0.50000,1.00000,0.00000,0.50000,1.000 00,
};
BufferedImage getImg = ImageIO.read(fileImg); int height = getImg.getHeight();
int width = getImg.getWidth();
BufferedImage outImg = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
int counter=0;
for(int i=0; i<width; i++){ for(int j=0; j<height; j++){
int pixel = getImg.getRGB(i, j); double a = (pixel>>24)&0xff; double r = (pixel>>16)&0xff; double g = (pixel>>8)&0xff; double b = pixel&0xff;
double r1 = Double.valueOf(df.format(r/255)); double g1 = Double.valueOf(df.format(g/255)); double b1 = Double.valueOf(df.format(b/255)); double cMax = Math.max((Math.max(r1, g1)), b1); double cMin = Math.min((Math.min(r1, g1)), b1); double delta = Double.valueOf(df.format(cMax - cMin));
vValue = cMax*100.0; if(cMax == 0){ sValue = 0; }
else{
sValue = (delta/cMax)*100; }
if(delta==0){ hValue = 0.0; }
else{
if(cMax == r1){
hValue = 60*( ((g1-b1)/delta)%6 ); }
else if(cMax == g1){
hValue = 60*( ((b1-r1)/delta)+2 ); }
else if(cMax == b1){
hValue = 60*( ((r1-g1)/delta)+4 ); }
else{
hValue = 0.0; }
}
if(hValue<0){ hValue+=360.0; }
hValue = Double.valueOf(df.format(hValue)); sValue = Double.valueOf(df.format(sValue)); vValue = Double.valueOf(df.format(vValue)); hValue = Math.round(hValue*18/360);
sValue = Math.round(sValue*3/100); vValue = Math.round(vValue*3/100);
hValue = Double.valueOf(df.format(hValue/17)); sValue = Double.valueOf(df.format(sValue/2)); vValue = Double.valueOf(df.format(vValue/2)); if(sValue>1.00000){
sValue=1.0; }
if(hValue>1.00000){
hValue = Double.valueOf(df.format(hValue - 1.00000));
}
if(vValue>1.00000){ vValue=1.0; }
boolean found=false;
break; }
} } } } }
double temp=0;
for(int i=0 ; i<162 ; i++){
System.out.println("Bin ke-"+(i+1)+" Nilai Kuantisasi="+result[i]); result[i]=Double.valueOf
(df.format(result[i]*100/(width*height))); }
return result; }
}
3.
Class euclideanDistance.java
import java.text.DecimalFormat; import java.util.Locale;
public class euclideanDistance { NumberFormat nf =
NumberFormat.getNumberInstance(Locale.getDefault()); DecimalFormat df = (DecimalFormat) nf;
public double matchSobelValue(String val1, String val2){ double result=0, max;
double var1, var2, temp=0;
String[] perDig1 = val1.split(" "); String[] perDig2 = val2.split(" "); if(perDig1.length >= perDig2.length) max = perDig1.length;
else
max = perDig2.length; for(int i=0 ; i<max ; i++){ if(i>perDig1.length-1){ var1 = 0;
} else{
var1 = Integer.parseInt(perDig1[i]); }
if(i>perDig2.length-1){ var2 = 0;
} else{
temp += Math.pow(var1-var2,2); }
return result; }
public double matchHSVValue(double[] val1, double[] val2){ df.applyPattern("#.#####");
double result, temp=0;
for(int i=0 ; i<val1.length ; i++){ temp+=Math.pow(val1[i]-val2[i], 2); }
result = Double.valueOf(df.format(Math.sqrt(temp))); return result;
} }
4.
Class dbConnection.java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;
public class dbConnection {
private Connection DBConnection; public Connection connect() { try {
Class.forName("org.sqlite.JDBC");
System.out.println("Connection Success"); } catch(ClassNotFoundException cnfe) {
System.out.println("Connection Fail" + cnfe); }
try {
DBConnection =
DriverManager.getConnection("jdbc:sqlite:db_cbir.sqlite"); System.out.println("Database Connected"); } catch (SQLException se) {
System.out.println("No Database" + se); }
return DBConnection; }
}
D
AFTAR
R
IWAYAT
H
IDUP
C
URRICULUMV
ITAEDATAPRIBADI
Nama Lengkap : Rafika Asnur Lubis
Tempat / Tgl. Lahir : Kisaran / 27 September 1993
Jenis Kelamin : Perempuan
Agama : Islam
Kebangsaan : Indonesia
Alamat : Jalan Pembangunan USU No.12 Medan
Telepon : +6285270589027
Tinggi / Berat : 159 cm / 48 kg
Email : rafika.asnur@gmail.com
KEMAMPUAN
Bahasa : Bahasa Indonesia, Bahasa Inggris
Bahasa Pemrograman : Java, PHP
Database : MySQL, SQLite
Lainnya : HTML, CSS, Photoshop, Ms. Office, Adobe Flash
PENDIDIKANFORMAL
[ 2011
–
2015 ]
“Implementasi Content Based Image Retrieval Berbasis Fitur Bentuk dan Warna Menggunakan Operator Sobel dan Deteksi Warna HSV”
S1 Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara
[ 2008
–
2011 ]
SMA Negeri 1 Kisaran
[ 2005
–
2008 ]
SMP Negeri 1 Kisaran
[ 1999
–
2005 ]
SD Swasta Diponegoro Kisaran
[ 1997
–
1999 ]
PENDIDIKANNON-FORMAL
[ 2006
–
2008 ]
Lembaga Bimbingan Belajar Primagama, Kisaran.
[ 2008
–
2010 ]
Lembaga Bimbingan Belajar Medica, Kisaran.
[ 2010
–
2011 ]
Lembaga Bimbingan Belajar Ganesha Operation, Kisaran.
PENGALAMANORGANISASIDANRIWAYATKEPANITIAAN
Anggota Konsumsi PHBI Al-Luqman SMA Negeri 1 Kisaran [2009 - 2011]
Anggota Keputrian UKMI Al-Khuwarizmi Fasilkom-TI USU
[2012 - 2013]
Anggota Konsumsi di PORSENI IMILKOM [2013]
Anggota Humas di Penerimaan Mahasiswa Baru S1 Ilmu Komputer USU [2013]
PENGALAMANKERJA
Praktek Kerja Lapangan di Bank Indonesia, Medan [2014]
PELATIHAN/TRAINING&WORKSHOP
Peserta Workshop Membuat Desain Media Publikasi Poster, UKMI Al-Khuwarizmi Fasilkom-TI
USU, Medan [2012]
Peserta Workshop Linux Installation & Configure the Application, Kelompok Study Linux USU,
Medan [2012]
Peserta Workshop Pengenalan Android,Artechno Festival, Medan [2011]
Peserta Workshop Animation for Fun, Artechno Festival, Medan [2011]
Peserta Workshop Animation Revolution, DreamArch Animation, Medan [2011]
SEMINAR
Peserta Seminar Nasional Literasi Informasi (SENARAI), FASILKOM-TI USU, Medan [2014]
Peserta Seminar Mengubah Persepsi Profesional Indonesia di Global Market, HIMATIF USU,
Medan [2014]
Peserta Seminar Nasional “Creative Animation & Gaming Industry”, HIMATIF USU, Medan
[2013]
Peserta Seminar Motivasi “We Can Speak English Now!”, SGC USU, Medan [2013]
Peserta Seminar Nasional “Teknologi Cloud Computing dalam Menghadapi Persaingan Global”,