Pemrosesan Gambar menggunakan Operasi Morfologi – Menuju AI – Teknologi, Sains, dan Teknik Terbaik

Penulis: Ralph Caubalejo

Visi Komputer, Pemrograman

Waktu Morphing!

(Gambar oleh Penulis)

Salah satu teknik pemrosesan citra yang paling penting di luar sana adalah apa yang disebut operasi morfologis.

Seperti namanya, kami menggunakan operasi morfologis dalam membersihkan dan mengoreksi gambar. Biasanya, operasi morfologi dilakukan setelah menggabungkan gambar ke kernel atau filter spasial tertentu. Karena hasil penyaringan spasial adalah gambar yang menunjukkan fitur redaman yang berbeda, kami ingin agar fitur tersebut benar secara keseluruhan.

Terkadang, gambar hasil filter memiliki garis putus-putus atau mungkin bergabung dengan fitur lain yang harus digabungkan. Di sinilah kami menggunakan morphing. Kami kembali menggunakan semacam elemen penataan dan mencocokkannya dengan gambar yang difilter sehingga dapat menghubungkan piksel ke piksel tetangganya. Hasil dari operasi morfologi adalah citra yang lebih tepat dan lebih tepat untuk diaplikasikan pada masalah tertentu.

Untuk lebih memahami konsepnya, mari kita membahas kodenya dengan cepat!

Mari kita muat contoh contoh dari artikel filter spasial kita:

impor numpy sebagai np
dari skimage.io import imshow, imread
dari skimage.color import rgb2gray
impor matplotlib.pyplot sebagai plt sample = imread (‘stand.png’)
imshow (sampel); sample_g = rgb2gray (contoh)
fig, ax = plt.subplots (1,2, figsize = (10,15))
kapak[0].imshow (sampel)
kapak[1].imshow (sample_g, cmap = ‘grey’)
kapak[0].set_title (‘Gambar Berwarna’, fontsize = 20)
kapak[1].set_title (‘Gambar Skala Abu-abu’, fontsize = 20)
plt.show ()
Gambar 1: Gambar Contoh (Gambar oleh Penulis)

Untuk menggunakan operasi morfologi yang berbeda pada citra, pertama-tama kita harus melakukan binarisasi citra tersebut.

Untuk melakukan binarisasi citra, kita dapat memeriksa nilai garis piksel sampel dan menentukan ambang tertentu di mana kita akan menetapkan nilai piksel jika 0 atau 1. Pengecekan sampel nilai piksel adalah sebagai berikut:

# menunjukkan kisaran nilai untuk kolom y tertentu
ara, ax = plt.subplots (1,2, figsize = (15,5)) ax[0].set_title (‘Gambar Skala Abu-abu’, fontsize = 20)
kapak[0].imshow (sample_g, cmap = ‘grey’) ax[1].plot (sample_g[500])
kapak[1].set_ylabel (‘Nilai Piksel’)
kapak[1].set_xlabel (‘Lebar Gambar’)
kapak[1].set_title (‘Plot 1 Baris’, fontsize = 20)
plt.tight_layout ()
plt.show ()
Gambar 2: Contoh Nilai Piksel (Gambar oleh Penulis)

Kita dapat melihat bahwa plotline piksel sampel menunjukkan bahwa sebagian besar nilai piksel berada di atas 0,55 sedangkan ada nilai piksel yang jelas pada intensitas yang lebih rendah.

Kita juga dapat menggunakan nilai piksel rata-rata dari keseluruhan gambar dan juga nilai median dari nilai piksel. Contoh dan hasilnya adalah sebagai berikut:

dari statistik impor scipy
print (‘Nilai Rata-Rata Piksel’, sample_g.mean ())
print (‘Median Value of Pixels’, np.median (sample_g))

Nilai Rata-rata Piksel 0,5642273922521608

Nilai Median Piksel 0.6111019607843137

med = sample_g.mean ()
mea = np.median (sample_g) med1 = sample_g> med
mea1 = sample_g> mea fig, ax = plt.subplots (1,3, figsize = (15,5)) ax[0].set_title (‘Gambar Skala Abu-abu’, fontsize = 20)
kapak[0].imshow (sample_g, cmap = ‘grey’)
kapak[1].imshow (med1, cmap = ‘grey’)
kapak[1].set_title (‘Binarized using Mean Value’, fontsize = 20)
kapak[2].imshow (mea1, cmap = ‘grey’)
kapak[2].set_title (‘Binarize using Median Value’, fontsize = 20)
plt.tight_layout ()
plt.show ()
Gambar 3: Gambar Binarisasi (Gambar oleh Penulis)

Kita bisa melihat perbedaan antara menggunakan Mean Value dan Median Value. Tampaknya Nilai Rata-rata jauh lebih jelas dan lebih berbeda daripada nilai mediannya.

Untuk saat ini, pertama-tama mari kita tetapkan ambang pada 0,55 dan gunakan nilai sebagai ambang batas

sample_b = sample_g> 0.55 fig, ax = plt.subplots (1,2, figsize = (10,5)) ax[0].set_title (‘Gambar Skala Abu-abu’, fontsize = 20)
kapak[0].imshow (sample_g, cmap = ‘grey’)
kapak[1].imshow (sample_b, cmap = ‘grey’)
kapak[1].set_title (‘Binarized Image’, fontsize = 20)
plt.tight_layout ()
plt.show ()
Gambar 4: Gambar binarisasi menggunakan Thresholding (Gambar oleh Penulis)

Sekarang kita memiliki gambar biner, sekarang kita dapat melakukan operasi morfologi.

Dua jenis operasi morphing yang banyak digunakan dalam pemrosesan gambar, yaitu:

Erosi Pelebaran

Masing-masing jenis ini memiliki efeknya sendiri pada gambar.

PELEBARAN

Dalam arti tertentu, dilasi adalah operasi di mana nilai piksel paling terang dari gambar diperbesar atau dibuat lebih besar dan nilai piksel paling gelap diminimalkan.

Hal tersebut lebih mudah divisualisasikan sehingga gambar menjadi lebih diperkecil.

Mari kita lihat beberapa contohnya:

dari skimage.morphology impor erosi, dilasi, pembukaan, penutupan
selem_ver = np.array ([[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]) sample_ver = dilasi (sample_b, selem_hor) fig, ax = plt.subplots (1,3, figsize = (12,5))
kapak[0].set_title (‘Binarized Image’, fontsize = 15)
kapak[0].imshow (sample_b, cmap = ‘grey’)
kapak[1].imshow (selem_ver, cmap = ‘grey’)
kapak[1].set_title (‘Elemen Penyusunan’, fontsize = 15)
kapak[2].imshow (sample_ver, cmap = ‘grey’)
kapak[2].set_title (‘Gambar Berubah’, fontsize = 15)
plt.tight_layout ()
plt.show ()
Gambar 5: Gambar Morf menggunakan Elemen Vertikal (Gambar oleh Penulis)

Perpustakaan Scikit memiliki fungsi pelebaran dan erosi yang bagus di mana kita dapat memberi makan gambar biner dan elemen penataan pilihan kita.

Kami menggunakan elemen vertikal dan memasukkannya ke fungsi untuk membiarkan gambar berubah menjadi elemen penataan. Dari hasil, kami dapat melihat bahwa kami dapat menghilangkan fitur vertikal dari gambar, khususnya garis vertikal yang menggambarkan dudukan.

EROSI

Erosi adalah kebalikan langsung dari dilatasi, dalam erosi kita membuat gambar lebih besar dan membiarkan nilai piksel yang lebih gelap jauh lebih besar daripada nilai piksel cerah.

dari skimage.morphology impor erosi, dilasi, pembukaan, penutupan
selem_ver = np.array ([[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]) sample_ver = erosi (sample_b, selem_hor) fig, ax = plt.subplots (1,3, figsize = (12,5))
kapak[0].set_title (‘Binarized Image’, fontsize = 15)
kapak[0].imshow (sample_b, cmap = ‘grey’)
kapak[1].imshow (selem_ver, cmap = ‘grey’)
kapak[1].set_title (‘Elemen Penyusunan’, fontsize = 15)
kapak[2].imshow (sample_ver, cmap = ‘grey’)
kapak[2].set_title (‘Gambar Berubah’, fontsize = 15)
plt.tight_layout ()
plt.show ()
Gambar 6: Gambar Terkikis (Gambar oleh Penulis)

Seperti yang bisa kita lihat pada hasil Eroded Image, seluruh gambar dibuat lebih besar terutama dudukan di bagian tengah. Khususnya, ukuran dudukan bertambah, pada kenyataannya, yang sebenarnya terjadi adalah ukuran piksel bertambah juga menutupi piksel lainnya.

Mari kita coba menggunakan elemen penataan yang berbeda!

Kali ini Elemen Horizontal.

selem_hor = np.zeros ((100,5))
selem_hor[0:1]= 1
selem_hor[-1:]= 1
selem_hor sample_hor = dilasi (sample_b, selem_hor)
Gambar 7: Gambar Dilatasi menggunakan Elemen Horizontal (Gambar oleh Penulis)

Dengan menggunakan elemen horizontal, kami mengambil papan kayu horizontal pada gambar tanpa menghilangkan fitur vertikal gambar.

selem_hor = np.zeros ((100,5))
selem_hor[0:1]= 1
selem_hor[-1:]= 1
selem_hor sample_hor = erosi (sample_b, selem_hor)
Gambar 8: Gambar Terkikis menggunakan Elemen Horizontal (Gambar oleh Penulis)

Gambar yang terkikis seperti yang diharapkan semakin besar ukurannya pada sumbu horizontal. Dapat dicatat bahwa papan kayu pada gambar berlipat ganda jika dibandingkan dengan gambar aslinya.

RINGKASAN

Kami dapat mendiskusikan dua operasi morfologi yang berbeda yaitu Dilasi dan Erosi. Kedua operasi ini banyak digunakan dalam pemrosesan gambar dan digunakan untuk mengoreksi dan menyelesaikan gambar tergantung pada kebutuhan pengguna. Dapat dicatat juga bahwa operasi morfologi berguna saat membersihkan data yang sangat bising dan juga berguna dalam mengurangi fitur tertentu pada gambar.

Nantikan artikel selanjutnya!

Pemrosesan Gambar menggunakan Operasi Morfologis awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Towards AI