Tuesday, January 15, 2019

Buku Pengolahan Citra Digital dengan Python dan OpenCV-Clustering Color


Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id

Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link


kalian bisa lanjut baca lagi di  http://softscients.com/2020/03/30/buku-pengolahan-citra-digital-dengan-python-dan-opencv-clustering-color/



Sinopsis 

Algoritma KMeans Clustering bisa kalian gunakan lho untuk melakukan segmentasi ataupun grouping warna/kuantisasi warna pada image true color atau grayscale selain menggunakan teknik inrange(). Kalian bisa menggunakan library OpenCV sudah dilengkapi dengan function Kmeans() yaitu https://docs.opencv.org/3.4.3/d1/d5c/tutorial_py_kmeans_opencv.html

Kalian bisa menggunakan kode berikut

import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('panoramic.jpg')
#ubah menjadi array terdiri dari 3 kolom karena terdiri dari BGR
Z = img.reshape((-1,3))
#convert dari uint8 ke float
Z = np.float32(Z)
# define criteria, number of clusters(K) and apply kmeans()
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 5 #jumlah cluster
ret,label,center=cv2.kmeans(Z,K,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)
# convert ke double ke uint8
center = np.uint8(center)
res = center[label.flatten()]
#ubah lagi
res2 = res.reshape((img.shape))
plt.figure()
plt.subplot(2,1,1),plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
plt.title('Asli')
plt.subplot(2,1,2),plt.imshow(cv2.cvtColor(res2,cv2.COLOR_BGR2RGB))
plt.title('Clustering Color')
plt.show()



Tentu dengan teknik grouping diatas, akan mempermudah dalam teknik segmentasinya, karena return dari kmeans() berupa nilai center untuk masing-masing kelas, sehingga nilai center tersebut dapat digunakan sebagai threshold. Hanya untuk mempermudah saja, kalian bisa  menggunakan Tkinter untuk membuat aplikasi berbasis GUI, seperti berikut




Kalau ada yang kalian tanyakan kesini saja

Sunday, January 6, 2019

C# - Learning Vector Quantization




UPDATE: 01 FEBRUARI 2019
BAHASA: C#
SYSTEM:
  1. Windows 10
  2. IDE : SharpDevelop Version : 5.1.0.5216-0e58df71
  3. NET Version         : 4.7.03056

PENGANTAR

Mengenal LVQ yaitu algoritma non linear yang bekerja untuk melakukan klasifikasi supervisi sehingga kita harus mempunyai input dan target yang telah diketahui sebagai ‘bahan’ untuk mencari nilai ‘bobot’ yang optimal
Aturan LVQ agar berbeda dengan backpropagation yaitu lebih simple tidak menggunakan fungsi aktifasi, tapi yang lebih penting adalah bobot awal yang digunakan harus tepat.