Friday, June 21, 2019

Buku Belajar Pemrogaman Matlab - Tambah Header pada Array


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/29/buku-belajar-pemrogaman-matlab-tambah-header-pada-array/


Sering kali dalam membuat laporan yang berisikan baris dan kolom, setidaknya diperlukan sebuah nama kolom untuk menghadirkan informasi yang utuh. Biar nggak lupa karena seringnya menggunakan format excel daripada format csv. Misalkan kita mempunyai array dan akan menambahkan keterangan kolom pada array tersebut untuk disimpan dalam bentuk exel


a = rand(2,3)
b = {'Kolom A','Kolom B','Kolom C'}
output = [b; num2cell(a)]

xlswrite('result.xlsx',output)


a =

    0.2785    0.9575    0.1576
    0.5469    0.9649    0.9706


b = 

    'Kolom A'    'Kolom B'    'Kolom C'


output = 

    'Kolom A'    'Kolom B'    'Kolom C'
    [ 0.2785]    [ 0.9575]    [ 0.1576]
    [ 0.5469]    [ 0.9649]    [ 0.9706]


Saturday, June 15, 2019

Buku Pengolahan Citra Digital dengan Python dan OpenCV-Penerapan watershed


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-penerapan-watershed/


https://www.researchgate.net/figure/Watershed-ridge-lines-and-catchment-basins_fig2_329901856

Sinopsis

Watershed biasa digunakan untuk memisahkan objek yang saling berhimpitan, biasanya bisa disiasati menggunakan teknik morfologi seperti erotion, dilation, close, open tapi terkadang teknik tersebut kurang efektif, sehingga perlu menggunakan teknik watershed. Berikut disajikan contoh gambar yang saling berhimpitan terdiri dari 2 objek yang saling berhimpitan

Buku Pengolahan Citra Digital dengan Python dan OpenCV-Penerapan watershed


Sebagai informasi, bahwa tools yang digunakan menggunakan python, matplotlib, numpy dan opencv, jadi bila bagi pemula yang ingin belajar mengenai python silahkan beli buku saya di

http://www.softscients.web.id/2018/11/buku-belajar-mudah-python-dengan.html

Bisa beli disini
  1. https://www.bukalapak.com/p/hobi-koleksi/buku/komputer-487/wco01c-jual-belajar-mudah-python-dengan-package-open-source-mulkan-syarif-graha-ilmu
  2. https://www.tokopedia.com/bukukuliahan/belajar-mudah-python-dengan-package-open-source-mulkan-syarif
  3. https://togamas.com/detail-buku-8585=Belajar_Mudah_Python_dengan_Package_Open_Source_
  4. https://petramas.co.id/product/belajar-mudah-python-dengan-package-open-source-a8c4 
Pembahasan buku yaitu
  1. Python
  2. IDE Spyder sebagai Editor
  3. Package Numpy untuk perhitungan array
  4. Package Matplolib untuk visualisasi grafis
  5. Package Pandas untuk pengolahan data terstruktur
  6. Package Scipy untuk pengolahan data statistika
  7. Package OpenCV (instal tersendiri)

Langkah selanjutnya eucleid distance transform, untuk mendapatkan ‘puncak’



Buku Pengolahan Citra Digital dengan Python dan OpenCV-Penerapan watershed

Kita ambil bagian titik tertinggi nya

Buku Pengolahan Citra Digital dengan Python dan OpenCV-Penerapan watershed

ambil bagian titik rendah nya juga

Buku Pengolahan Citra Digital dengan Python dan OpenCV-Penerapan watershed

Terapkan operasi labelling, terdapat 3 objek

 Buku Pengolahan Citra Digital dengan Python dan OpenCV-Penerapan watershed

Terapkan watershed, sehingga terpisah antara objek yang saling berhimpit

 Buku Pengolahan Citra Digital dengan Python dan OpenCV-Penerapan watershed
Contoh real dalam penerapan watershed yaitu segmentasi objek seperti berikut
 
http://www.softscients.web.id/2019/02/python-watershed-segmentation.html

Buku Pengolahan Citra Digital dengan Python dan OpenCV-Penerapan watershed

Berikut kode yang menggunakan numpy, opencv, dan matplotlib

# %% # Tahap cara kerja watershed
#' 14/06/2019 #'mulkan.ms@gmail.com

#'pustaka yang diperlukan

import cv2
import numpy as np
from matplotlib import pyplot as plt
from scipy import ndimage

from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter

cv_img = cv2.imread('2 objek.png',0)
sure_bg = cv_img.copy()
#'Kita mempunyai gambar berikut
#'terdiri dari 2 objek yang saling berhimpitan
plt.figure(),plt.imshow(sure_bg,cmap='gray'),plt.title('image original')
plt.show()

#'terapkan distanceTransform
dist_transform = cv2.distanceTransform(sure_bg,cv2.DIST_L2,5)
plt.figure(),plt.imshow(dist_transform,cmap='gray'),plt.title('Eucleid Distance Transform')
plt.show()


#'ambil bagian titik tertinggi
ret, titik_puncak = cv2.threshold(dist_transform,0.75*dist_transform.max(),255,0)
plt.figure(),plt.imshow(titik_puncak,cmap='gray'),plt.title('titik_puncak')
plt.show()

#'ambil bagian bagian luar nya
threshold = titik_puncak.copy()
titik_puncak = np.uint8(titik_puncak)
titik_rendah = cv2.subtract(sure_bg,titik_puncak)
plt.figure(),plt.imshow(titik_rendah,cmap='gray'),plt.title('titik_rendah')
plt.show()

#'terapkan labelling
ret, markers = cv2.connectedComponents(titik_puncak) 
markers = markers+1 
markers[titik_rendah==255] = 0
plt.figure(),plt.imshow(markers,cmap='Spectral'),plt.title('markers '+str(np.max(markers)))


#'input image watershed harus berupa RBG
#'maka diubah terlebih dahulu
backtorgb = cv2.cvtColor(cv_img,cv2.COLOR_GRAY2RGB)


#'terapkan watershed
markers = cv2.watershed(backtorgb,markers)
plt.figure()
plt.imshow(np.uint8(markers),cmap='gray'),plt.title('Batas Watershed')
plt.show()