• Tidak ada hasil yang ditemukan

Pada proses ini metode data berjenis data primer yaitu data berasal dari pengembilan langsung dilokasi serta pengambilan dilakukan oleh peneliti dan dengan waktu insidentil pengambilan waktu tidak ditentukan. Proses ini dilakukan dengan melakukan perekaman terhadap jalan raya .Pengambilan data RHK digunakan kamera digital yang dilengkapi dengan mounting kamera yang telah dimodifikasi agar dapat menempel pada helm. Pada proses ini terdapat beberapa perangkat yang digunakan untuk mengambil data. Berikut adalah peralatan yang dipakai pada pengambilan data

1.Kamera Digital 2.Mount camera 3.Helm

4.Kendaraan bermotor

Gambar 3.2.Perangkat pendukung pengambilan data citra

Proses pengambilan data melewati jalan – jalan yang terdapat pada daerah Purwokerto. Data yang didapat dari kamera berupa data video. Setelah didapat data video dilakukan akusisi menggunakan perangkat lunak yang terdapat pada windows yaitu sniping tools. Berikut merupakan jalan yang dilalui untuk mendapatkan data RHK

No Nama Jalan 1 Jl. Jendral Soedirman (Museum BRI) - Jl. Ajibarang Secang 2 Jl. Mayjend Sutoyo 3 Jl. Supriyadi 4 Jl. Adipati Mersi 5 Jl. Martadireja II 6 Jl. Martadireja I

7 Jl. Jendral Gatotsubroto(polsek purwokerto timur)- Jl. Jendral Gatotsubroto(pasar manis) 8 JL RA Wirya Atmaja

9 Jl. Mayjend Sutoyo 10 Jl Masjid - Jl A. Yani

11 Jl Dr Angka - Jl Prof. Dr. Suharso Tabel 3.1 Tabel nama jalan 3.3 PERANCANGAN SISTEM

Pada bagian ini akan digambarkan mengenai rancangan sistem yang terdiri dari preprocessing citra sampai proses proses pendeteksian garis menggunakan hough transform. Rancangan penelitian ini merupakan gambaran sistem dari proses penelitian ini, kode yang digunakan pada penelitian ini adalah bahasa pemprogaman python serta matlab untuk menambahkan sajian grafik pada hasil hough transform. Proses pada penelitian akan disajikan dengan flowchart. Pada penelitian ini melibatkan fungsi matematika yang dapat diterapkan pada pengolahan citra serta modul tambahan yang terdapat pada bahasa pemprogaman python yang bernama opencv. Berikut adalah rancangan sistem secara umum 1. Racangan sistem secara umum

Pada bagian ini diberikan gambaran secara menyeluruh mengenai tahapan preprocessing hingga pendeteksian garis menggunakan hough transform berikut alurnya

23

Gambar 3.3 Diagram alir proses secara umum

Pada bagian ini akan diberikan gambaran alur mengenai proses tahap pendeteksian menggunakan hough transform

Gambar 3.4 diagram alir pada proses hough transform

3.3.1Proses input citra

Tahap ini merupakan proses awal dari sistem yaitu melakukan pembacaan citra yag akan diproses di proses selanjutnya, berikut adalah kode input citra file_path = "images/datavid/data31.jpg"

img_color = cv2.imread(file_path)

Pada input citra dilakukan penentuan terhadap lokasi dari file yang diinginkan, dapat dilihat pada kode “file_path ="images/datavid/data31.jpg "” variable

file_path” berisi alamat citra yang diinginkan .Setelah itu pada variable

img_color” terdapat “cv2.imread ”yang akan memerintahkan untuk melakukan pembacaan terhadap citra. pada proses ini citra yang digunakan adalah citra dengan format .jpg

3.3.2proses preprosessing

Tahap ini merupakan proses melakukan preprosessing terhadap citra yaitu melakukan penyederhanaan terhadap citra. Kode proses disajikan seperti sebagai berikut

Python: cv.CvtColor(src, dst, code) → None

img_gs = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.cvtColor() = sebagai proses merubah warna citra

cv2.COLOR_BGR2GRAY = sebagai jenis perubahan warna citra RGB ke abu - abu

Python: cv2.blur(src, ksize ) img_blur = cv2.blur(img, (5, 5))

cv2 blur = proses penambahan derau gausian

ksize = ukuran kernel yang akan dikonvolusi kan dengan citra

Python: cv2.Canny(image, edges, threshold1, threshold2, aperture_size=3) img_edge = cv2.Canny(img, 100, 150, 3) # Edge detection

25

cv2.canny = proses dilakukan edge detection

aperature_size = merupakan ukuran matrix sobel yang dikonvolusikan terhadap citra

threshold1, threshold2 = merupakan batas atas dan bawah pada proses hysteresis procedure.

Proses disini diawali dengan membuat citra berwarna menjadi citra abu – abu dengan menggunakan kode “cv2.cvtColor” dengan jenis kode perubahannya adalah

“cv2.COLOR_BGR2GRAY”. Setelah itu dilakukan proses penambahan derau yaitu blur. Proses ini dilakukan dengan menggunakan kode cv2.blur. pada kode in kernel gausian yang digunakan sebesar 5x5 .

3.3.3Proses hough transform

Setelah proses canny proses selanjutnya adalah proses hough transform.

Pada proses ini bagian citra edge akan terdeteksi dengan menggunakan tranformasi hough. Berikut adalah blok kode pemprosesan hough

1def hough_transform(self): math.sin(math.radians(t)) # r = x.cos(θ) + y.sin(θ)

12 self.accumulator.increment(r + hough_h, t)

Pada blok kode ini terdapat data edge dan fungsi pada kode ini berulang pada seluruh pixel pada citra edge dan menambah akumulator pada (r, θ) yang dihitung.

Pada code “self.accumulator = Accumulator(180, hough_h * 2.0)” merupakan akumulasi dengan nilai r untuk nilai θ = {1...180} sehingga mempunya penempatan data sejumlah 180. Pada kode 6 sampai 12 terdapat fungsi yang diulang pada setiap titik pada citra edge detection dan perhitungan untuk r untuk setiap nilai θ

1.def detect(self, threshold):

2 if self.accumulator == None:

3 return [] math.sin(rad) + img_h/2

16 x2 = img_w - 0

17 y2 = ((r - accu_h/2) - (x2 - img_w/2) * math.cos(rad)) / math.sin(rad) + img_h/2

18 else:

19 # x = (r - y sin(t)) / cos(t)

27

20 y1 = 0

21 x1 = ((r - accu_h/2) - (y1 - img_h/2) * math.sin(rad)) / math.cos(rad) + img_w/2

22 y2 = img_h - 0

23 x2 = ((r - accu_h/2) - (y2 - img_h/2) * math.sin(rad)) / math.cos(rad) + img_w/2

24 lines.append(((int(x1), int(y1)), (int(x2), int(y2)))) 25 return lines

Setelah dilakukan pengulangan akumulator terhadap pada setiap penempatan nilai yang angkanya melebihi atau pada nilai batas. Pada blok kode ini dilakukan local maxima. Proses local maxima adalah tahap mencari nilai tertinggi. Pada blok ini koordinat garis yang terdeteksi berupa r dan θ, setelah koordinat r dan θ diasumsikan benar dilakukan komputerisasi menjadi jarak pada citra

1 detector.hough_transform() 2 lines = detector.detect(175) 3 print("Lines: {}".format(lines)) 4 img_res = img_color.copy() 5 for l in lines:

6 cv2.line(img_res, l[0], l[1], (0, 0, 255), 2, 8)

Pada blok code ini dilakukan penggambaran letak titik yang telah di dihitung dan dilakukan pendeteksian terhadap garis. Pada modul opencv terdapat fungsi yang dapat melakukan penggambaran garis terhadap citra dengan syntax berikut

python cv2.line(image, start_point, end_point, color, thickness

B AB 4

H ASIL D A N PE M B A H AS A N

Pada bab ini akan dibahas mengenai hasil dari proses yang dilakukan dari hasil hasil preprosessing hingga hasil hough transform. Hasil pada bab ini berupa citra terproses yang akan ditapilkan pada bagian berikut

4.1 HASIL PROSES GRAYSCALE

Proses awal hough transform merupakan proses preprocessing yaitu proses penyederhanaan citra agar lebih mudah di proses. Pada gambar 4.xx merupakan hasil dari proses grayscale , dari gambar 4.1 dapat disimpulkan bahwa pada pemprosesan citra berwarna ke citra abu abu berhasil dengan perubahan warna pada citra yang awalnya RGB menjadi citra abu abu

(a) (b)

Gambar 4.1 Citra asli (a),citra setelah melalui proses grayscale (b) 4.2 HASIL PROSES BLUR

Proses ke-2 pada proses preprosesing adalah blur yaitu melakukan menambahan derau pada citra yang akan mengakibatkan tampilan visual pada citra akan memudar. Pada gambar 4.2 merupakan hasil pemprosesan blur terhadap citra.

Dari hasil pada gambar 4.2 dapat diasumsikan bahwa proses ini berhasil dengan tampilan visual yang berubah yaitu dari citra proses grayscale yang terlihat jelas menjadi citra keabuan namun memudar.

29

(a) (b)

Gambar 4.2 Citra grayscale (a), citra setelah mengalami penambahan derau Gaussian (b)

4.3 HASIL PROSES CANNY

Proses terakhir pada preprocessing adalah proses canny. Yaitu proses melakukan edge detection, dengan proses ini akan terdeteksi garis batas antara warna, kontras yang berbeda pada citra. Perbedaan cahaya pada sebuah citra akan berpengaruh jika pada citra terdapat bayangan benda maka garis bayangan tersebut akan ikut terdeteksi. Pada gambar 4.3 merupakan hasil proses canny. Dari hasil yang disajikan pada gambar 4.3 dapat disimpulkan secara visual bahwa proses ini berhasil, dengan berubahnya citra yang pudar dan kebuan berubah menjadi hitam dan garis garis putih. Dapat dilihat secara visual bahwa garis putih mengikuti pola perbedaan cahaya dan warna pada citra terproses

(a) (b)

Gambar 4.3 Citra blur (a), Citra setelah mengalami proses canny (b) 4.4 Hasil

Pada proses ini akan menghasilkan pendeteksian terhadap garis RHK.

Gambar 4.4 merupakan hasil sebelum dilakukan pendeteksian yaitu hasil pendeteksian tepi dan gambar 4.4 merupakan hasil proses hough transform. Dari hasil berikut dapat disimpulkan bahwa garis yang diinginkan pada RHK dapat terdeteksi

(a) (b)

Gambar 4.4.citra canny (a), citra detelah melewati hough transform (b) 4.5 Perbaikan/ percobaan pada citra

Pada bagian ini dilakukan perubahan pada citra, hasil percobaan dengan proses lengkap menghasilkan beberapa garis RHK yang tidak terdeteksi. Percobaan dilakukan dilakukan untuk mengoptimalkan pendeteksian hough transform.

Perubahan yang dilakukan pada proses preprossing. Berikut adalah beberapa percobaan pada citra yang dilakukan

1.Perubahan batas proses hysteresis

Pada proses dilakukan percobaan yaitu melakukan perubahan terhadap variable threshold yang terdapat pada kode proses canny. Pengantian nilai ini berpengaruh terhadap proses hysteresis. Perubahan ini dilakukan dengan mematok nilai paling tinggi adalah 255, karena citra proses canny menghasilkan citra hitam putih sehingga nilai maksimal adalah 255. Pada percobaan ini dilakukan perubahan nilai yang diawali pada nilai variable threshold1 100 dan nilai threshold2 150, setelah itu dilakukan penggurangan dan penambahan nilai antara 20-30. Pada gambar 4.5 perubahan pada proses canny, semakin tinggi threshold kita rubah maka tepi yang terdeteksi akan semaki sedikit sedangkan pada semakin rendah nilai

31

semakin banyak garis RHK yang awalnya tidak terdetesi edge detection menjadi terdeteksi

Gambar 4.5 citra masukan no Thresold1,

Threshold2 Hasi; citra canny 1 50,80

2 80,100 3 100,150 4 150,170

5 200,255

Tabel 4.1 hasil citra dengan perubahan threshold hysteresis

Setelah dilakukan pendeteksian tepi dilakukan terhadap hasil perubahan threshold dilakukan proses pendeteksian garis pada citra. Pada tabel 4.2 dapat ditarik kesimpulan pengaturan pada hysteresis threshold berpegaruh terhadap pendeteksian garis meski terdapat beberapa garis yang tidak sesuai dengan posisi

RHK

no Thresold1,

Threshold2 Hasi; citra canny 1 50,80

2 80,100 3 100,150 4 150,170

33

5 200,255

Tabel 4.2 Hasil perubahan variable hysteresis 2.Percobaan tanpa proses blur

Pada proses ini dilakukan kembali pendetesian garis terhadap citra edge detection tanpa blur. Dihasil sebelumnya citra menggunakan blur terdapat garis yang tidak terdeteksi. Setelah dilakukan pendeteksian dengan menggunakan hasil citra preprosessing tanpa blur menghasilkan garis yang sebelumnya tidak terdeteksi menjadi terdeteksi meski dengan kodisi citra yang terdapat sedikit derau.

Gambar 4.6 Citra input

Gambar 4.7 Hasil dengan blur

Gambar 4.8 Hasil tanpa blur

Pada Gambar 4.7 menghasilkan citra edge detection yang agak kurang dapat dilihat pada bagian bawah terdapat garis yang tidak ada. Sedangkan pada hasil citra 4.8 menghasilkan garis RHK yang cukup baik. Pada dengan blur menghasilkan garis yang lebih halus teradap objek yang diinginkan dan dapat mengantisipasi derau pada citra. Sedangkan pada hasil citra tanpa blur menghasilkan citra yang lebih tajam. Pada hasil citra masih terdapat detail gambar yang agak timbul sehingga kadang dianggap garis oleh program

Gambar 4.9 Hasil hough transform dengan blur

Gambar 4.10 Hasil Hough transform tanpa blur

35

Pada gambar 4.9 garis RHK yang terdeteksi hanya satu bagian saja sedang kan 4.10 hampir keseluruhan RHK terdeteksi pada citra. Dari hasil diatas proses blurring pada citra dapat menurunkan kemampuan hough transform dalam melakukan pendeteksian namun proses blur dapat memperhalus hasil pada hasil citra canny serta memperkecil kemungkinan derau muncul

3.Perubahan pada variable threshold hough trasform

Pada bagian ini dilakukan perubahan pada variable threshold pada hough transform.

.Sedangkan pada threshold canny tidak diubah ditetapkan pada 100 dan 150 dengan hasil yang sedang tidak terdapat noise dan terdeteksi pada tepi yang membentuk RHK. Proses ini dilakukan dengan proses percobaan berulang pada citra sehingga mendapatkan garis RHK yang sesuai, terkadang terdapat bagian yang bukan garis RHK terdeteksi. Pada hasil citra proses ini terdapat pada gambar 4.xx, dapat disimpulkan bahwa perubahan pada variable treshold hough transform ini sangat mepengaruhi pendeteksian RHK. Batas variable threshold ini berfungsi sebagai minium pendeteksian titik yang akan digunakan sebagai garis. Titik yang melewati garis tersebut akan menjadi titik voting untuk pembentukan garis. Semakin kecil nilai variable threshold maka titik yang terdeteteksi sebagai garis semakin banyak

Gambar 4.11 Hasil citra deteksi sebelum mengalami perubahan threshold

Gambar 4.12 Hasil citra deteksi setelah mengalami perubahan threshold

Pada hasil gambar 4.11 merupakan hasil citra hough transform tanpa merubah variable pada hough transform. Gambar 4.12 merupakan hasil citra setelah dilakukan perubahan variable threshold. Gambar 4.11 terdapat garis yang belum terdeteksi namun pada Gambar 4.12 berhasil mendeteksi garis tersebut. Perubahan threshold mengakibatkan titik titik pada citra yang semulanya tidak terdeteksi menjadi terdeteksi. Pada penelitian Yan Ma Junning Wang Di He dan Jinbo Pang yang berjudul “accurate line detection by adjusting Hough transform Threshold Adaptively” membahas pengaturan pada variable threshold untuk meningkatkan tingkat akurasi pada pendeteksian dan mengurangi salah deteksi pada gari. Dari penelitian diatas yang membuat peneliti melaukan percobaan dengan merubah threshold

37

B AB 5

K ESIM P U L A N D A N SAR A N

5.1KESIMPULAN

Dari percobaan yang telah dilakukan dapat diambil kesimpulan sebagai berikut 1.Pada citra hasil pendeteksian garis pada RHK menghasilkan pendeteksian yang

bagus. Pada citra yang dihasilkan berhasil mendeteksi garis – garis pada RHK.

2.Dengan analisa secara melalui hasil secara visual pada pendeteksial hough transform sudah tepat pada garis RHK. Dengan mengoptimalkan pada variable threshold hough transform dapat menurunkan salah pendeteksian .

5.2SARAN

1.Proses pengambilan data disarankan pada siang hari dengan kondisi matahari agak terik, karena bayangan mempengaruhi hasil preprosessing

2.Pada penelitian ini harus lebih hati karena garis RHK berwarna putih yang dapat mengakibatkan flare atau pantulan cahaya yang akan berefek pendeteksian 3.Pada penelitian ini harus memprediksi waktu penelitian dijalan semakin ramai

akan mengakibatkan tidak maksimal pada penelitian

4.Diharapkan pada penelitian ini menggunakan kualitas citra yang lebih baik 5.Pada penelitian selanjutnya diharapkan menggunakan perangkat kamera yang

memiliki sensor yang lebar sehingga dapat mendapatkan hasil khusus RHK yang maksimal

6.Hasil pada penelitian kali ini dapat digunakan sebagai data set pada penelitian selanjutnya. Pada penelitian selanjutnya dapat menggunakan tensorflow untuk melakukan deteksi terhadap RHK. Serta medapat melibatkan perangkat IOT untuk menunjang pada penelitian selanjutnya

D AFT A R PUST A K A

[1] R. E. Hall, B. Bowerman, J. Braverman, J. Taylor, And H. Todosow, “The Vision Of A Smart City,” 2nd Int. Life …, Vol. 28, P. 7, 2000.

[2] H. Yoo, U. Yang, And K. Sohn, “Gradient-Enhancing Conversion For Illumination-Robust Lane Detection,” Ieee Trans. Intell. Transp. Syst., Vol. 14, No. 3, Pp. 1083–1094, 2013.

[3] F. Indriani, F. Utaminingrum, And Y. A. Sari, “Deteksi Zebra Cross Pada Citra Digital Dengan Menggunakan Metode Hough Transform,” J.

Pengemb. Teknol. Inf. Dan Ilmu Komput. Univ. Brawijaya, Vol. 2, No. 6, Pp. 2374–2380, 2018.

[4] A. A. M. Assidiq, O. O. Khalifa, M. R. Islam, And S. Khan, “Real Time Lane Detection For Autonomous Vehicles,” Proc. Int. Conf. Comput.

Commun. Eng. 2008, Iccce08 Glob. Links Hum. Dev., Pp. 82–88, 2008.

[5] R. K. Satzoda, S. Sathyanarayana, T. Srikanthan, And S. Sathyanarayana,

“Hierarchical Additive Hough Transform For Lane Detection,” Ieee

Embed. Syst. Lett., Vol. 2, No. 2, Pp. 23–26, 2010.

[6] F. Mariut, C. Fosalau, And D. Petrisor, “Lane Mark Detection Using Hough Transform,” Epe 2012 - Proc. 2012 Int. Conf. Expo. Electr. Power Eng., No. Epe, Pp. 871–875, 2012.

[7] Y. Ma, J. Wang, D. He, And J. Pang, “Accurate Line Detection By Adjusting Hough Transform Threshold Adaptively,” 2010 6th Int. Conf.

Wirel. Commun. Netw. Mob. Comput. Wicom 2010, 2010.

[8] R. C. Gonzalez And R. E. Woods, Digital Image Processing Third Edition, Vol. 53, No. 9. 2008.

[9] M. Nixon And A. S. Aguado, Feature Extraction & Image Processing For Computer Vision. 2012.

39

L A M PIR A N

Data citra masukan n

o

nama Gambar

1 Data 1

2 Data 2

3 Data 3

4 Data 4

5 Data5

6 Data 6

7 Data7

8 Data8

41

9 Data9

1 0

Data1 0

1 1

Data1 1

1 2

Data1 2

43

2 3

Data2 3

2 4

Data2 4

2 5

Data2 5

2 6

Data2 6

45

Kode proses hough transformimport cv2 import numpy as np

import math import pickle

from collections import defaultdict

from abc import ABCMeta, abstractmethod

# http://www.keymolen.com/2013/05/hough-transformation-c-implementation.html

class Accumulator:

def __init__(self, w, h):

self.w = int(w)

47

self.h = int(h)

self.data = defaultdict(int)

def increment(self, r, th):

self.data[(int(r), int(th))] += 1

def is_local_maximum(self, center_r, center_th):

n = self.get(center_r, center_th)

def __init__(self, x_size, y_size, r_size):

self.x_size = int(x_size)

def hough_transform(self):

pass

49

@abstractmethod

def detect(self, threshold):

pass

class LineDetector(HoughTransform):

#The following code does the actual transformation, img_data contains the edge data.

#The function loops over all pixels in the edge image and increments the accumulator at the computed (r, θ).

def hough_transform(self):

img_h, img_w = self.image.shape

center_x, center_y = img_w/2.0, img_h/2.0

hough_h = math.sqrt(2.0) * max(img_w, img_h) / 2.0 self.accumulator = Accumulator(180, hough_h * 2.0)

#membuat accumulator untuk memilih r dan rho, tinggi maksimal tergantung dari hasil komputasi line 7

for y in range(img_h): center_y) * math.sin(math.radians(t))

# r = x.cos(θ) + y.sin(θ)

self.accumulator.increment(r + hough_h, t)

#Line 11 creates the empty accumulator, we have chosen to

compute r for θ = {1..180} so the width contain 180 bins, the maximum height depends on the image size and is computed at line 7.

#Line 17 to 30 loops over every point in the edge image and computes r for every θ at line 25, you should see r = x.cos(θ) + y.sin(θ) in that. Little extra math is added to work from the center of the image. The found accumulator bin is

incremented at line 26.

def detect(self, threshold):

#A few steps are done here; we loop over the accumulator and consider every bin which value is on or above the threshold.

Than we check if that bin is a local maxima. If we decide the line at coordinates (r, θ) is a valid one we compute them back to two points in the image space.

if self.accumulator == None:

51 math.sin(rad) + img_h/2

print("value y1 = ",y1) x2 = img_w - 0

y2 = ((r - accu_h/2) - (x2 - img_w/2) * math.cos(rad)) / math.sin(rad) + img_h/2

print("value y2 =",y2) else:

# x = (r - y sin(t)) / cos(t) y1 = 0

x1 = ((r - accu_h/2) - (y1 - img_h/2) * math.sin(rad)) / math.cos(rad) + img_w/2

print ("value x1 =",x1) y2 = img_h - 0

x2 = ((r - accu_h/2) - (y2 - img_h/2) * math.sin(rad)) / math.cos(rad) + img_w/2

print ("value x2 =",x2)

lines.append(((int(x1), int(y1)), (int(x2), int(y2))))

return lines

#We loop over the accumulator at line 8 - 10, we check if the value of a bin is on or above our threshold at line 12,

#if so we check if this point is a local maxima at line 14 - 32.

#If we have a valid line the (r, θ) coordinates are computed back to two points in image space at lines 34 - 52. The results are store in a vector at line 54.

class CircleDetector(HoughTransform):

RMAX = 1000

def hough_transform(self):

img_h, img_w = self.image.shape

53

def save_accumulator(self, file_name="accumulator.pkl"):

with open(file_name, "wb") as f:

pickle.dump(self.accumulator, f)

def load_accumulator(self, file_name="accumulator.pkl"):

with open(file_name, "rb") as f:

self.accumulator = pickle.load(f)

kode pemprosesan inti import cv2

import numpy as np import time

from matplotlib import pyplot as plt

from hough_transform import LineDetector, CircleDetector

def preprocess(img):

#img_gs = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #img_blur = cv2.blur(img_gs, (5, 5)) # Smoothing #img_edge = cv2.Canny(img_blur,10,30, 3) # Edge detection #img_hist = cv2.calcHist ([img_blur],[0],None,[256],[0,256]) #plt.plot(img_hist)

img_gs = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #img_blur = cv2.blur(img_gs, (5, 5)) # Smoothing img_edge = cv2.Canny(img_gs, 100,150 , 3) # Edge detection #img_hist = cv2.calcHist ([img_gs],[0],None,[256],[0,256]) #plt.plot(img_hist)

#plt.show()

#mean = np.median (img_gs) #print (mean)

#proses 2

55

#img_blur = cv2.blur(img, (5, 5)) # Smoothing #img_gs = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #img_edge = cv2.Canny(img,1,125, 3) # Edge detection #img_hist = cv2.calcHist ([img],[0],None,[256],[0,256]) #plt.plot(img_hist) #img_gs = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #img_edge = cv2.Canny(img, 100, 150, 3) # Edge detection #img_gs = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #(thresh, blackAndWhite) = cv2.threshold(img_blur,200,255, cv2.THRESH_BINARY)

#img_edge = cv2.Canny(blackAndWhite, 0, 255) # Edge detection

#cv2.imshow ('image grayscale',img_gs) #cv2.imshow ('image blurr',img_blur)

#complet

#cv2.imwrite('dtvth100x150_gs.jpg',img_gs) #cv2.imwrite('dtv33_gsblr.jpg',img_blur)

#cv2.imwrite('dtvthex_preprocessing_complit.jpg',img_edge)

#gscanny

cv2.imwrite('dtvex_thresold.jpg',img_edge)

#nogsblur

#cv2.imwrite('dtv_nogsblr.jpg',img_edge) return img_edge

#load image path, blur and image detection

def detect_lines():

FILE_PATH = "images/datavid/data23.JPG"

img_color = cv2.imread(FILE_PATH) img_preprocessed = preprocess(img_color)

h, w = img_preprocessed.shape

cv2.imshow("Preprocessed", img_preprocessed) cv2.waitKey(0)

mulai = time.time()

print("Image cols: {}".format(w)) print("Image rows: {}".format(h))

detector = LineDetector(img_preprocessed) detector.hough_transform()

lines = detector.detect(185)#(220) print("Lines: {}".format(lines)) img_res = img_color.copy() for l in lines:

cv2.line(img_res, l[0], l[1], (0, 0, 255), 2, 8)

57

cv2.imwrite('dtvex_threshold.jpg',img_res) cv2.imshow("Result", img_res)

akhir = time.time()

print("total waktu proses",akhir-mulai,"detik") cv2.waitKey(0)

def detect_circles():

FILE_PATH = "image/cd.jpg"

img_color = cv2.imread(FILE_PATH) img_preprocessed = preprocess(img_color)

h, w = img_preprocessed.shape

detector = CircleDetector(img_preprocessed)

try:

detector.load_accumulator("accumlator_circle.pkl") except:

print("Begin Hough Transform ...") detector.hough_transform()

detector.save_accumulator("accumlator_circle.pkl")

print("Detecting ...")

circles = detector.detect(10)

print("Circles: {}".format(circles)) img_res = img_color.copy()

for c in circles:

cv2.circle(img_res, (c["cx"], c["cy"]), c["radius"], (0, 0, 255), 2, 8)

cv2.imshow("Result", img_res) cv2.waitKey(0)

def main():

detect_lines()

#detect_circles()

if __name__ == "__main__":

main()

hasil data proses grayscale n

o

nama Gambar

59

1 Data 1

2 Data 2

3 Data 3

4 Data 4

5 Data5

6 Data 6

7 Data7

8 Data8

9 Data9

61

1 0

Data1 0

1 1

Data1 1

1 2

Data1 2

1 3

Data1 3

1 4

Data1 4

1 5

Data1 5

1 6

Data1 6

63

1 7

Data1 7

1 8

Data1 8

1 9

Data1 9

2 0

Data2 0

2 1

Data2 1

2 2

Data2 2

2 3

Data2 3

65

2 4

Data2 4

2 5

Data2 5

2 6

Data2 6

2 7

Data2 7

67

3 3

Data3 3

Data blur n

o

nama Gambar

1 Data 1

2 Data 2

3 Data 3

4 Data 4

5 Data5

6 Data 6

7 Data7

8 Data8

69

9 Data9

1 0

Data1 0

1 1

Data1 1

1 2

Data1 2

1 3

Data1 3

1 4

Data1 4

1 5

Data1 5

1 6

Data1 6

71

1 7

Data1 7

1 8

Data1 8

1 9

Data1 9

2 0

Data2 0

2 1

Data2 1

2 2

Data2 2

2 3

Data2 3

73

2 4

Data2 4

2 5

Data2 5

2 6

Data2 6

2 7

Data2 7

75

3 3

Data3 3

Data canny n

o

nama Gambar

1 Data 1

2 Data 2

3 Data 3

4 Data 4

5 Data 5

6 Data 6

77

7 Data 7

8 Data 8

9 Data 9

1 0

Data 10

1 1

Data 11

1 2

Data 12

79

1 3

Data 13

1 4

Data 14

1 5

Data 15

1 6

Data 16

1 7

Data 17

1 8

Data 18

81

1 9

Data 19

2 0

Data 20

2 1

Data 21

2 2

Data 22

2 3

Data 23

83

2 4

Data 24

2 5

Data 25

2 6

Data 26

2 7

Data 27

2 8

Data 28

2 9

Data 29

85

Data hough lengkap

n o

nama Gambar

1 Data 1

2 Data 2

3 Data 3

4 Data 4

87

5 Data 5

6 Data 6

7 Data 7

8 Data 8

9 Data 9

89

1 0

Data 10

1 1

Data 11

1 2

Data 12

1 3

Data 13

1 4

Data 14

91

1 5

Data 15

1 6

Data 16

1 7

Data 17

1 8

Data 18

1 9

Data 19

93

2 0

Data 20

2 1

Data 21

2 2

Data 22

2 3

Data 23

2 4

Data 24

2 5

Data 25

95

2 6

Data 26

2 7

Data 27

2 8

Data 28

2 9

Data 29

3 0

Data 30

3 1

Data 31

3 2

Data 32

3 3

Data 33

97

Data citra tanpa blur hasil canny dan pendeteksian n

o

nama Gambar

1 Data 1

2 Data 2

3 Data 3

4 Data 4

5 Data5

99

6 Data 6

7 Data7

8 Data8

9 Data9

101

1 0

Data1 0

1 1

Data1 1

1 2

Data1 2

1 3

Data1 3

103

1 4

Data1 4

1 5

Data1 5

1 6

Data1 6

1 7

Data1 7

105

1 8

Data1 8

1 9

Data1 9

2 0

Data2 0

2 1

Data2 1

107

2 2

Data2 2

2 3

Data2 3

2 4

Data2 4

109

2 5

Data2 5

2 6

Data2 6

2 7

Data2 7

2 8

Data2 8

2 9

Data2 9

111

3 0

Data3 0

3 1

Data3 1

3 2

Data3 2

3 3

Data3 3

Data pengaturan threshold n

o

nam a

hasil

1 data1

113

2 data2

3 data3

4 data4

5 data5

6 data6

115

7 data7

8 data8

9 data9

117

10 data10

11 data11

12 data12

119

13 data13

14 data14

15 data15

16 data16

121

17 data17

18 data18

19 data19

20 data20

123

21 data21

22 data22

23 data23

125

24 data24

25 data25

26 data26

127

27 data27

28 data28

29 data29

129

30 Data 30

31 Data 31

32 Data 32

33 Data33

131

Dokumen terkait