Setelah bab ini berakhir, diharapkan pembaca memahami berbagai hal berikut dan mampu mempraktikkannya.
- Pengertian operasi morfologi
- Matematika yang melatarbelakangi
- Operasi dilasi
- Operasi erosi
- Bentuk dan ukuran elemen penstruktur
- Operasi opening
- Operasi closing
- Transformasi Hit-or-Miss
- Skeleton
- Thickening
- Convex hull
- Transformasi Top-Hat
- Transformasi Bottom-Hat
7.1 Pengertian Operasi Morfologi
Operasi morfologi adalah salah satu teknik pengolahan citra digital yang berguna untuk memodifikasi bentuk dan ukuran objek pada citra. Dalam operasi morfologi, dilakukan operasi matematis pada citra dengan menggunakan elemen struktur atau kernel untuk menghasilkan citra yang diinginkan.
Ada dua operasi dasar dalam operasi morfologi, yaitu dilasi (dilation) dan erosi (erosion). Dilasi dilakukan dengan menggeser elemen struktur pada citra, kemudian mengambil nilai maksimum dari piksel yang tertutupi oleh elemen struktur. Sedangkan erosi dilakukan dengan cara yang sama, namun mengambil nilai minimum dari piksel yang tertutupi oleh elemen struktur.
Selain dilasi dan erosi, terdapat juga operasi morfologi lanjutan seperti opening, closing, top-hat, dan bottom-hat. Opening adalah hasil erosi diikuti dilasi, sementara closing adalah hasil dilasi diikuti erosi. Top-hat adalah hasil pengurangan citra asli dengan opening, sedangkan bottom-hat adalah hasil pengurangan closing dengan citra asli.
Operasi morfologi merupakan operasi yang umum dikenakan pada citra biner (hitam-putih) untuk mengubah struktur bentuk objek yang terkandung dalam citra. Sebagai contoh, lubang pada daun dapat ditutup melalui operasi morfologi sebagaimana ditunjukkan pada Gambar 7.1. Objek-objek daun yang saling berhimpitan pun dapat dipisahkan melalui morfologi, sebagaimana ditunjukkan pada Gambar 7.2. Beberapa contoh lain aplikasi morfologi adalah sebagai berikut.
- Membentuk filter spasial, seperti yang telah dibahas pada Bab 6.
- Memperoleh skeleton (rangka) objek.
- Menentukan letak objek di dalam citra.
- Memperoleh bentuk struktur objek.
- Segmentasi citra
- Penghapusan noise pada citra
- Deteksi tepi pada citra.


Operasi morfologi sesungguhnya juga dapat dikenakan pada citra aras keabuan. Pembicaraan mengenai hal ini dilakukan di bagian akhir di bab ini. Inti operasi morfologi melibatkan dua larik piksel. Larik pertama berupa citra yang akan dikenai operasi morfologi, sedangkan larik kedua dinamakan sebagai kernel atau structuring element (elemen penstruktur) (Shih, 2009). Contoh kernel ditunjukkan pada Gambar 7.3. Pada contoh tersebut, piksel pusat (biasa diberi nama hotspot) ditandai dengan warna abu-abu. Piksel pusat ini yang menjadi pusat dalam melakukan operasi terhadap citra, sebagaimana diilustrasikan pada Gambar 7.4.

.

Dua operasi yang mendasari morfologi yaitu dilasi dan erosi. Dua operasi lain yang sangat berguna dalam pemrosesan citra adalah opening dan closing dibentuk melalui dua operasi dasar itu.
7.2 Matematika yang Melatarbelakangi
Untuk memahami operasi morfologi, pemahaman terhadap operasi himpunan seperti interseksi dan gabungan mutlak diperlukan. Selain itu, pemahaman terhadap operasi logika, seperti “atau” dan „dan” juga diperlukan.
7.2.1 Teori Himpunan
Misalkan, terdapat himpunan A yang berada di dalam bidang Z2 (berdimensi dua). Apabila a=(a1, a2) adalah suatu elemen atau anggota di dalam A, a dapat ditulis menjadi

Arti notasi di atas, a adalah anggota himpunan A. kebalikannya, jika a bukan anggota himpunan A, a ditulis seperti berikut:

Sebagai contoh, s = (1, 2) dan t = (1, 4), sedangkan himpunan A berisi seperti berikut:

Pada contoh tersebut, A memiliki 5 anggota. Berdasarkan contoh tersebut, dapat dituliskan fakta berikut:

Perlu diketahui, setiap elemen hanya dapat menjadi anggota himpunan satu kali. Dengan demikian,

sesungguhnya hanya mempunyai 3 anggota, yaitu

Notasi Φ biasa terdapat dalam pembicaraan himpunan. Simbol tersebut menyatakan himpunan kosong, yaitu himpunan yang tidak memiliki anggota sama sekali. Apabila A dan B adalah himpunan dan setiap anggota himpunan B merupakan anggota himpunan A, dikatakan bahwa B adalah subhimpunan A.
Notasi yang biasa digunakan untuk kepentingan ini:

Union adalah penggabungan dari dua buah himpunan. Misalnya:

yang menyatakan bahwa C memiliki anggota berupa semua anggota A ditambah dengan semua anggota B. Gambar 7.5 memperlihatkan contoh nilai-nilai piksel penyusun dua citra biner dan menunjukkan hasil operasi union. Semua nilai 1 pada citra tersebut menyatakan anggota himpunan baru, yang cenderung meluas.

Gambar 7.5 Operasi union pada citra biner
Interseksi menyatakan operasi yang menghasilkan himpunan semua anggota yang terdapat di kedua himpunan. Misalnya:

berarti bahwa C berisi anggota-anggota yang ada di himpunan A dan juga terdapat di himpunan B. Hasilnya cenderung menyempit. Contoh dapat dilihat pada Gambar 7.6.

Gambar 7.6 Operasi interseksi pada citra biner
Komplemen himpunan A biasa dinotasikan dengan Ac dan menyatakan semua elemen yang tidak terdapat pada A. Secara matematis, komplemen ditulis seperti berikut:

Notasi di atas dibaca “semua elemen yang tidak menjadi anggota A”. Komplemen atau juga disebut inversi dapat dibayangkan seperti saling menukarkan warna hitam dan putih. Nilai yang semula berupa nol diganti satu dan nilai satu diganti dengan nol. Contoh dapat dilihat di Gambar 7.7. Di bidang fotografi dengan film, inversi menghasilkan gambar negatif. Istilah komplemen juga berarti ”pelengkap”, karena bila A digabung dengan operasi union akan menyempurnakan citra menjadi citra yang semua pikselnya bernilai 1.

Gambar 7.7 Operasi komplemen
Operasi selisih dua himpunan dapat ditulis seperti berikut:

Contoh ditunjukkan di Gambar 7.8.

Gambar 7.8 Contoh selisih dua himpunan
Contoh di atas menunjukkan bahwa A – B ≠ B – A.
Refleksi B dinotasikan dengan

dan didefinisikan sebagai berikut:

Refleksi sebenarnya menyatakan percerminan terhadap piksel pusat. Contoh ditunjukkan pada Gambar 7.9. Bayangan cermin 2-D terjadi melalui pencerminan pada arah x dan dilanjutkan pada arah y. namun, ternyata hasilnya sama dengan pemutaran di bidang citra 180o.

Gambar 7.9 Contoh refleksi
Translasi himpunan A terhadap titik z=(z1, z2) disimbolkan dengan (A)z. Definisinya sebagai berikut:

Contoh dapat dilihat pada Gambar 7.10.

Gambar 7.10 Contoh translasi satu piksel ke kanan dan dua piksel ke bawah
7.2.2 Operasi Nalar
Operator nalar didasarkan pada aljabar Boolean. Sebagaimana diketahui, aljabar Boolean adalah pendekatan matematis yang berhubungan dengan nilai kebenaran (benar atau salah). Ada tiga operator nalar dasar yang akan dibahas, yaitu AND, OR, serta NOT. Tabel kebenaran ketiga operator tersebut dapat dilihat pada Tabel 7.1 dan 7.2.
Operasi AND melibatkan dua masukan dan mempunyai sifat bahwa hasil operasinya bernilai 1 hanya jika kedua masukan bernilai 1. Pada operasi OR, hasil berupa 1 kalau ada masukan yang bernilai 1. Berbeda dengan AND dan OR, operasi NOT hanya melibatkan satu masukan. Hasil NOT berupa 1 kalau masukan
berupa 0 dan sebaliknya akan menghasilkan nilai 0 kalau masukan berupa 1.


Selain ketiga operator yang disebut di depan, operator lain yang kadangkadang digunakan adalah XOR dan NAND. Sifat XOR dan NAND ditunjukkan pada Tabel 7.3.

Berbagai efek operasi AND, OR, NOT, XOR, dan NAND ditunjukkan pada Gambar 7.11. Adapun program yang digunakan untuk membentuk operasi tersebut dapat dilihat pada nalar.m.
| Program : nalar.m |
% NALAR Contoh penggunaan NOT, AND, OR, XOR, dan
% kombinasinya.
Lingkaran = imread('C:\Image\lingkaran.png');
Persegi = imread('C:\Image\persegi.png');
close all;
Citra1 = Lingkaran;
subplot(3,3,1); imshow(Citra1, [0 1]);
title('A');
Citra2 = Persegi;
subplot(3,3,2); imshow(Citra2, [0 1]);
title('B');
Citra3 = not(Lingkaran);
subplot(3,3,3); imshow(Citra3, [0 1]);
title('not(A)');
Citra4 = and(Lingkaran, Persegi);
subplot(3,3,4); imshow(Citra4, [0 1]);
title('and(A, B)');
Citra5 = xor(Lingkaran, Persegi);
subplot(3,3,5); imshow(Citra5, [0 1]);
title('xor(A, B)');
Citra6 = or(Lingkaran, Persegi);
subplot(3,3,6); imshow(Citra6, [0 1]);
title('or(A, B)');
Citra7 = not(and(Lingkaran, Persegi));
subplot(3,3,7); imshow(Citra7, [0 1]);
title('not(and(A, B))');
Citra8 = not(xor(Lingkaran, Persegi));
subplot(3,3,8); imshow(Citra8, [0 1]);
title('not(xor(A, B))');
Citra9 = not(or(Lingkaran, Persegi));
subplot(3,3,9); imshow(Citra9, [0 1]);
title('not(or(A, B))');
Program di atas merupakan contoh penggunaan operator logika dalam pengolahan citra digital menggunakan Matlab.
Program ini menggunakan dua citra yaitu "Lingkaran" dan "Persegi" yang diimpor dari direktori file "C:\Image". Kemudian, dalam subplot ditampilkan citra-citra tersebut serta hasil dari beberapa operasi logika seperti NOT, AND, OR, dan XOR, beserta beberapa kombinasinya.
Pada citra pertama dan kedua, tampilan citra lingkaran dan persegi, masing-masing ditampilkan dalam subplot pertama dan kedua.
Kemudian, dilakukan operasi NOT pada citra lingkaran menggunakan fungsi not(), yang hasilnya ditampilkan dalam subplot ketiga.
Selanjutnya, dilakukan operasi AND pada citra lingkaran dan persegi menggunakan fungsi and(), yang hasilnya ditampilkan dalam subplot keempat.
Selanjutnya, dilakukan operasi XOR pada citra lingkaran dan persegi menggunakan fungsi xor(), yang hasilnya ditampilkan dalam subplot kelima.
Selanjutnya, dilakukan operasi OR pada citra lingkaran dan persegi menggunakan fungsi or(), yang hasilnya ditampilkan dalam subplot keenam.
Selanjutnya, dilakukan operasi NOT pada hasil operasi AND pada citra lingkaran dan persegi, yang hasilnya ditampilkan dalam subplot ketujuh.
Selanjutnya, dilakukan operasi NOT pada hasil operasi XOR pada citra lingkaran dan persegi, yang hasilnya ditampilkan dalam subplot kedelapan.
Terakhir, dilakukan operasi NOT pada hasil operasi OR pada citra lingkaran dan persegi, yang hasilnya ditampilkan dalam subplot kesembilan.
Setiap citra hasil operasi ditampilkan dalam rentang [0 1], dengan judul subplot yang menjelaskan jenis operasi yang dilakukan pada citra.
7.3 Operasi Dilasi
Operasi dilasi merupakan salah satu operasi dasar dalam pengolahan citra digital yang digunakan untuk memperbesar atau memperluas benda atau objek dalam citra. Operasi ini menghasilkan citra yang lebih halus dan lebih terbaca oleh komputer.
Operasi dilasi merupakan salah satu operasi dasar dalam pengolahan citra digital yang sangat berguna dalam berbagai aplikasi, antara lain:
- Pengenalan objek Operasi dilasi dapat digunakan untuk memperjelas batas objek pada citra. Misalnya, dalam pengenalan objek pada citra medis, operasi dilasi dapat membantu memisahkan area yang berbeda pada citra, sehingga dapat lebih mudah dikenali dan diidentifikasi.
- Peningkatan kontras Operasi dilasi juga dapat digunakan untuk meningkatkan kontras pada citra. Dengan cara menggabungkan citra asli dengan citra hasil dilasi, citra akan menjadi lebih tajam dan kontrasnya akan meningkat.
- Segmentasi citra Operasi dilasi dapat digunakan dalam proses segmentasi citra, yaitu memisahkan objek dari latar belakang. Dengan operasi dilasi, objek dapat diperbesar dan latar belakang dapat dihapuskan, sehingga memudahkan proses segmentasi.
- Restorasi citra Operasi dilasi juga dapat digunakan dalam proses restorasi citra yang rusak. Dalam hal ini, operasi dilasi dapat digunakan untuk mengisi bagian-bagian yang hilang pada citra dan membuat citra terlihat lebih utuh dan baik.
- Pengolahan citra digital dalam bidang teknik sipil dan arsitektur Dalam bidang teknik sipil dan arsitektur, operasi dilasi dapat digunakan untuk memperbesar struktur bangunan pada citra, sehingga memudahkan pengukuran dan analisis struktur bangunan.
Operasi dilasi biasa dipakai untuk mendapatkan efek pelebaran terhadap piksel yang bernilai 1. Operasi ini dirumuskan seperti berikut (Gonzales & Woods, 2002)

Burger & Burge (2008) mendefinisikan operasi dilasi sebagai berikut:

Hasil dilasi berupa penjumlahan seluruh pasangan koordinat dari I dan H. Contoh operasi dilasi dengan menggunakan Persamaan 7.11 dapat dilihat pada Gambar 7.11. Pada contoh tersebut,

Dengan demikian,


Gambar 7.11 Efek dilasi dengan hotspot vertikal

Algoritma untuk melakukan operasi dilasi berdasar Persamaan 7.11 ditunjukkan berikut ini.

Implementasi dalam bentuk program dapat dilihat berikut ini.
| Program : dilasi.m |
function G = dilasi(F, H, hotx, hoty)
% DILASI Berguna untuk melaksanakan operasi dilasi.
% Masukan:
% F = citra yang akan dikenai dilasi
% H = elemen pentruksur
% (hy, hx) koordinat pusat piksel
[th, lh]=size(H);
[tf, lf]=size(F);
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
end
Xh = [];
Yh = [];
jum_anggota = 0;
% Menentukan koordinat piksel bernilai 1 pada H
for baris = 1 : th
for kolom = 1 : lh
if H(baris, kolom) == 1
jum_anggota = jum_anggota + 1;
Xh(jum_anggota) = -hotx + kolom;
Yh(jum_anggota) = -hoty + baris;
end
end
end
G = zeros(tf, lf); % Nolkan semua pada hasil dilasi
% Memproses dilasi
for baris = 1 : tf
for kolom = 1 : lf
for indeks = 1 : jum_anggota
if F(baris, kolom) == 1
xpos = kolom + Xh(indeks);
ypos = baris + Yh(indeks);
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
G(ypos, xpos) = 1;
end
end
end
end
end
Program di atas merupakan implementasi fungsi dilasi dalam pengolahan citra digital. Fungsi dilasi digunakan untuk memperbesar objek pada citra dengan menggunakan elemen struktural H.
Masukan fungsi ini adalah F yang merupakan citra yang akan dikenai dilasi, H yang merupakan elemen struktural atau kernel, hotx dan hoty yang merupakan koordinat pusat piksel pada elemen struktural. Jika hotx dan hoty tidak ditentukan, maka koordinat pusat piksel akan dihitung secara otomatis dengan membagi ukuran elemen struktural H.
Setelah itu, program ini menentukan koordinat piksel bernilai 1 pada H dan memproses dilasi pada citra F menggunakan elemen struktural H. Pada bagian akhir, program menghasilkan citra hasil dilasi G yang diinisialisasi dengan nol terlebih dahulu.
Dalam melakukan dilasi, program ini melakukan looping pada setiap piksel citra F. Jika piksel tersebut bernilai 1, maka program memeriksa semua piksel tetangganya pada elemen struktural H. Jika ada piksel pada H yang bernilai 1, maka piksel tetangga pada citra F akan dikenai dilasi, yaitu diubah menjadi 1 pada citra hasil dilasi G.
Contoh penggunaan fungsi dilasi ditunjukkan di bawah ini.


Contoh pada Gambar 7.11 diproses dengan cara seperti berikut:

Dengan menggunakan data F dan H di atas, perintah berikut dapat dicoba:

Angka 2 dan 1 pada argumen fungsi dilasi menyatakan bahwa hotspot pada H terletak pada kolom kedua dan baris pertama. Jadi, yang berfungsi sebagai hotspot adalah nilai 1 pada H yang terletak paling atas, bukan yang di tengah. Mengapa hasilnya seperti itu? Cobalah untuk menganalisisnya. Perlu diketahui, pada saat menentukan posisi hotspot, pemetaan seperti pada Gambar 7.12 harus digunakan.

Gambar 7.12 Penentuan hotspot menggunakan acuan angka 1 untuk pojok kiri atas kernel
Untuk melihat efek dilasi pada citra, kode berikut dapat dicoba.

Gambar asli dan hasil operasi dilasi dapat dilihat pada Gambar 7.13. Gambar 7.13(a) menyatakan gambar asli. Gambar 7.13(b) adalah hasil konversi ke bentuk biner dengan menggunakan fungsi bawaan bernama im2bw. Gambar 7.13(c) adalah hasil dilasi melalui perintah di depan. Hasil tersebut diperoleh dengan menggunakan struktur elemen berukuran 4 x 4 yang keseluruhan bernilai 1. Hal itu diperoleh melalui ones(4). Adapun Gambar 7.13(d) adalah hasil kalau elemen penstruktur yang digunakan (H) berukuran 7x7 dengan seluruh elemen bernilai 1.




Gambar 7.13 Contoh operasi dilasi pada citra
7.4 Operasi Erosi
Operasi morfologi erosi dalam pengolahan citra digital memiliki berbagai aplikasi, di antaranya:
- Penghapusan noise Operasi erosi digunakan untuk menghapus noise pada citra digital. Noise dapat terjadi ketika citra diambil atau diproses, dan dapat mengganggu hasil analisis atau pengolahan citra. Dengan melakukan operasi erosi pada citra yang terkena noise, kita dapat mengurangi atau menghilangkan noise tersebut.
- Deteksi tepi Operasi erosi juga dapat digunakan untuk mendeteksi tepi pada citra digital. Tepi dalam citra adalah perubahan tajam dalam intensitas piksel, dan erosi dapat menghilangkan bagian citra yang tidak penting, sehingga meninggalkan tepi citra yang lebih tajam.
- Pemisahan objek Operasi erosi dapat digunakan untuk memisahkan objek pada citra digital. Misalnya, jika ada dua objek yang saling berdekatan, erosi dapat digunakan untuk memisahkan mereka menjadi dua objek terpisah.
- Segmentasi citra Operasi erosi dapat digunakan dalam proses segmentasi citra, yaitu proses memisahkan citra menjadi beberapa wilayah dengan ciri-ciri yang sama. Erosi dapat membantu memisahkan wilayah-wilayah tersebut dengan lebih jelas dan akurat.
- Penapisan citra Operasi erosi dapat digunakan untuk membuat filter citra yang memisahkan piksel-piksel yang memiliki ciri-ciri tertentu. Misalnya, filter erosi dapat digunakan untuk memisahkan piksel yang berada pada tepi citra atau piksel yang memiliki intensitas tinggi dari piksel yang memiliki intensitas rendah.
- Pengurangan citra Operasi erosi dapat digunakan untuk mengurangi ukuran citra digital. Dengan menghapus piksel-piksel yang tidak penting atau tidak relevan, citra dapat menjadi lebih kecil dan memerlukan ruang penyimpanan yang lebih sedikit.
Operasi morfologi erosi dalam pengolahan citra digital adalah operasi pengolahan citra yang digunakan untuk menghilangkan piksel pada tepi objek dengan menggunakan elemen struktur yang berupa matriks kecil. Elemen struktur ini digunakan untuk menghapus piksel yang berada pada tepi objek sehingga objek tersebut menjadi lebih kecil. Operasi erosi mempunyai efek memperkecil struktur citra. Operasi ini dirumuskan seperti berikut (Gonzalez & Woods, 2002)

Adapun Burger & Burge (2008) mendefinisikan erosi sebagai berikut:

Makna yang tersirat pada Persamaan 7.12 dan 7.13 sebenarnya sama. Berdasarkan Persamaan 7.13, posisi p terdapat pada A Θ B jika seluruh nilai 1 di B terkandung di posisi p tersebut. Implementasi fungsi erosi berikut didasarkan makna di atas.
| Program : erosi.m |
function G = erosi(F, H, hotx, hoty)
% EROSI Berguna untuk melaksanakan operasi erosi.
% Masukan:
% F = citra yang akan dikenai dilasi
% H = elemen pentruksur
% (hy, hx) koordinat pusat piksel
[th, lh]=size(H);
[tf, lf]=size(F);
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
end
Xh = [];
Yh = [];
jum_anggota = 0;
% Menentukan koordinat piksel bernilai 1 pada H
for baris = 1 : th
for kolom = 1 : lh
if H(baris, kolom) == 1
jum_anggota = jum_anggota + 1;
Xh(jum_anggota) = -hotx + kolom;
Yh(jum_anggota) = -hoty + baris;
end
end
end
G = zeros(tf, lf); % Nolkan semua pada hasil erosi
% Memproses erosi
for baris = 1 : tf
for kolom = 1 : lf
cocok = true;
for indeks = 1 : jum_anggota
xpos = kolom + Xh(indeks);
ypos = baris + Yh(indeks);
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
if F(ypos, xpos) ~= 1
cocok = false;
break;
end
else
cocok = false;
end
end
if cocok
G(baris, kolom) = 1;
end
end
end
Program di atas merupakan implementasi operasi morfologi erosi pada citra digital dengan menggunakan bahasa pemrograman MATLAB. Berikut penjelasan dari setiap bagian program:
function G = erosi(F, H, hotx, hoty)
Baris pertama mendefinisikan sebuah fungsi erosi yang akan menerima empat argumen masukan, yaitu citra F yang akan dikenai erosi, elemen untuk eksur H, serta koordinat pusat piksel hotx dan hoty.
[th, lh]=size(H); [tf, lf]=size(F);
Baris ini mendeklarasikan variabel th dan lh sebagai ukuran elemen eksur H, serta variabel tf dan lf sebagai ukuran citra F.
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
end
Pernyataan ini memeriksa jumlah argumen masukan. Jika hanya ada dua argumen, yaitu citra F dan elemen eksur H, maka nilai hotx dan hoty akan diinisialisasi sebagai pusat elemen eksur H.
Xh = [];
Yh = [];
jum_anggota = 0;
% Menentukan koordinat piksel bernilai 1 pada H
for baris = 1 : th
for kolom = 1 : lh
if H(baris, kolom) == 1
jum_anggota = jum_anggota + 1;
Xh(jum_anggota) = -hotx + kolom;
Yh(jum_anggota) = -hoty + baris;
end
end
end
Program ini menentukan koordinat piksel pada elemen eksur H yang memiliki nilai 1 dan menyimpannya dalam array Xh dan Yh.
G = zeros(tf, lf); % Nolkan semua pada hasil erosi
% Memproses erosi
for baris = 1 : tf
for kolom = 1 : lf
cocok = true;
for indeks = 1 : jum_anggota
xpos = kolom + Xh(indeks);
ypos = baris + Yh(indeks);
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
if F(ypos, xpos) ~= 1
cocok = false;
break;
end
else
cocok = false;
end
end
if cocok
G(baris, kolom) = 1;
end
end
end
Program ini memproses operasi erosi pada citra F dengan elemen eksur H. Untuk setiap piksel pada citra F, program memeriksa apakah setiap piksel di sekitarnya yang ditentukan oleh elemen eksur H bernilai 1. Jika semua piksel bernilai 1, maka piksel tersebut dianggap cocok dan diberi nilai 1 pada citra hasil G. Jika tidak, piksel tersebut dianggap tidak cocok dan tidak diberi nilai pada citra hasil G.
Demikianlah penjelasan dari program MATLAB untuk operasi morfologi erosi pada citra digital.
Contoh penggunaan fungsi erosi dapat dilihat berikut ini.

Gambar berikut memperlihatkan bentuk visual untuk contoh di atas.

Gambar 7.14 Contoh visualisasi operasi erosi

Contoh penggunaan operasi erosi pada citra dapat dicoba dengan menggunakan perintah berikut:

Citra asli dan hasil pemrosesan dengan operasi erosi dapat dilihat pada Gambar 7.15. Terlihat bahwa dengan menggunakan elemen penstruktur

yang diperoleh melalui H = ones(6), semua daun yang bersinggungan dapat dipisahkan. Namun, sebagai konsekuensinya, bentuk beberapa daun agak berubah.





Gambar 7.15 Contoh operasi erosi pada citra
Operasi erosi dapat dimanfaatkan untuk memperoleh tepi objek. Sebagai contoh, kode berikut dapat dicoba:

Hasilnya ditunjukkan pada Gambar 7.16(a).
Perintah
BW = not(BW);
digunakan untuk melakukan operasi komplemen. Hal ini perlu dilakukan mengingat latarbelakang gambar asli berwarna putih. Selanjutnya, perintah berikut dapat dicoba:

Hasilnya ditunjukkan pada Gambar 7.16(b). Kuncinya sangat sederhana. Tepi objek sesungguhnya dapat diperoleh melalui:




Gambar 7.16 Contoh erosi untuk mendapatkan tepi objek
7.5 Bentuk dan Ukuran Elemen Penstruktur
Berdasarkan contoh pada Gambar 7.13, terlihat bahwa ukuran elemen penstruktur menentukan hasil operasi dilasi. Selain ukuran, bentuk elemen penstruktur juga menentukan hasil operasi morfologi.
Bentuk yang umum digunakan pada operasi morfologi adalah cakram atau lingkaran. Efek yang diberikan merata pada segala arah. Bentuk dua buah cakram dapat dilihat pada Gambar 7.17.

Bentuk elemen penstruktur yang lain yaitu belah ketupat, garis, persegi panjang, bujur sangkar, dan oktagon. Gambar 7.18 menunjukkan contoh bentukbentuk tersebut.


Gambar 7.18 Berbagai bentuk elemen penstruktur
Untuk kepentingan memperoleh elemen penstruktur, MATLAB menyediakan fungsi bernama strel. Sayangnya, fungsi seperti ini belum diimplementasikan pada Octave. Sebagai contoh, elemen penstruktur berbentuk cakram dengan radius 8 diperoleh dengan menggunakan perintah seperti berikut:

Agar hasil strel dapat dimanfaatkan untuk fungsi erosi ataupun dilasi, elemen penstruktur dapat diperoleh dengan memberikan perintah semacam berikut:


Dengan cara seperti itu, H dapat digunakan pada fungsi erosi atau dilasi. Contoh:

Hasilnya dapat dilihat di Gambar 7.19(b).
Gambar 7.19 juga sekaligus memperlihatkan efek berbagai ukuran elemen penstruktur. Terlihat bahwa dengan menggunakan erosi, objek tertentu (yang ukurannya lebih kecil daripada elemen penstruktur) akan hilang. Hasil pada gambar tersebut juga menunjukkan bahwa semakin besar ukuran elemen penstruktur, objek semakin mengecil.







Gambar 7.19 Contoh penggunaan elemen penstruktur yang bersumber strel dan dikenakan pada erosi
Perlu diketahui, fungsi strel memberikan berbagai pilihan dalam membuat elemen penstruktur. Tabel 7.4 memperlihatkan beberapa contoh.

Perlu juga diketahui, Octave dan MATLAB mendukung fungsi untuk kepentingan dilasi bernama imdilate dan untuk erosi bernama imerode. Contoh penggunaannya seperti berikut:
Contoh imdilate:

Berikut ini Hasilnya:



Contoh imerode:

Berikut ini Hasilnya:



Berikut ini contoh imerode dengan cara lain:


Hasilnya dapat dilihat pada Gambar 7.20


Gambar 7.20 Erosi dengan fungsi erode
7.6 Operasi Opening
Operasi opening pada pengolahan citra digital adalah operasi morfologi yang terdiri dari dua tahap yaitu erosi dilanjutkan dengan dilasi. Tahap erosi dilakukan terlebih dahulu untuk menghilangkan bagian-bagian kecil atau tepi yang tidak diinginkan pada objek dalam citra. Setelah tahap erosi dilakukan, tahap dilasi dilakukan untuk mengembalikan objek ke ukuran semula sekaligus mengisi celah-celah kecil yang mungkin masih ada pada objek. Tujuan dari operasi opening adalah untuk menghilangkan noise pada citra digital, memisahkan objek yang saling berdekatan dan memperbaiki tepi objek.
Beberapa contoh aplikasi operasi opening pada pengolahan citra digital antara lain:
- Pembersihan citra x-ray: Operasi opening digunakan untuk menghilangkan kebisingan pada citra x-ray sehingga gambar yang dihasilkan menjadi lebih jelas dan dapat membantu diagnosis lebih tepat.
- Pengenalan karakter tulisan tangan: Operasi opening dapat digunakan untuk memisahkan karakter tulisan tangan yang menempel dan mengurangi kebisingan pada citra karakter tulisan tangan.
- Identifikasi objek pada citra mikroskop: Operasi opening dapat digunakan untuk memisahkan objek yang saling menempel pada citra mikroskop, sehingga proses identifikasi objek menjadi lebih mudah.
Dalam aplikasinya, operasi opening biasanya diikuti dengan operasi closing, yang merupakan kebalikan dari operasi opening. Operasi closing dilakukan dengan melakukan erosi terlebih dahulu kemudian diikuti dengan dilasi, dan sering digunakan untuk mengisi celah pada objek yang berdekatan pada citra.
Operasi opening adalah operasi erosi yang diikuti dengan dilasi dengan menggunakan elemen penstruktur yang sama. Operasi ini berguna untuk menghaluskan kontur objek dan menghilangkan seluruh piksel di area yang terlalu kecil untuk ditempati oleh elemen penstruktur. Dengan kata lain, semua struktur latardepan/foreground yang berukuran lebih kecil daripada elemen penstruktur akan tereliminasi oleh erosi dan kemudian penghalusan dilakukan melalui dilasi. Definisi operasi opening seperti berikut:

Contoh efek opening dapat diperoleh dengan memberikan perintah berikut:

Penulisan H di atas sama dengan penulisan di bawah ini:

Hasilnya dapat dilihat pada Gambar 7.21(c).




Gambar 7.21 Perbandingan operasi erosi, opening, dan closing
Gambar 7.21 menunjukkan bahwa operasi erosi membuat objek mengecil dan bahkan ada yang hilang. Adapun operasi opening membuat ukuran objek relatif tetap sama, walaupun juga menghilangkan objek yang berukuran kecil (kurus). Namun, perlu diketahui, operasi opening membuat penghalusan di bagian
tepi. Perhatikan, ujung segitiga tidak tajam setelah dikenai operasi opening. Sebagai pembanding, Gambar 7.21(d) menunjukkan hasil penggunaan operasi closing, yang akan dibahas sesudah subbab ini.
Operasi opening sering dikatakan sebagai idempotent. Artinya, jika suatu citra telah dikenai operasi opening, pengenaan opening dengan elemen penstruktur yang sama tidak membawa efek apapun. Sifat ini dapat dituliskan secara matematis seperti berikut:

Operator opening dapat dimanfaatkan sebagai filter lolos-rendah, filter lolos-tinggi, maupun sebagai tapis lolos-bidang apabila elemen penstruktur yang digunakan berupa cakram (Shih, 2009). Berikut adalah rumusannya:

Skrip berikut digunakan untuk menangani operasi opening:
| Program : opening.m |
function G = opening (F, H)
% OPENING Melakukan operasi opening.
G = dilasi(erosi(F, H), H);
7.7 Operasi Closing
Operasi closing pada pengolahan citra digital adalah salah satu operasi morfologi yang digunakan untuk menghilangkan lubang kecil atau celah pada objek dalam citra digital. Operasi ini dilakukan dengan menggabungkan dua tahap operasi, yaitu dilasi dan erosi.
Pada tahap pertama, dilakukan operasi dilasi terhadap citra digital dengan menggunakan elemen struktur H. Kemudian, pada tahap kedua, dilakukan operasi erosi pada citra hasil dilasi dengan elemen struktur yang sama. Hasil akhir dari operasi closing adalah citra yang lebih halus dan terhubung secara keseluruhan.
Secara umum, operasi closing berguna untuk memperbaiki atau memperhalus bentuk objek dalam citra digital dan menghilangkan lubang atau celah yang mengganggu. Misalnya, pada citra X-ray, operasi closing dapat digunakan untuk memperbaiki citra tulang yang rusak atau patah sehingga citra tersebut dapat lebih mudah dianalisis oleh dokter atau ahli radiologi.
Operasi morfologi closing dalam pengolahan citra digital digunakan untuk menghilangkan lubang kecil dan menghubungkan objek yang terputus. Operasi ini dapat digunakan pada citra medis untuk memperbaiki citra rontgen atau CT scan yang terganggu oleh noise atau artefak.
Contoh aplikasi dari operasi closing adalah dalam pengolahan citra mikroskopis untuk mengidentifikasi sel-sel atau benda-benda kecil. Dalam citra mikroskopis, seringkali terdapat bagian-bagian kecil yang terpisah-pisah dan memerlukan penggabungan untuk memperoleh informasi yang akurat. Operasi closing dapat digunakan untuk menggabungkan bagian-bagian kecil ini dan membentuk objek yang utuh.
Selain itu, operasi closing juga dapat digunakan dalam pengolahan citra satelit atau foto udara untuk menghilangkan area kecil yang tidak relevan atau noise yang muncul akibat gangguan pada pengambilan gambar. Dengan menggunakan operasi closing, area yang tidak relevan dapat dihilangkan sehingga objek yang diinginkan menjadi lebih jelas dan terlihat dengan lebih baik.
Operasi closing berguna untuk menghaluskan kontur dan menghilangkan lubang-lubang kecil. Definisinya seperti berikut:

Jadi, operasi closing dilaksanakan dengan melakukan operasi dilasi terlebih dahulu dan kemudian diikuti dengan operasi erosi.
Contoh berikut menunjukkan efek penutupan lubang pada daun:

Perintah di atas menampilkan hasil seperti terlihat pada Gambar 7.22(a). Selanjutnya, perintah berikut dapat dicoba:

Hasilnya ditunjukkan pada Gambar 7.22(b).


Gambar 7.22 Lubang kecil tertutup oleh operasi closing
Berikut adalah implementasi operasi closing:
| Program : closing.m |
function G = closing (F, H)
% CLOSING Melakukan operasi opening.
G = erosi(dilasi(F, H), H);
7.8 Transformasi Hit-or-Miss
Transformasi Hit-or-Miss adalah teknik operasi morfologi pada pengolahan citra digital yang digunakan untuk mendeteksi pola tertentu dalam citra. Teknik ini bekerja dengan mencocokkan elemen struktur hit (hit pattern) dan elemen struktur miss (miss pattern) pada citra.
Elemen struktur hit (hit pattern) adalah suatu himpunan piksel pada citra yang harus cocok dengan piksel pada citra input sehingga dikatakan sebagai hit. Sedangkan elemen struktur miss (miss pattern) adalah suatu himpunan piksel pada citra yang tidak boleh ada pada citra input agar dikatakan sebagai hit.
Transformasi Hit-or-Miss dilakukan dengan menggeser elemen struktur hit dan miss secara bergantian pada seluruh piksel citra input. Jika pada suatu posisi elemen struktur hit dan miss cocok dengan citra input, maka piksel tersebut dianggap sebagai hit dan diberi nilai 1 pada citra output. Namun jika elemen struktur hit dan miss tidak cocok dengan citra input, maka piksel tersebut dianggap sebagai miss dan diberi nilai 0 pada citra output.
Teknik Transformasi Hit-or-Miss sering digunakan untuk deteksi tepi, deteksi garis, dan deteksi bentuk tertentu pada citra. Namun, teknik ini sangat sensitif terhadap perubahan skala, rotasi, dan pergeseran pada pola yang ingin dideteksi.
Operasi Transformasi Hit-or-Miss pada pengolahan citra digital dapat digunakan dalam berbagai aplikasi seperti:
- Deteksi Tepi Transformasi Hit-or-Miss dapat digunakan untuk mendeteksi tepi objek pada citra digital. Dengan menggunakan elemen penstruktur yang sesuai, operasi ini dapat menghasilkan citra biner baru yang menunjukkan lokasi tepi dari objek pada citra awal.
- Pendeteksian Objek Transformasi Hit-or-Miss dapat digunakan untuk mendeteksi keberadaan objek tertentu pada citra digital. Dalam hal ini, elemen penstruktur yang digunakan merepresentasikan bentuk dari objek yang dicari. Jika citra input berisi objek yang cocok dengan bentuk ini, maka citra biner baru yang menunjukkan lokasi objek tersebut dapat dihasilkan.
- Pendeteksian Pola Transformasi Hit-or-Miss dapat digunakan untuk mendeteksi pola tertentu pada citra digital. Dalam hal ini, elemen penstruktur digunakan untuk merepresentasikan pola yang ingin dideteksi. Jika citra input berisi pola yang cocok dengan bentuk ini, maka citra biner baru yang menunjukkan lokasi pola tersebut dapat dihasilkan.
- Pembersihan Citra Transformasi Hit-or-Miss dapat digunakan untuk membersihkan citra digital dari noise dan artefak lainnya. Dalam hal ini, elemen penstruktur digunakan untuk merepresentasikan noise atau artefak yang ingin dihapuskan. Jika citra input berisi noise atau artefak yang cocok dengan bentuk ini, maka citra biner baru yang bebas dari noise dan artefak tersebut dapat dihasilkan.
- Segmentasi Citra Transformasi Hit-or-Miss dapat digunakan untuk melakukan segmentasi citra digital. Dalam hal ini, elemen penstruktur digunakan untuk merepresentasikan bagian dari citra yang ingin disegmentasi. Jika citra input berisi bagian citra yang cocok dengan bentuk ini, maka citra biner baru yang menunjukkan lokasi bagian citra tersebut dapat dihasilkan.
Transformasi Hit-or-Miss (THM) pada citra biner A didefinisikan sebagai berikut:

Dalam hal ini, biasanya

Morfologi seperti itu dipakai untuk pemrosesan dan pengenalan bentuk pada citra biner.

Sebagai contoh, terdapat pola seperti terlihat pada Gambar 7.23(a). Target yang dikehendaki adalah menemukan pola tersebut pada citra yang terlihat pada Gambar 7.23(b).

Secara manual dapat dilihat bahwa target yang dicari ada tiga buah. Untuk menemukan posisinya, dapat digunakan operasi erosi. Penyelesaiannya seperti berikut:


Terlihat bahwa ada tiga elemen pada G yang bernilai 1. Pada posisi itulah target ditemukan. Gambar 7.24 memperlihatkan isi G. Elemen yang bernilai 1 ditandai dengan arsiran yang agak gelap. Arsiran yang agak terang digunakan untuk menandai keberadaan target.

Nah, sekarang digunakan komplemen atas target yang dicari. Dalam hal ini

Jadi,

Gambar 7.25 menunjukkan keadaan H2 dan komplemen citra.

Pencarian seperti pada Gambar 7.25 dapat dilakukan dengan menggunakan:

Hasilnya ditunjukkan pada Gambar 7.26.

Hasil THM diperoleh dengan melakukan interseksi antara hasil yang terletak pada 7.24 dan 7.26. Secara visual terlihat bahwa interseksi kedua hasil tersebut menghasilkan satu nilai saja, yaitu pada posisi yang terlihat pada Gambar 7.27.

Hasil di atas menyatakan bahwa pola yang dicari hanya ditemukan satu kali pada citra dengan posisi seperti yang ditunjukkan oleh angka 1. Bagian yang diarsir lebih terang menyatakan pola yang dicari. Dalam hal ini, interseksi diperoleh dengan menggunakan AND. Jadi, solusi THM secara lengkap sebagai berikut:

THM yang dikupas di atas mempunyai kelemahan, yakni perbedaan satu piksel saja akan membuat pola tidak dikenal. Dalam praktik, terkadang dikehendaki agar THM bersifat sedikit pemaaf, sehingga pola yang sedikit berbeda dalam citra tetap dianggap sama dengan target. Pembahasan mengenai hal itu dapat dilihat pada Solomon & Breckon (2011).

Untuk kepentingan memudahkan implementasi yang melibatkan THM, sebuah fungsi bernama thm ditunjukkan berikut ini.
| Program : thm.m |
function G = thm(F, H)
% THM Digunakan untuk menangani transformasi Hit-or-Miss
% F adalah citra yang akan dikenai operasi
% H adalah elemen penstruktur
[tinggi, lebar] = size(H);
H1 = H;
H2 = not(H1);
G = and(erosi(F, H1) , erosi(not(F), H2));
Program Matlab di atas merupakan implementasi dari Transformasi Hit-or-Miss (THM) pada pengolahan citra digital.
Transformasi Hit-or-Miss (THM) digunakan untuk mendeteksi suatu pola atau objek dalam citra digital. Pola atau objek yang dicari harus ditentukan terlebih dahulu dalam bentuk elemen struktur H yang memiliki dua nilai yaitu 1 dan 0, yang merepresentasikan bagian yang harus cocok dan tidak cocok.
Pada program Matlab di atas, fungsi thm menerima masukan berupa citra F dan elemen struktur H. Program menghitung erosi dari citra F dengan H1 dan not(H1) (dijadikan elemen struktur H2), kemudian menggabungkan hasil erosi dari kedua erosi tersebut dengan operator logika AND.
Hasil dari operasi ini akan menunjukkan lokasi di mana elemen struktur H cocok dengan citra F, serta di mana elemen struktur H2 tidak cocok dengan citra F. Oleh karena itu, operasi ini efektif untuk mendeteksi objek yang cocok dengan elemen struktur H dalam citra F.
Hasil dari operasi THM adalah citra biner, yaitu citra yang hanya memiliki dua nilai yaitu 0 (hitam) dan 1 (putih), dengan 1 merepresentasikan bagian dalam citra yang cocok dengan elemen struktur H.
Contoh berikut menunjukkan cara menemukan batas kiri objek kunci dengan memanfaatkan fungsi thm:

Pada contoh di atas, elemen pentruktur yang digunakan untuk memperoleh batas kiri objek berupa:

Hasilnya ditunjukkan pada Gambar 7.29(b). Adapun perintah berikut memberikan hasil seperti terlihat pada Gambar 7.29(c).




Gambar 7.29 Contoh memperoleh batas kiri dan batas atas kunci
Pada beberapa kasus, elemen penstruktur yang digunakan untuk melakukan THM melibatkan bit-bit yang disebut dengan istilah “don‟t care” (dampak nilai 1 atau 0 sama saja). Contoh:

Pada contoh di atas, x menyatakan “don't care” atau bebas (0 atau 1). Nah, untuk menangani kasus seperti itu, dapat dibuat transformasi Hit_or_Miss seperti berikut.
| Program : thm2.m |
function G = thm2(F, H)
% Digunakan untuk menangani transformasi Hit-or-Miss
% F adalah citra yang akan dikenai operasi
% H adalah elemen penstruktur
% H bisa mengandung nilai -1 untuk menyatakan
% don't care
[tinggi, lebar] = size(H);
% Membentuk H1
% Periksa nilai don't care (yaitu -1) dan gantilah dengan nol
H1 = H;
for baris = 1 : tinggi
for kolom = 1 : lebar
if H1(baris, kolom) == -1
H1(baris, kolom) = 0;
end
end
end
% Membentuk H2 sebagai komplemen H1
% Periksa nilai don't care (yaitu -1) dan gantilah dengan nol
for baris = 1 : tinggi
for kolom = 1 : lebar
if H(baris, kolom) == -1
H2(baris, kolom) = 0;
else
H2(baris, kolom) = not(H(baris, kolom));
end
end
end
G = and(erosi(F, H1) , erosi(not(F), H2));
return
Program di atas merupakan implementasi dari transformasi Hit-or-Miss pada pengolahan citra digital. Transformasi ini digunakan untuk mendeteksi pola tertentu yang ada pada citra.
Fungsi thm2 ini menerima dua input yaitu citra grayscale F dan elemen penstruktur H. Elemen penstruktur H dapat mengandung nilai -1 untuk menunjukkan nilai don't care, yaitu piksel yang diabaikan selama proses transformasi.
Pertama-tama, program ini memeriksa apakah ada nilai don't care pada H1, kemudian menggantinya dengan nilai nol. Setelah itu, program membentuk H2 sebagai komplemen dari H1, di mana nilai don't care digantikan dengan nilai nol dan nilai lainnya di-invers.
Kemudian, program melakukan erosi terhadap citra F menggunakan H1 dan citra yang telah di-invers dengan H2. Setelah itu, program melakukan operasi and (logika AND) pada kedua citra hasil erosi tersebut untuk mendapatkan citra hasil transformasi Hit-or-Miss.
Hasil dari operasi ini disimpan pada variabel G dan kemudian dikembalikan sebagai output dari fungsi thm2.
Dengan demikian, fungsi thm2 ini dapat digunakan untuk melakukan transformasi Hit-or-Miss pada citra digital dengan elemen penstruktur yang mengandung nilai don't care.
Secara prinsip, bagian yang bernilai -1 (“don't care”) selalu diubah menjadi nol. Ketika dikomplemenkan, nilai -1 juga menghasilkan nilai 0. Dengan demikian, H1 AND H2 akan selalu menghasilkan nilai 0 pada setiap elemen. Contoh penggunaan thm2 akan diberikan ketika membahas convex hull.
7.9 Skeleton
Morfologi skeleton pada pengolahan citra digital merupakan teknik untuk menghasilkan representasi garis tengah atau "tulang" dari objek dalam citra. Dalam teknik ini, elemen penstruktur berupa struktur yang tipis dan simetris, seperti garis atau lingkaran, digunakan untuk mengikis citra secara iteratif hingga hanya tersisa representasi garis tengah dari objek tersebut. Representasi ini sering digunakan dalam pengenalan pola dan analisis bentuk objek dalam citra. Morphological skeleton dapat digunakan dalam berbagai aplikasi, seperti pengenalan tanda tangan, pengenalan karakter, dan deteksi nukleus pada citra medis. Teknik ini juga dapat digunakan sebagai dasar untuk teknik pengolahan citra yang lebih kompleks, seperti segmentasi dan rekonstruksi citra.
Operasi morfologi skeleton dalam pengolahan citra digital digunakan untuk memperoleh representasi sederhana dari bentuk objek pada citra. Aplikasi dari operasi skeleton antara lain:
- Analisis struktur jalan: Pada pengolahan citra untuk analisis struktur jalan, skeleton dapat digunakan untuk memisahkan bagian tengah jalan dan tepinya. Hal ini dapat membantu dalam analisis kemacetan lalu lintas, perbaikan jalan, dan perencanaan lalu lintas.
- Pengenalan tulisan tangan: Pada pengolahan citra untuk pengenalan tulisan tangan, skeleton dapat digunakan untuk memperoleh representasi sederhana dari tulisan. Hal ini dapat membantu dalam pengenalan karakter dan kata.
- Analisis struktur jaringan: Pada pengolahan citra untuk analisis struktur jaringan, skeleton dapat digunakan untuk memperoleh representasi sederhana dari struktur jaringan seperti pembuluh darah, jaringan saraf, dan sebagainya.
- Rekonstruksi objek: Pada pengolahan citra untuk rekonstruksi objek, skeleton dapat digunakan untuk memperoleh representasi sederhana dari objek sehingga mempermudah proses rekonstruksi.
Dengan demikian, operasi morfologi skeleton dapat digunakan dalam berbagai aplikasi pengolahan citra digital, terutama dalam analisis struktur objek pada citra.
Ada beberapa cara yang digunakan untuk membentuk skeleton. Skeleton merupakan bentuk unik suatu objek, yang menyerupai rangka suatu objek. Skeleton mempunyai tiga karakteristik seperti berikut (Young, dkk., 1998):
- ketebalannya 1 piksel,
- melewati tengah objek, dan
- menyatakan topologi objek.
Namun, dalam praktik, ada kasus tertentu yang tidak dapat dipenuhi oleh skeleton. Contoh ditunjukkan pada Gambar 7.35.

Skeleton digunakan untuk representasi dan pengenalan tulisan tangan, pola sidik jari, struktur sel biologis, diagram rangkaian, gambar teknik, rencana jalur robot, dan semacam itu (Shih, 2009). Terkadang istilah skeletonisasi objek disebut sebagai Medial Axis Transform (Myler & Weeks, 1993).
Salah satu cara untuk mendapatkan skeleton adalah melalui thinning. Thinning (pengurusan) adalah operasi morfologi yang digunakan untuk memperkecil ukuran geometrik objek dengan hasil akhir berupa skeleton atau rangka, dengan definisinya sebagai berikut:

Dalam hal ini, A adalah citra biner dan B adalah delapan elemen penstruktur B1 ... Bn. Satu fase perhitungan thinning dilakukan dengan menggunakan delapan elemen penstruktur. Beberapa fase diperlukan sampai diperoleh hasil yang tidak lagi mengubah struktur citra.


Contoh delapan elemen penstruktur yang digunakan untuk thinning ditunjukkan pada Gambar 7.28 (Meyer dan Weeks, 1993). Fase pertama operasi thinning dilakukan sebagai berikut:

Implementasi thinning ditunjukkan berikut ini.
| Program : thinning.m |
function G = thinning(F, fase)
% Untuk melakukan operasi thinning terhadap citra F
% Argumen fase menentukan hasil thinning untuk
% fase tersebut. Jika fase tidak disebutkaan,
% operasi thinning dilakukan sampai cstruktur citra
% tidak berubah lagi
if nargin == 1 % Kalau fase tidak disebutkan
fase = 10000000000; % Isi dengan bilangan yang besar
end
% Elemen penstruktur
H1 = [ 0 0 0; 1 1 1; 1 1 1 ];
H2 = [ 1 1 1; 1 1 1; 0 0 0 ];
H3 = [ 0 1 1; 0 1 1; 0 1 1 ];
H4 = [ 1 1 0; 1 1 0; 1 1 0 ];
H5 = [ 1 0 0; 1 1 0; 1 1 1 ];
H6 = [ 1 1 1; 0 1 1; 0 0 1 ];
H7 = [ 1 1 1; 1 1 0; 1 0 0 ];
H8 = [ 0 0 1; 0 1 1; 1 1 1 ];
[tinggi, lebar] = size(F);
C = F;
for p = 1 : fase
C1 = C;
C = and(C, not(thm(C,H1)));
C = and(C, not(thm(C,H2)));
C = and(C, not(thm(C,H3)));
C = and(C, not(thm(C,H4)));
C = and(C, not(thm(C,H5)));
C = and(C, not(thm(C,H6)));
C = and(C, not(thm(C,H7)));
C = and(C, not(thm(C,H8)));
% Periksa hasil C1 dan C sama atau tidak
sama = true;
for baris = 1 : tinggi
for kolom = 1 : lebar
if C1(baris, kolom) ~= C(baris, kolom)
sama = false;
break;
end
end
if sama == false
break;
end
end
if sama == true
break; % Akhiri kalang
end
end
G = C;
Program di atas merupakan implementasi dari operasi thinning pada pengolahan citra digital dengan menggunakan elemen penstruktur H1 - H8 yang didefinisikan dalam program. Operasi thinning dilakukan dengan menghilangkan bagian dari citra yang membentuk struktur seperti tulang rangka atau skeleton, sehingga hanya menyisakan struktur utama dalam citra.
Pada awal program, argumen fase diatur sebagai bilangan besar jika tidak disebutkan saat memanggil fungsi thinning. Kemudian dilakukan inisialisasi elemen penstruktur H1 - H8. Variabel C diinisialisasi dengan citra F.
Di dalam perulangan, dilakukan thinning pada citra C dengan menggunakan setiap elemen penstruktur H1 - H8. Setelah thinning dilakukan, hasil thinning disimpan ke dalam variabel C. Kemudian dilakukan pengecekan apakah hasil thinning sama dengan hasil thinning pada iterasi sebelumnya. Jika hasilnya sama, iterasi dihentikan dan citra hasil thinning disimpan ke dalam variabel G. Jika tidak, perulangan dilanjutkan hingga fase tercapai.
Hasil akhir dari program adalah citra thinning yang disimpan dalam variabel G.
Contoh penggunaan fungsi thinning:

Hasilnya ditunjukkan pada Gambar 7.32.


Gambar 7.32 Citra yang berisi berbagai bentuk dan hasil akhir setelah mengalami operasi thinning
Adapun contoh berikut menunjukkan pengenaan elemen penstruktur untuk fase kedua:

Hasilnya ditunjukkan pada Gambar 7.33(a). Hasil fase ke-6, ke-10 dan ke-30 diperoleh dengan menggunakan perintah berikut:



Hasilnya ditunjukkan pada Gambar 7.33(b).




Gambar 7.33 Hasil thinning pada berbagai fase
Skeleton juga dapat diperoleh melalui morfologi, seperti yang diajukan oleh Serra (1982). Definisi skeleton dijelaskan berikut ini. Misalnya, A menyatakan citra biner dengan 1 menyatakan piksel objek dan 0 menyatakan piksel-piksel latarbelakang. Skeleton A diperoleh dengan menggunakan rumus:

Dalam hal ini,

B adalah elemen penstruktur dan K adalah bilangan terbesar sebelum membuat A tererosi menjadi himpunan kosong. Kondisi pada K tersebut dapat ditulis secara matematis seperti berikut:

yang menyatakan bahwa hasil erosi dierosi ulang sampai terjadi k erosi. Contoh yang menunjukkan proses pembuatan skeleton suatu objek dengan cara di atas ditunjukkan pada Gambar 7.36. Pada contoh tersebut, S2(A) berupa himpunan kosong mengingat semua elemen bernilai nol. Dengan demikian, K = 1
atau S(A) = S1(A).



Namun, cara seperti itu tidak menjamin terjadinya skeleton yang titik-titiknya terkoneksi. Hal ini telah diutarakan oleh Gonzalez dan Woods (2002). Di Octave dan MATLAB, skeleton dapat diperoleh dengan menggunakan fungsi bwmorph. Contoh:

Perlu diketahui, im2bw digunakan untuk memperoleh citra biner. Setelah itu, Img dapat diproses oleh bwmorph. Argumen 'skel' menyatakan bahwa hasil yang diharapkan adalah skeleton. Argumen inf menyatakan nilai yang tak berhingga, yang digunakan untuk menyatakan jumlah pengulangan maksimal dalam membentuk skeleton. Hasil operasi di depan ditunjukkan pada Gambar 7.35.

7.10 Thickening
Morfologi thickening pada pengolahan citra digital adalah operasi untuk memperlebar atau membesarkan bagian-bagian objek pada citra dengan menggunakan elemen penstruktur. Operasi ini sering digunakan untuk memperbaiki hasil operasi thinning atau skeletonization yang terlalu mempersempit bagian-bagian objek pada citra. Pada dasarnya, operasi thickening dilakukan dengan mengulangi operasi dilatasi pada citra dengan elemen penstruktur tertentu hingga memperbesar bagian-bagian objek pada citra.
Thickening dalam pengolahan citra digital dapat diterapkan pada berbagai macam aplikasi, di antaranya:
- Segmentasi citra: Thickening dapat digunakan untuk mengisi lubang pada objek dalam citra, sehingga dapat memperbaiki hasil segmentasi yang kurang sempurna.
- Analisis citra: Dalam analisis citra, thickening dapat digunakan untuk memperbesar objek dalam citra, sehingga memudahkan dalam pengukuran dan analisis fitur-fitur dari objek tersebut.
- Pengenalan pola: Thickening dapat digunakan sebagai proses pra-pemrosesan dalam pengenalan pola, terutama dalam proses ekstraksi fitur citra. Dalam kasus ini, thickening dapat digunakan untuk menghasilkan fitur-fitur yang lebih representatif dan memudahkan proses klasifikasi objek.
- Peningkatan kualitas citra: Thickening dapat digunakan untuk memperbaiki kualitas citra yang kabur atau rusak, terutama pada citra medis seperti CT scan atau MRI. Proses thickening dapat membantu dalam memperjelas detail-detail pada citra yang kurang jelas atau terdistorsi.
- Pemrosesan citra satelit: Thickening dapat digunakan dalam pemrosesan citra satelit, terutama dalam aplikasi pemantauan dan deteksi bencana alam. Dalam hal ini, thickening dapat membantu dalam mengidentifikasi wilayah-wilayah yang terkena dampak bencana dengan lebih akurat dan efektif.
Thickening (penebalan) adalah operasi yang berkebalikan dengan thinning. Fungsinya adalah memperbesar ukuran geometris objek. Operasi ini didefinisikan sebagai berikut:

Dalam hal ini, A adalah citra biner dan B adalah delapan elemen penstruktur B1...Bn. Satu fase perhitungan thickening dilakukan dengan menggunakan delapan elemen penstruktur. Contoh kedelapan elemen penstruktur disajikan pada Gambar 7.36.

Fase pertama operasi thickening dilakukan sebagai berikut:

Implementasi thickening ditunjukkan berikut ini.
| Program : thickening.m |
function G = thickening(F, n_iterasi)
% Digunakan untuk menebalkan objek yang terdapat pada
% citra F.
% Argumen n_iterasi menyatakan jumlah iterasi atau
% fase yang dikehendaki untuk melakukan
% penebalan objek'
H1 = [ 1 1 1; 0 0 0; 0 0 0 ];
H2 = [ 0 0 0; 0 0 0; 1 1 1 ];
H3 = [ 1 0 0; 1 0 0; 1 0 0 ];
H4 = [ 0 0 1; 0 0 1; 0 0 1 ];
H5 = [ 0 1 1; 0 0 1; 0 0 0 ];
H6 = [ 0 0 0; 1 0 0; 1 1 0 ];
H7 = [ 0 0 0; 0 0 1; 0 1 1 ];
H8 = [ 1 1 0; 1 0 0; 0 0 0 ];
C = F; % Salin citra F ke C
for p = 1 : n_iterasi
C = or(C, thm(C,H1));
C = or(C, thm(C,H2));
C = or(C, thm(C,H3));
C = or(C, thm(C,H4));
C = or(C, thm(C,H5));
C = or(C, thm(C,H6));
C = or(C, thm(C,H7));
C = or(C, thm(C,H8));
end
G = C;
Program Matlab di atas merupakan implementasi algoritma morfologi matematika untuk melakukan operasi thickening pada citra digital F dengan menggunakan sejumlah iterasi (n_iterasi) yang diinginkan. Operasi thickening bertujuan untuk memperbesar atau memperlebar area atau ukuran dari objek pada citra digital.
Pertama, program menginisialisasi sejumlah kernel atau structuring element (H1-H8) yang berbeda untuk digunakan dalam proses operasi thickening. Kernel-kernel tersebut dipilih untuk memperbesar atau memperlebar area dari objek pada citra digital.
Selanjutnya, program membuat salinan citra F ke dalam variabel C dan melakukan pengulangan sebanyak n_iterasi untuk melakukan operasi thickening pada citra digital tersebut. Setiap iterasi menggunakan kernel yang telah ditentukan sebelumnya dan melakukan operasi thinning pada citra digital. Hasil pengolahan pada setiap iterasi disimpan ke dalam variabel C.
Setelah proses pengolahan selesai dilakukan, program mengembalikan hasil pengolahan citra digital yang telah diubah ukuran atau area objeknya ke dalam variabel G.
Contoh:

Hasil untuk berbagai fase ditunjukkan pada Gambar 7.37.






Gambar 7.37 Contoh operasi thickening
7.11 Convex Hull
Operasi morfologi convex hull adalah operasi untuk menghasilkan suatu bentuk yang meliputi semua piksel yang ada pada citra. Bentuk ini disebut sebagai convex hull atau cangkang cembung. Convex hull dapat digunakan dalam berbagai aplikasi pengolahan citra digital, seperti:
- Pemrosesan citra medis: Convex hull dapat digunakan untuk menghasilkan representasi 3D dari struktur internal tubuh manusia yang terlihat pada citra medis, seperti CT scan atau MRI. Dalam aplikasi ini, convex hull digunakan untuk menghilangkan rongga dan lubang pada struktur internal sehingga dapat menghasilkan representasi yang lebih akurat.
- Identifikasi objek: Convex hull dapat digunakan untuk mengidentifikasi objek pada citra digital. Operasi ini dapat membantu untuk mengenali objek dengan bentuk yang kompleks dan tidak teratur, seperti objek pada citra satelit atau foto udara.
- Pencocokan citra: Convex hull dapat digunakan sebagai fitur pada proses pencocokan citra (image matching). Fitur ini digunakan untuk membandingkan dua citra dan menentukan seberapa mirip keduanya.
Dalam implementasinya, operasi convex hull menggunakan kernel berbentuk persegi panjang dengan ukuran tertentu. Operasi ini diterapkan pada citra biner dan menghasilkan citra biner pula, dimana setiap piksel pada citra hasil bernilai 1 jika terletak pada convex hull, dan 0 jika tidak.
Himpunan konveks (cembung) adalah himpunan yang mencakup semua titik yang menghubungkan dua titik yang berada di dalam himpunan. Adapun convex hull adalah bentuk poligon terkecil yang dapat melingkupi objek. Poligon ini dapat dibayangkan sebagai gelang elastis yang dapat melingkupi tepi objek, Hal seperti itu kadang diperlukan untuk kepentingan mengenali objek, dengan menghilangkan tepian objek yang cekung.
Convex hull diperoleh dengan melibatkan transformasi Hit_or_Miss (THM) dengan elemen-elemen penstruktur yang dirotasi sebesar 90o. Contoh elemen penstruktur ditunjukkan pada Gambar 7.38.

Pada contoh di atas, x menyatakan “don't care”. Langkah awal untuk melakukan perhitungan convex hull dilaksanakan dengan memberikan X01 = A, dengan A adalah citra yang akan diproses. Selanjutnya, dilakukan perhitungan sebagai berikut:

Konvergensi tercapai ketika

Nah, bila

convex hull A berupa

Contoh untuk memperoleh convex hull ditunjukkan pada Gambar 7.39. Pada contoh tersebut, hasil setelah konvergen untuk 𝑋𝑘𝑖 , dengan nilai i dan k = 1- 4 diperlihatkan.



Implementasi pembentukan convex hull dituangkan pada fungsi bernama convhull, dengan kode sebagai berikut.
| Program : convhull.m |
function G = convhull(A)
% Untuk melakukan operasi convex hull terhadap citra A
% dengan menggunakan 4 elemen penstruktur
% G = Convex hull
[tinggi, lebar] = size(A);
% Elemen penstruktur
H1 = [ 1 -1 -1; 1 0 -1; 1 -1 -1 ];
H2 = [ 1 1 1; -1 0 -1; -1 -1 -1 ];
H3 = [ -1 -1 1; -1 0 1; -1 -1 1 ];
H4 = [ -1 -1 -1; -1 0 -1; 1 1 1 ];
C = zeros(tinggi, lebar);
C = or(C, chull(A, H1));
C = or(C, chull(A, H2));
C = or(C, chull(A, H3));
C = or(C, chull(A, H4));
G = C;
function [G, k] = chull(A, B)
% C
% A = Citra
% B = elemen penstruktur
% G = Hasil yang konvergen
% k = iterasi hingga korvergen
[tinggi, lebar] = size(A);
k=1;
Ckmin1 = A;
while (true)
Ck = or(Ckmin1, thm2(Ckmin1,B));
% Cek Ckmin1 apa sama dengan Ck
sama = true;
for baris = 1 : tinggi
for kolom = 1 : lebar
if Ckmin1(baris, kolom) ~= Ck(baris, kolom)
sama = false;
break;
end
end
if sama == false
break;
end
end
if sama == true
break; % Berarti sudah konvergen
end
% Ke iterasi berikutnya
k = k + 1;
Ckmin1 = Ck;
end
k = k-1;
G = Ckmin1;
Program di atas merupakan implementasi dari operasi morfologi convex hull pada citra digital. Convex hull adalah operasi yang digunakan untuk memperluas atau memperbesar area dari suatu objek dalam citra digital. Pada program ini, convex hull dihitung menggunakan empat elemen penstruktur berbeda (H1, H2, H3, dan H4) dengan menggunakan fungsi chull dan thm2.
Fungsi chull digunakan untuk menghitung konvergensi dari operasi convex hull, yang diulang hingga citra tidak berubah. Fungsi thm2 digunakan untuk melakukan operasi transformasi hit-or-miss pada citra dengan elemen penstruktur B.
Pada inti dari program, terdapat looping untuk menghitung hasil convex hull menggunakan empat elemen penstruktur yang telah didefinisikan. Hasil dari operasi tersebut disimpan dalam citra C. Kemudian, dilakukan looping untuk menghitung konvergensi dari citra C menggunakan fungsi chull. Hasil akhir dari operasi convex hull pada citra A adalah citra G.
Contoh penggunaan fungsi convhull:

Hasilnya ditunjukkan pada Gambar 7.40(b).
Gambar 7.40(c) menunjukkan keadaan yang dinamakan defisiensi konveks. Defisiensi konveks menyatakan selisih antara convex hull dan citra asli. Hasiltersebut diperoleh melalui:




Gambar 7.40 Hasil convex hull dan defisiensi konveks
Bentuk convex hull dapat diubah agar tidak berbentuk kotak. Sebagai contoh, terdapat delapan elemen penstruktur seperti terlihat pada Gambar 7.41.

Dengan menggunakan delapan elemen penstruktur tersebut, diperoleh hasil seperti terlihat pada Gambar 7.42.
Program: convhul2.m
function G = convhull2(A)
% Untuk melakukan operasi convex hull terhadap citra A
% dengan menggunakan 4 elemen penstruktur
% G = Convex hull
[tinggi, lebar] = size(A);
% Elemen penstruktur
H1 = [ 1 1 1; 1 0 -1; 1 -1 -1 ];
H2 = [ 1 1 -1; 1 0 -1; 1 -1 -1 ];
H3 = [ 1 -1 -1; 1 0 -1; 1 1 -1 ];
H4 = [ -1 -1 -1; 1 0 -1; 1 1 1 ];
H5 = [ -1 -1 -1; -1 0 1; 1 1 1 ];
H6 = [ -1 -1 1; -1 0 1; -1 1 1 ];
H7 = [ -1 1 1; -1 0 1; -1 -1 1 ];
H8 = [ 1 1 1; -1 0 1; -1 -1 -1 ];
C = zeros(tinggi, lebar);
C = or(C, chull(A, H1));
C = or(C, chull(A, H2));
C = or(C, chull(A, H3));
C = or(C, chull(A, H4));
C = or(C, chull(A, H5));
C = or(C, chull(A, H6));
C = or(C, chull(A, H7));
C = or(C, chull(A, H8));
G = C;
function [G, k] = chull(A, B)
% C
% A = Citra
% B = elemen penstruktur
% G = Hasil yang konvergen
% k = iterasi hingga korvergen
[tinggi, lebar] = size(A);
k=1;
Ckmin1 = A;
while (true)
Ck = or(Ckmin1, thm2(Ckmin1,B));
% Cek Ckmin1 apa sama dengan Ck
sama = true;
for baris = 1 : tinggi
for kolom = 1 : lebar
if Ckmin1(baris, kolom) ~= Ck(baris, kolom)
sama = false;
break;
end
end
if sama == false
break;
end
end
if sama == true
break; % Berarti sudah konvergen
end
% Ke iterasi berikutnya
k = k + 1;
Ckmin1 = Ck;
end
k = k-1;
G = Ckmin1;




Gambar 7.42 Convex hull dan defisiensi konveks yang melibatkan delapan elemen penstruktur
7.12 Morfologi Aras Keabuan
Sejauh ini, pembicaraan mengenai morfologi terbatas pada citra biner. Sesungguhnya, morfologi juga dapat dikenakan pada citra beraras keabuan. Namun, tentu saja terdapat perbedaan dalam melakukan operasi morfologi ini. Beberapa operasi morfologi untuk citra beraras keabuan dibahas di subbab ini.
7.12.1 Dilasi Beraras Keabuan
Dilasi pada aras keabuan didefinisikan sebagai berikut (Gonzalez & Woods, 2002):

dengan A adalah citra dan B adalah elemen penstruktur. Jadi, nilai yang dihasilkan berupa nilai terbesar antara A+B, dengan proses penambahan dilakukan seperti yang terjadi pada konvolusi citra. Simbol g sesudah tanda ⊕ menyatakan bahwa operasi dilasi tersebut berlaku untuk citra beraras keabuan.
Ilustrasi dilasi beraras keabuan dapat dilihat pada Gambar 7.43. Pada contoh tersebut, nilai terbesar A+B adalah 25. Nilai tersebut dijadikan sebagai nilai dalam A ⊕g B.

Implementasi dilasi dapat dilihat pada program berikut.
| Program : gdilasi.m |
function G = gdilasi(F, H, hotx, hoty)
% GDILASI Berguna untuk melaksanakan operasi dilasi pada
% citra beraras keabuan.
% Masukan:
% F = citra yang akan dikenai dilasi
% H = elemen pentruksur
% (hy, hx) koordinat pusat piksel
[th, lh]=size(H);
[tf, lf]=size(F);
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
end
G = zeros(tf, lf); % Nolkan semua pada hasil dilasi
% Memproses dilasi
for baris = 1 : tf
for kolom = 1 : lf
terbesar = 0;
for p=1:th
for q=1:lh
ypos = baris - (p - hoty);
xpos = kolom - (q - hotx);
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
nilai = F(ypos, xpos) + H(p, q);
if terbesar < nilai
terbesar = nilai;
end
end
end
end
% Potong nilai terbesar kalau melebihi 255
if terbesar > 255
terbesar = 255;
end
% Berikan nilai terbesar ke G
G(baris, kolom) = terbesar;
end
end
G = uint8(G);
Program di atas merupakan implementasi dari operasi dilasi pada citra berars keabuan menggunakan elemen struktur persegi atau rectangular kernel. Berikut adalah penjelasan masing-masing bagian program:
function G = gdilasi(F, H, hotx, hoty)
Program diawali dengan deklarasi fungsi gdilasi yang menerima tiga parameter masukan yaitu citra grayscale F, elemen struktur H, dan koordinat titik pusat elemen struktur (hotx, hoty).
[th, lh]=size(H);
[tf, lf]=size(F);
Program selanjutnya akan menentukan ukuran elemen struktur H dan citra F yang akan digunakan.
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
end
Program akan mengecek apakah titik pusat elemen struktur sudah diberikan atau belum. Jika tidak, maka titik pusat elemen struktur akan ditentukan dengan cara membagi ukuran elemen struktur pada kedua dimensi dengan pembulatan ke bawah.
G = zeros(tf, lf); % Nolkan semua pada hasil dilasi
Matriks hasil dilasi G akan dideklarasikan terlebih dahulu dengan ukuran yang sama dengan citra F, dengan semua elemen bernilai 0.
for baris = 1 : tf
for kolom = 1 : lf
terbesar = 0;
for p=1:th
for q=1:lh
ypos = baris - (p - hoty);
xpos = kolom - (q - hotx);
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
nilai = F(ypos, xpos) + H(p, q);
if terbesar < nilai
terbesar = nilai;
end
end
end
end
% Potong nilai terbesar kalau melebihi 255
if terbesar > 255
terbesar = 255;
end
% Berikan nilai terbesar ke G
G(baris, kolom) = terbesar;
end
end
Proses dilasi akan dilakukan menggunakan nested loop. Pada setiap elemen citra F, akan dicari nilai terbesar di sekitar elemen tersebut dengan menggunakan elemen struktur H. Looping dilakukan pada seluruh elemen di H dan diaplikasikan pada citra F dengan menggeser posisi elemen H sesuai koordinat titik pusat (hotx, hoty).
Nilai terbesar yang didapatkan akan diberikan pada elemen di posisi yang sama pada citra G. Nilai terbesar akan dipotong menjadi 255 jika melebihi batas maksimum nilai piksel citra.
scssCopy codeG = uint8(G);
Hasil dilasi yang berupa matriks nilai grayscale G akan dikembalikan oleh fungsi gdilasi. Sebelum dikembalikan, G diubah tipe datanya menjadi unsigned integer 8-bit (uint8).
Pada contoh di atas, fungsi uint8 digunakan untuk memastikan bahwa hasil perhitungan dilasi berkisar antara 0 sampai dengan 255. Contoh berikut menunjukkan penggunaan fungsi gdilasi yang dikenakan pada citra mandrill.png dengan menggunakan elemen penstruktur berukuran 9x9 dengan bentuk cakram terdapat pada gambar 7.44 d.

Hasilnya dapat dilihat pada Gambar 7.44.



berukuran 3x3 dan seluruhnya
bernilai 0


berukuran 3x3 dan seluruhnya
bernilai 1

berukuran 9x9 dan berbentuk bola
Gambar 7.44 Efek dilasi pada citra beraras keabuan
7.12.2 Erosi Beraras Keabuan
Erosi pada citra beraras keabuan didefinisikan sebagai berikut:

dengan A adalah citra dan B adalah elemen penstruktur. Simbol g sesudah tanda Θ menyatakan bahwa operasi dilasi tersebut berlaku untuk citra beraras keabuan. Jadi, nilai yang dihasilkan berupa nilai terkecil antara A-B. Contoh perhitungan erosi ditunjukkan pada Gambar 7.45.

Implementasi erosi pada citra beraras keabuan diwujudkankan dengan fungsi bernama gerosi. Kodenya seperti berikut.
| Program : gerosi.m |
function G = gerosi(F, H, hotx, hoty)
% GEROSI Berguna untuk melaksanakan operasi dilasi
% citra beraras keabuan.
% Masukan:
% F = citra yang akan dikenai erosi
% H = elemen pentruksur
% (hy, hx) koordinat pusat piksel
[th, lh]=size(H);
[tf, lf]=size(F);
if nargin < 3
hotx = round(lh/2);
hoty = round(th/2);
end
G = zeros(tf, lf); % Nolkan semua pada hasil erosi
% Memproses erosi
for baris = 1 : tf
for kolom = 1 : lf
terkecil = 255;
for p=1:th
for q=1:lh
ypos = baris + p - hoty;
xpos = kolom + q - hotx;
if (xpos >= 1) && (xpos <= lf) && ...
(ypos >= 1) && (ypos <= tf)
nilai = F(ypos, xpos) + H(p, q);
if terkecil > nilai
terkecil = nilai;
end
end
end
end
% Berikan nilai ke G
if terkecil < 0
terkecil = 0;
end
G(baris, kolom) = terkecil;
end
end
G = uint8(G);
Program di atas adalah implementasi dari operasi erosi pada citra berars keabuan menggunakan elemen struktural H. Elemen struktural H diberikan sebagai masukan pada fungsi bersama dengan citra input F.
Fungsi ini menghasilkan citra output G yang merupakan hasil dari operasi erosi pada citra input F dengan elemen struktural H. Koordinat pusat piksel elemen struktural diberikan oleh hotx dan hoty.
Pertama-tama, fungsi ini menghitung ukuran elemen struktural H dan citra input F. Jika hotx dan hoty tidak diberikan sebagai argumen pada saat memanggil fungsi, maka koordinat pusat piksel elemen struktural akan dihitung.
Citra output G diinisialisasi dengan nol dan akan diisi dengan hasil erosi. Kemudian, fungsi ini melakukan operasi erosi pada setiap piksel pada citra input F.
Untuk setiap piksel pada citra input F, elemen struktural H diterapkan dengan menempatkannya pada setiap piksel pada citra input F dan melakukan operasi pengurangan. Nilai terkecil dari piksel pada citra input yang diberikan pada elemen struktural H akan menjadi nilai piksel keluaran. Hasil erosi akan diberikan pada piksel pada citra output G.
Jika nilai piksel keluaran kurang dari 0, maka nilainya akan diubah menjadi 0. Citra output G akhirnya diubah menjadi tipe data uint8 dan dikembalikan oleh fungsi.
Contoh penggunaan gerosi seperti berikut:

Hasilnya dapat dilihat pada Gambar 7.46.



berukuran 3x3 dan seluruhnya
bernilai 0


berukuran 3x3 dan
seluruhnya bernilai 1

berukuran 9x9 dan berbentuk
bola
Gambar 7.46 Efek erosi pada citra beraras keabuan
Aplikasi erosi dan dilasi pada citra beraras keabuan adalah untuk memperoleh gradien morfologis. Dalam hal ini, gradien morfologis diperoleh dengan melakukan pengurangan hasil dilasi dengan nilai hasil erosi. Contoh:

Hasilnya dapat dilihat pada Gambar 7.47(d). Adapun hasil pemrosesan dilasi dan erosi secara berturutan dapat dilihat pada Gambar 7.47(b) dan 7.47(c).


berukuran 3x3 dan seluruhnya
bernilai 1

berukuran 3x3 dan seluruhnya
bernilai 1

Gambar 7.47 Gradien morofologis melalui pengurangan dilasi
dengan erosi pada citra beraras keabuan
.
7.12.3 Opening dan Closing
Secara prinsip, operasi opening dan closing pada citra beraras keabuan serupa pada citra biner. Definisinya sebagai berikut.

Contoh perbedaan hasil operasi opening dan closing pada citra beraras keabuan dapat dilihat pada Gambar 7.48. Terlihat bahwa operasi opening berkecenderungan menghilangkan bagian yang cerah tetapi berukuran kecil (perhatikan pada bagian mata pada hasil opening). Adapun operasi closing mempertahankan objek kecil yang berwarna terang.

menggunakan elemen penstruktur 5x5 yang seluruhnya bernilai 0
Untuk kepentingan kemudahan dalam mencoba operasi opening pada citra berskala keabuan, dapat digunakan fungsi bernama gopening. Kodenya sebagai berikut.
| Program : gopening.m |
function G = gopening(F, H)
% GOPENING berguna untuk melaksanakan operasi opening
% citra beraras keabuan
% Masukan:
% F = citra yang akan dikenai erosi
% H = elemen pentruksur
G = gdilasi(gerosi(F, H), H);
Untuk kepentingan kemudahan dalam mencoba operasi closing pada citra berskala keabuan, dapat digunakan fungsi bernama gclosing. Kodenya sebagai berikut.
| Program : gclosing.m |
function G = gclosing(F, H)
% GCLOSING Berguna untuk melaksanakan operasi closing
% citra beraras keabuan.
% Masukan:
% F = citra yang akan dikenai erosi
% H = elemen pentruksur
G = gerosi(gdilasi(F, H), H);

Contoh berikut menunjukkan penggunaan gopening:




7.13 Transformasi Top-Hat
Operasi morfologi Transformasi Top-Hat adalah salah satu teknik pengolahan citra digital yang digunakan untuk mengurangi derau atau mengekstrak fitur dalam citra. Operasi ini mengambil perbedaan antara citra asli dan citra yang telah difilter dengan operasi morfologi pembukaan. Hasilnya adalah fitur-fitur kecil yang tersembunyi atau derau pada citra asli.
Transformasi Top-Hat sering digunakan untuk aplikasi pengolahan citra seperti deteksi tepi, identifikasi objek, dan pemrosesan citra medis. Misalnya, dalam citra medis, Transformasi Top-Hat dapat digunakan untuk meningkatkan kontras antara jaringan dan organ di dalam tubuh, atau untuk mengidentifikasi area yang memiliki pola dan tekstur yang berbeda di dalam citra medis.
Transformasi Top-Hat juga dapat digunakan untuk mengurangi efek pencahayaan dalam citra. Misalnya, jika ada cahaya yang terlalu terang atau terlalu gelap di sekitar objek pada citra, transformasi Top-Hat dapat membantu dalam menemukan objek tersebut dengan lebih jelas.
Dalam bidang pengolahan citra, Transformasi Top-Hat merupakan teknik yang sangat berguna dalam mengurangi derau dan meningkatkan deteksi fitur-fitur dalam citra, sehingga hasil pengolahan citra menjadi lebih akurat dan efisien.
Transformasi Top-Hat didefinisikan sebagai perbedaan antara citra dan citra setelah mengalami operasi opening (Solomon & Breckon, 2011) atau dapat disajikan secara matematis seperti berikut:

Pada rumus di atas, A menyatakan citra dan B sebagai elemen penstruktur. Simbol g menyatakan bahwa operasi tersebut berlaku untuk citra beraras keabuan.
Transformasi ini berguna untuk mendapatkan bentuk global suatu objek yang mempunyai intensitas yang bervariasi. Sebagai contoh, perhatikan Gambar 7.49(a). Pada citra tersebut, butiran-butiran nasi memiliki intensitas yang tidak seragam. Melalui opening, diperoleh hasil seperti terlihat pada Gambar 7.49(b).
Hasil transformasi Top-Hat ditunjukkan pada Gambar 7.49(c). Perhatikan bahwa hasil butiran nasi pada Gambar 7.49(c) terlihat memiliki intensitas yang lebih seragam dibandingkan pada citra asal.



Gambar 7.49 Transformasi Top-Hat menggunakan elemen penstruktur
berukuran 9x9 berbentuk cakram
Pada contoh berikut, TH menyatakan hasil transformasi Top-Hat:

| File rice.png adalah milik MATLAB. |
Hasil transformasi Top-Hat pada contoh seperti di atas akan menghasilkan citra biner yang lebih baik daripada kalau citra biner diperoleh secara langsung dari citra asal. Sebagai gambaran, Gambar 7.50 memberikan contoh hasil konversi ke citra biner menggunakan citra rice.png dan hasil konversi citra biner
menggunakan hasil transformasi Top-Hat.



melalui rice.png secara
langsung


melalui hasil Top-Hat
Gambar 7.50 Efek transformasi Top-Hat untuk memperoleh citra biner
Perhatikan bahwa jumlah butir padi pada Gambar 7.50(c) bagian bawah lebih banyak daripada pada Gambar 7.50(b).
7.14 Transformasi Bottom-Hat
Operasi morfologi Transformasi Bottom-Hat adalah salah satu operasi dasar dalam pengolahan citra digital yang digunakan untuk menghasilkan peningkatan kontras pada bagian-bagian citra yang gelap atau "lubang" kecil yang ada di dalam citra. Operasi ini juga dikenal dengan sebutan operasi Closing - Opening.
Transformasi Bottom-Hat bekerja dengan cara melakukan operasi "Opening" pada citra asli, dan kemudian mengurangi citra hasil opening tersebut dari citra asli. Operasi opening pada citra biasanya dilakukan dengan mengaplikasikan sebuah elemen struktur pada citra asli untuk menghilangkan bagian-bagian kecil atau detail halus di dalam citra tersebut.
Aplikasi dari Transformasi Bottom-Hat adalah pada pengolahan citra medis seperti radiologi, terutama untuk mendeteksi perubahan kecil atau abnormalitas yang terjadi di dalam citra seperti jaringan yang terinfeksi atau perdarahan kecil. Selain itu, transformasi Bottom-Hat juga digunakan pada bidang pengolahan citra pada aplikasi inspeksi permukaan atau tekstur, di mana operasi ini dapat membantu dalam menekankan fitur-fitur tekstur pada permukaan objek.
Transformasi Bottom-Hat didefinisikan sebagai berikut:

Secara prinsip, operasi ini memperbesar warna putih melalui dilasi, diikuti dengan pengecilan warna putih melalui erosi dan kemudian dikurangi dengan citra asal. Dilasi yang diikuti dengan erosi memberikan efek berupa objek-objek yang berdekatan menjadi semakin dekat. Pengurangan oleh citra asal membuat penghubung antarobjek menjadi hasil yang tersisa. Dengan kata lain, hasil yang tersisa adalah piksel-piksel yang digunakan untuk mengisi “lubang”, atau “penghubung objek”.



