27
3.2.3 Grayscaling
Frame citra yang didapat dari kamera akan diubah ke dalam citra grayscale. Pada OpenCV terdapat fungsi untuk mengubah citra RGB ke citra grayscale yaitu cvtColor.
Penjelasan fungsi cvtColor akan dibahas seperti berikut. cvtColorsrc, dst, code
Parameter : Src
: Citra input. Dst
: Citra output yang berupa citra kebabuan. Code
: Angka integer yang merepresentasikan kode transformasi warna apa yang akan dilakukan. Misal RGB ke grayscale dan RGB ke HSV.
Sebagai contoh, terdapat sebuah matriks citra warna berukuran 3 x 3 piksel yang memiliki nilai RGB seperti ditunjukkan pada Tabel 3.1.
Tabel 3.1. Matriks citra warna RGB ukuran 3 x 3 piksel
i,j 1
2
120 50
210 100
50 30
50 70
82
1
10 20
30 255
125 33
137 166
59
2
47 99
20 123
185 131
243 56
170
Maka proses perhitungan konversi nilai RGB menjadi nilai keabuan dengan persamaan 2.3 pada matriks 0,0 adalah sebagai berikut :
� = . + .
� + . �
� = . + .
+ . � =
. + . + . � =
. =
Dengan melakukan perhitungan yang sama pada semua piksel citra RGB, maka didapatkan hasil seperti tabel 3.2.
Universitas Sumatera Utara
28
Tabel 3.2. Hasil konversi nilai citra RGB ke nilai citra keabuan
i,j 1
2
88 61
63
1 18
150 140
2
72 144
123
Hasil konversi citra RGB papan reklame yang diambil dari kamera smartphone Android a menjadi citra keabuan b dapat dilihat pada gambar 3.2.
a Citra RGB yang tertangkap kamera b Citra keabuan grayscale
Gambar 3.2. Proses konversi citra RGB menjadi citra keabuan
3.2.4 Edge Detection Canny
Setelah noise pada citra dihilangkan, maka tahap selanjutnya adalah pendeteksian tepi dengan metode Canny. Pada OpenCV, fungsi untuk melakukan pendeteksian tepi
Canny adalah Canny. Penjelasan fungsi Canny akan dibahas seperti berikut. Cannysrc, dst, thres1, thres2, apertureSize
Parameter : Src
: Citra input berupa citra keabuan. Dst
: Citra output berupa citra biner dengan tepi – tepi yang
terdeteksi. Thres1
: Nilai batas awal untuk prosedur hysterisis. Thres2
: Nilai batas akhir untuk prosedur hysterisis. ApertureSize
: Angka integer untuk menentukan besar matriks pada operator sobel.
Hasil pendeteksian tepi dari citra keabuan menggunakan metode canny dapat dilihat pada gambar 3.3.
Universitas Sumatera Utara
29
Gambar 3.3. Citra deteksi tepi canny
3.2.5 Dilasi dan Erosi
Tepi yang dihasilkan dari proses deteksi tepi Canny masih ada yang terputus – putus
dan masih ada yang garis tepi yang tidak diinginkan. Oleh karena itu dibutuhkan proses dilasi dan erosi untuk menyatukan garis tepi yang terputus dan menghilangkan garis
– garis kecil yang dianggap sebagai tepi. Fungsi dilasi dan erosi pada OpenCV adalah
dilate dan erode. Fungsi erode dan dilate memiliki parameter yang sama namun memberikan output yang berbeda. Fungsi erode dan dilate dapat dijabarkan sebagai
berikut. Dilatesrc, dst, kernelSize
Erodesrc, dst, kernelSize Parameter :
Src : Citra input berupa citra biner.
Dst : Citra output berupa citra biner yang telah ditebalkan dilasi atau
ditipiskan erosi. kernelSize: Penentuan ukuran matriks yang dipakai pada proses dilasi atau erosi.
Jika kosong maka nilai default-nya adalah 3x3. Citra hasil proses dilasi dan erosi dapat dilihat pada gambar 3.4.
a Gambar hasil proses dilasi
Universitas Sumatera Utara
30
b Gambar hasil proses erosi
Gambar 3.4. Citra hasil proses dilasi dan erosi
3.2.6 Contour Tracing
Pada tahap contour tracing, garis tepi yang membentuk suatu bangun datar kontur akan disimpan koordinatnya. OpenCV menyediakan fungsi untuk mencari contour,
yaitu findContour yang menghasilkan output titik – titik contour yang teridentifikasi.
Titik – titik yang teridentifikasi dapat digambar dengan fungsi drawContour. Berikut
penjelasan fungsi findContour dan drawContour. findContoursrc, contours, hierarchy, mode, method
Parameter : Src
: Citra input berupa citra biner. Contours : Titik koordinat kontur yang terdeteksi akan disimpan dalam bentuk
vektor. Hierarchy : Vektor output opsional berisikan informasi tentang topologi citra.
Mode : Cara pendeteksian titik kontur. Pada penelitian ini menggunakan
Imgproc.RETR_LIST. Method : Metode pendekatan kontur. Pada penelitian ini menggunakan
Imgproc.CHAIN_APPROX_NONE yang mengambil dan menyimpan semua titik kontur tanpa terkecuali.
Contoh hasil pendeteksian kontur dapat dilihat pada gambar 3.5.
Gambar 3.5. Citra dengan kontur yang terdeteksi
Universitas Sumatera Utara
31
3.2.7 Filter Contour
Setelah contour diperoleh, masih terdapat contour yang tidak sesuai dengan objek yang dimaksud. Oleh karena itu, diperlukan proses filter pada contour dengan cara mencari
luas terbesar dan mencari banyak sudut lengkungan yang terdapat pada masing –
masing contour agar contour yang didapat merupakan papan reklame yang ingin diukur ukurannya. Fungi pada OpenCV untuk menghitung luas contour adalah contourArea
dan fungsi untuk mencari jumlah sudut adalah approxPolyDP. Proses filter dilakukan karena papan reklame pasti memiliki luas contour terbesar dan berbentuk segi empat
atau memiliki 4 sudut pada citra sehingga contour yang lain akan dieliminasi. Berikut penjelasan fungsi yang akan digunakan.
contourAreacontour Parameter :
Contour : Titik kontur yang akan dihitung nilai luasnya. approxPolyDpcontour, approxCurve, epsilon, closed
Parameter : Contour
: Titik kontur yang menjadi input. ApproxCurve
: Hasil output berupa titik – titik koordinat dari sudut yang
didapat. Epsilon
: Nilai double yang menentukan nilai akurasi dalam pencarian sudut.
Closed : Nilai boolean yang menentukan apakah sudut
– sudut tersebut terhubung atau tidak.
Citra hasil proses penyaringan kontur dapat dilihat pada gambar 3.6.
Gambar 3.6. Citra hasil proses penyaringan kontur
Universitas Sumatera Utara
32
3.2.8 Pengaturan Perspektif
Papan reklame yang diambil tidak sepenuhnya berbentuk persegi panjang dikarenakan pengambilan gambar tidak selalu tepat tegak lurus terhadap papan reklame. Oleh karena
itu, penulis menggunakan fungsi minAreaRect pada OpenCV dengan parameter kontur papan reklame yang didapat dari penyaringan kontur untuk mencari bentuk
persegi panjang yang mendekati bentuk papan reklame yang tertangkap oleh kamera. Persegi panjang yang terbentuk berwarna kuning seperti pada gambar 3.7.
Gambar 3.7. Hasil dari fungsi minAreaRect
3.2.9 Perhitungan ukuran Billboard
Perhitungan ukuran billboard dapat dihitung dengan menggunakan konsep proyeksi perspektif dengan persamaan 2.8 dan persamaan 2.9. Ukuran lebar dan tinggi objek
pada citra didapat dari persegi panjang yang dibentuk dari minAreaRect. Pada penelitian ini nilai nilai jarak fokus focal length telah ditentukan yaitu 1740. Misalkan
lebar width objek pada citra bernilai 652 pixel ,tinggi height objek pada citra bernilai 392 pixel dan jarak objek terhadap kamera bernilai 400 cm, maka lebar dan tinggi objek
yang asli dapat dihitung seperti berikut.
� =
� . �
� =
� . �
� =
.
� =
.
� = � =
� = , � � =
, �
Universitas Sumatera Utara
33
3.2.10 Perhitungan biaya pajak reklame
Biaya pajak reklame dapat dihitung dengan menggunakan persamaan 2.1. Misalkan papan reklame yang akan diuji berada pada jalan Setia Budi yang merupakan jalan kelas
1, maka nilai sewa bernilai Rp 9.000,- dan nilai Strategis bernilai Rp 30.000.000,-. Oleh karena itu, jumlah pajak yang akan dibayarkan dapat dihitung seperti berikut.
� � = � � � � � ∗ �ℎ
∗ � � �
+ � � �� ∗ .
� � = , ∗ ,
. ∗
∗ . + .
. ∗ .
� � = . .
, + .
. � � = � .
. ,
, − ��
3.3 Kegiatan User dan Admin