PCD2011-6-Morfologi Citra

Download Report

Transcript PCD2011-6-Morfologi Citra

Morfologi Citra
Pengolahan Citra Digital
Materi 6
Eko Prasetyo
Teknik Informatika
Universitas Muhamamdiyah Gresik
2011
Konsep Morfologi
Kata morphology  cabang ilmu biologi yang memelajari
bentuk dan struktur hewan dan tumbuh-tumbuhan.
 Istilah yang sama - dalam konteks mathematical morphology

◦ sebagai tool untuk pengekstrakan komponen citra yang berguna
dalam representasi dan deskripsi bentuk daerah, seperti
boundaries, skeletons, dan convex hull.

Teknik morfologi juga digunakan untuk pre atau postprocessing,
◦ seperti morfologi filtering, thinning dan pruning.

Operasi dasar dalam pemrosesan morfologi adalah:
◦ Dilasi dan Erosi,
◦ Opening dan Closing
2
Refleksi dan Translasi

Refleksi himpunan B dinyatakan dengan didefinisikan dengan:

B  { w | w   b , untuk b  B}
◦ Jika B adalah sekumpulan piksel (titik-titik 2-D) yang merepresentasikan
obyek dalam citra, maka adalah sekumpulan titik dalam B yang
berkoordinat (x,y) yang telah diganti dengan (-x,-y)

Translasi adalah himpunan B yang oleh titik z(z1, z2) dinyatakan oleh
(B)z, didefinisikan dengan:
◦ (B)z = {c|c = b + z. untuk b  B}
◦ Jika B adalah himpunan piksel yang merepresentasikan obyek dalam
citra, maka (B)z adalah himpunan titik-titik dalam B di mana koordinat
(x,y) telah diganti dengan (x + z1, y + z2)
3
Structure Element (STREL)
Strel adalah himpunan sub-image kecil yang digunakan untuk
meneliti citra dalam pembelajaran propertinya.
 Untuk elemen yang menjadi anggota strel, origin strel, juga
harus ditetapkan.
 Origin dari strel ditandai dengan tanda titik hitam.

◦ Jika tidak ada tanda titik hitam maka diasumsikan origin berada di
pusat simetri
◦ Karena origin tidak harus berada di pusat, tetapi juga bisa berada
di pinggir strel.
Contoh strel
4
Dilasi


Proses dalam dilasi adalah “penumbuhan” atau “penebalan” dalam
citra biner.
Jika A dan B adalah anggota Z2, dilasi antara A dan B dinyatakan A 
B dan didefinisikan dengan:

A  B  {z | (B )z  A  }
◦ Persamaan ini didasarkan pada perefleksian B terhadap originnya, dan
penggeseran refleksi oleh z.
◦ Dilasi A oleh B adalah himpunan semua displacement z, sebagaimana B
dan A overlap oleh paling sedikit satu elemen.

Dilasi ini sangat berguna ketika diterapkan dalam obyek-obyek yang
terputus dikarenakan hasil pengambilan citra yang terganggu oleh
noise, kerusakan obyek fisik yang dijadikan citra digital, atau
disebabkan resolusi yang jelek,
◦ misalnya teks pada kertas yang sudah agak rusak sehingga bentuk
hurufnya terputus, dan sebagainya
5
Toolbox MATLAB untuk membuat strel:
SE = strel(tipestrel, parameter)
Tipe
Arbitrary
Diamond
Disk
Line
Octagon
pair
periodicline
rectangle
square
Format fungsi
SE = strel(‘arbitrary’, NHOOD)
SE = strel('diamond',R)
SE = strel('disk',R,N)
SE = strel('line',LEN,DEG)
SE = strel('octagon',R)
SE = strel('pair',OFFSET)
SE = strel('periodicline',P,V)
SE = strel('rectangle',MN)
SE = strel('square',W)
Cara pembuatan strel
>> SE1 = [0 1 0; 1 1 1; 0 1 0];
>> SE2 = [1 0 1; 0 1 0; 1 0 1];
>> SE3 = [1 1 1; 1 1 1; 1 1 1];
Dilasi citra f dengan strel SE1
>> j = imdilate(f,SE1);
Dilasi citra f dengan strel SE2
>> j = imdilate(f,SE2);
Dilasi citra f dengan strel SE3
>> j = imdilate(f,SE3);
(a) Himpunan obyek; (b) Strel +; (c) Dilasi a oleh b; (d) Strel vertikal; (e) Dilasi a
oleh d
6
Rectangle
Arbitrary
Diamond
Octagon
Pair
Periodicline
Square
Disk
Line
7
Citra asli
Hasil dilasi dengan strel:
Hasil dilasi dengan strel:
0 1 0
1 1 1
0 1 0
Hasil dilasi dengan strel:
1 0 1
0 1 0
1 0 1
1 1 1
1 1 1
1 1 1
8
Erosi
Erosi merupakan proses mengecilkan atau
menipiskan obyek citra biner
 Jika A dan B himpunan dalam Z2, erosi A
oleh B dinyatakan dengan A Ө B,
didefinisikan sebagai:

◦ A Ө B = {z|(B)z  A}
◦ Persamaan di atas menunjukkan bahwa erosi A
oleh B adalah kumpulan semua titik di mana B
ditranslasikan oleh z di dalam isi A.
9
Toolbox di MATLAB:
>> A2 = imerode(A, B)
(a) himpunan obyek; (b) strel +; (c) erosi a oleh b; (d) strel vertikal; (e) erosi a
oleh d
10
>> SEdis1 = strel('disk',5);
>> SEdis2 = strel('disk',10);
>> SEdis3 = strel('disk',20);
>> g1 = imerode(f, SEdis1);
>> g2 = imerode(f, SEdis2);
>> g3 = imerode(f, SEdis3);
Citra asli
Erosi dengan strel disk R=5
Erosi dengan strel disk R=10
Erosi dengan strel disk R=20
11
Opening dan Closing

Opening:
◦ Menghaluskan garis-garis bentuk obyek,
◦ Menghilangkan bagian-bagian yang sempit, dan
◦ Menghilangkan penonjolan-penonjolan yang tipis.

Formula:
◦ A ○ B = (A Ө B)  B
◦ Operasi opening A oleh B adalah erosi A oleh B, diikuti dengan
dilasi hasil tersebut dengan B

Padanan fungsi:
◦ A○ B = {(B)z|(B)z  A}
12
Opening dan Closing

Closing cenderung menghaluskan garis-garis bentuk tetapi
kebalikan dari opening,
◦ Menolak pecahan-pecahan sempit dan teluk yang panjang dan
tipis,
◦ Menghilangkan lubang kecil dan
◦ Mengisi gap pada garis-garis bentuk (contour).

Formula:
◦ A ● B = (A  B) Ө B
◦ Operasi closing A oleh B adalah dilasi A oleh B, diikuti erosi
hasilnya dengan B.
13
Toolbox di MATLAB untuk
operasi Opening dan Closing:
>> A2 = imopen(A, B)
>> A2 = imclose(A, B)
Citra asli
Hasil opening citra a dengan strel disk
R=9
>>
>>
>>
>>
>>
>>
>>
>>
Hasil closing citra a dengan strel disk
R=9
f = imread('openclose.tif');
SE = strel('disk', 9, 0)
j = imopen(f, SE);
figure, imshow(j);
k = imclose(f, SE);
figure, imshow(k);
l = imclose(j, SE);
figure, imshow(l);
Hasil closing citra b dengan strel disk
R=9
14
Transformasi Hit-or-Miss

Berguna untuk mengidentifikasi konfigurasi piksel tertentu,
◦ seperti piksel foreground yang terisolasi, atau piksel yang berada
di akhir garis segmen.
Transformasi hit-or-miss A oleh B dinyatakan oleh A  B.
 B adalah pasangan strel B = (B1, B2).
 Transformasi hit-or-miss didefinisikan dengan dua strel
sebagai:

◦ A ⊛ B = (A Ө B1)  (Ac Ө B2)
Contoh pasangan strel
15
Contoh
Pasangan strel yang digunakan
Toolbox di MATLAB:
>> C = bwhitmiss(A, B1, B2)
 Hasil transformasi Hit or Miss
16
Contoh
>>
>>
>>
>>
Citra asli
Hasil dilasi citra asli
Hasil proses transformasi hit-ormiss
>>
>>
>>
>>
>>
f = imread('square.tif');
B1 = strel([0 0 0; 1 1 0; 0 1 0]);
B2 = strel([1 1 1; 0 0 1; 0 0 1]);
j = bwhitmiss(f, B1, B2);
f2 = imdilate(f,SE);
figure, imshow(f2);
k = bwhitmiss(f2, B1, B2);
k2 = imdilate(k,SE);
figure, imshow(k2);
Hasil proses transformasi hit-ormiss citra yang sudah terdilasi
17
Toolbox operasi morfologi
g = bwmorph(f, operation, n)
Operation
bothat
Penjelasan
“Bottom-hat” operasi yang menggunakan strel 3 x 3; gunakan imbothat untuk strel yang lain
bridge
clean
close
diag
dilate
erode
fill
open
remove
Menghubungkan piksel-piksel yang dipisahkan oleh gap piksel tunggal
Menghilangkan piksel foreground yang terisolasi
Closing menggunakan strel 3 x 3; gunakan imclose untuk strel yang lain
Mengisi sekitar piksel foreground yang terhubung secara diagonal
Dilasi menggunakan strel 3 x 3; gunakan imdilate untuk strel yang lain
Erosi menggunakan strel 3 x 3; gunakan imerode untuk strel yang lain
Mengisi lubang (piksel background di sekitar piksel foreground) piksel tunggal; gunakan imfill
untuk mengisi lbang yang lebih besar
Menghilangkan H-connected piksel foreground
Membuat piksel p piksel foreground jika paling sedikit 5 piksel dalam N8(p) adalah piksel
foreground; jika sebaliknya maka p adalah piksel background
Opening menggunakan strel 3 x 3; gunakan imopen untuk strel yang lain
Menghilangkan piksel “interior” (piksel foreground yang tidak punya tetangg background
shrink
Menipiskan obyek dengan tanpa lubang; menipiskan obyek berlubang menjadi ring
skel
spur
thicken
thin
Men-skeleton citra
Menghilangkan piksel spur
Menebalkan obyek tanpa menggabungkan obyek yang tidak terkoneksi
Menipiskan obyek tanpa lubang menjadi hubungan kerangka secara minimal
tophat
Operasi “top-hat” menggunakan strel 3 x 3; gunakan imtophat untuk strel yang lain
hbreak
majority
Operation adalah string yang menetapkan operasi yang diinginkan, dan n adalah integer positif yang menetapkan jumlah
(berapa kalinya) operasi diulang.
Argumen input n bersifat opsional dan dapat diabaikan jika operasi ingin dilakukan satu kali. Jika diberi nilai “Inf” (tanpa
petik) maka operasi akan dilakukan sampai obyek citra yang dihasilkan stabil, misalnya pada operasi thinning dan
skeletonization, kestabilan obyek adalah saat ketebalan obyek menjadi satu piksel.
18
Boundary Extraction
Boundary himpunan A dinyatakan oleh (A), bisa
didapatkan dengan pertama mengerosi A oleh B dan
kemudian melakukan himpunan perbedaan
(pengurangan) antara A dan hasil erosi.
 Formula:

◦ (A) = A – (A Ө B)
◦ di mana B adalah strel yang tepat untuk mengerosi A
19
Region Filling
Didasarkan pada sejumlah dilasi, komplementasi, dan interseksi.
 Dimulai dengan sebuah titik p di dalam boundary, tujuannya adalah untuk
mengisi semua region dengan nilai 1.
 Jika mengikuti konvensi bahwa semua titik non-boundary (background)
diberi nilai 0, maka p harus diberi nilai 1 untuk memulai.
 Prosedur di bawah ini adalah untuk mengisi region dengan nilai 1:

◦ Xk = (Xk – 1  B)  Ac k = 1, 2, 3, …
◦ di mana X0 = p dan B adalah strel simetrik. Algoritma berhenti pada iterasi langkah ke k
jika Xk = Xk – 1.
◦ Himpunan union dari X dan A mengisi daerah isian dan boundary-nya.

Toolbox:
◦ Bentuk 1 : BW2 = imfill(BW,locations)
◦ Bentuk 2 : BW2 = imfill(BW,'holes')
◦ Bentuk 3 : BW2 = imfill(BW)
20
Toolbox:
Bentuk 1 : BW2 =
imfill(BW,locations)
Bentuk 2 : BW2 =
imfill(BW,'holes')
Bentuk 3 : BW2 = imfill(BW)
21
Citra asli
Setelah di region filling
>> f = imread(‘ballbearing.tif’);
>> j = imfill(f);
>> figure, inshow(j);
22
Thinning (Penipisan)

Penipisan himpunan A oleh strel B, yang dinyatakan dengan A
 B, dapat didefinisikan dalam transformasi hit-or-miss
dengan bentuk:
◦ A  B = A  (A ⊛ B)c
◦ A  B = A – (A ⊛ B)

Prosesnya adalah:
◦
◦
◦
◦
◦
Menipiskan A oleh satu lewatan dengan B1,
kemudian menipiskan hasilnya dengan satu lewatan B2,
dan seterusnya, sampai A ditipiskan dengan satu lewatan Bn.
Semua proses ini diulang sampai tidak ada perubahan yang terjadi.
Setiap penipisan dilewatkan dengan menggunakan persamaan A 
B = A  (A ⊛ B)c
23
24
25
Citra biner
Penipisan 2 kali
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
Penipisan 1 kali
Ditipiskan sampai stabil
f = imread('noisy_fingerprint.tif');
SE = strel('square',3);
j = imclose(imopen(f,SE), SE);
figure, imshow(j);
k1 = bwmorph(j, 'thin', 1);
k2 = bwmorph(j, 'thin', 2);
kInf = bwmorph(j, 'thin', Inf);
figure, imshow(k1);
figure, imshow(k2);
figure, imshow(kInf);
26
Skeletonization

Skeletonization adalah cara lain untuk mengurangi
obyek citra biner menjadi himpunan kerangka tipis
yang menahan informasi penting mengenai bentuk asli
obyek
>>
>>
>>
>>
Citra biner
f = imread('legs_bone.tif');
j = bwmorph(f, 'skel', Inf);
figure, imshow(f);
figure, imshow(j);
Hasil operasi skeleton
27
Rekonstruksi Citra Biner

Rekonstruksi adalah transformasi morfologi yang melibatkan dua citra dan
sebuah strel (sebenarnya adalah sebuah citra dan sebuah strel).
◦ Citra yang satu adalah marker, adalah starting point untuk transformasi.
◦ Citra yang lain adalah mask, yang merupakan constrain transformasi. Strel digunakan
untuk mendefinisikan konektivitas.

Dalam sub-bab ini yang digunakan adalah 8-connectivity (default),
◦ yang mengimplikasikan bahwa B adalah matriks 3 x 3 bernilai 1, dengan pusat yang
didefinisikan di koordinat (2,2).

Jika g adalah mask dan f adalah marker, rekonstruksi g dari f, dinyatakan
Rg(f), didefinisikan dengan prosedur iteratif berikut:
◦
◦
◦
◦
Inisialisasi h1 menjadi marker citra f.
Buat strel B = ones(3).
Ulangi hk+1 = (hk  B)  g
sampai hk+1 = hk
Marker f harus menjadi bagian dari g; maka: f  g
 Toolbox di MATLAB:

◦ out = imreconstruct(marker, mask)
28
Citra biner asli
Hasil iterasi ke 30
Hasil iterasi ke 90
marker
Hasil iterasi ke 50
>>
>>
>>
>>
>>
>>
>>
>>
i = imread('empat_obyek.tif');
figure, imshow(i);
SE = strel('square',3);
jmarker = zeros(size(i));
jmarker(122:132,123:133) = 1;
jmarker(175:185,149:159) = 1;
figure, imshow(jmarker);
h0 = jmarker2;
>> for x = 1:30
h1 = (imdilate(h0,SE)) & i;
h0 = h1;
end;
>> figure, imshow(h1);
>> out =
imreconstruct(im2bw(jmarker),i);
>> figure, imshow(out);
Hasil akhir rekonstruksi
29
Opening dengan Rekonstruksi

Dalam morfologi opening,
◦ Erosi biasanya menghilangkan obyek kecil.
◦ Dilasinya cenderung mengembalikan bentuk obyek
yang tersisa.



Bagaimanapun akurasi dari restorasi ini tergantung
kesamaan antara bentuk obyek dengan strel.
Metode opening by reconstruction secara pasti
mengembalikan bentuk obyek yang tersisa setelah
erosi.
Opening dengan rekonstruksi citra f,
menggunakan strel B, didefinisikan sebagai Rf(f Ө
B)
30
>> f =
imread('broken_text.tif);
>> SE = ones(1,21);
>> jerosi = imerode(f, SE);
>> figure, imshow(jerosi);
Citra asli biner
Hasil opening citra a dengan strel
line ukuran 21
Hasil erosi citra a dengan strel line
ukuran 21
Hasil opening dengan rekonstruksi
>> jerodil = imdilate(jerosi, SE);
>> figure, imshow(jerodil);
>> jopen = imreconstruct(jerosi, i);
>> figure, imshow(jopen);
31
Membersihkan Obyek yang
menyentuh Border

Aplikasi rekonstruksi lain yang berguna adalah menghilangkan obyek
yang menyentuh border citra.
◦ Kunci dalam aplikasi ini adalah memilih marker dan mask citra yang
tepat untuk mendapatkan efek yang diharapkan.


Digunakan citra original sebagai mask dan marker citra fm,
didefinisikan sebagai:
Toolbox di MATLAB;
 f ( x, y )
fm ( x, y )  
0
jika (x, y) adalah border f
lainnya
◦
◦
◦
◦
g = imclearborder(f, conn)
di mana f adalah citra input dan g adalah hasilnya.
Nilai untuk conn dapat diberi nilai 4 atau 8 (default).
Fungsi ini menekan struktur yang lebih terang daripada sekitarnya dan
yang terhubung ke citra.
◦ Input f boleh citra grayscale atau biner. C
◦ itra output adalah citra grayscale atau biner sesuai dengan inputnya
32
>> j = imclearborder(f,8);
>> figure, imshow(j);
Citra asli biner
Obyek yang menyentuh border
Hasil rekonstruksi citra asli
33
To Be Continued … Materi 7 – Segmentasi Citra
ANY QUESTION ?
34