Sunday, May 3, 2009

Contras

Mengubah kontras dari suatu citra adalah proses pengaturan nilai range interval pada setiap nilai derajat keabuan, dan didefinisikan dengan :

xk = k x
dimana x = nilai derajat keabuan
k = nilai kontras
xk = nilai setelah pengaturan kontras

Adapun contoh praktikum sbb :



Listing program Contras sbb :

Private Sub HScroll3_Change()
bg = Val(HScroll3)
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
G = Int((warna And RGB(0, 255, 0)) / 256)
B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

xb1 = R * bg
xb2 = G * bg
xb3 = B * bg
Picture2.PSet (i, j), RGB(xb1, xb2, xb3)
Text3 = HScroll3.Value

Next j
Next i
End Sub

Brightness

Brightness adalah proses penambahan kecerahan dari nilai derajat keabuan. Proses brightness ini dilakukan dengan me-nambahkan nilai derajat keabuan dengan suatu nilai penambah.

xb = x + b
dimana x = adalah nilai derajat keabuan
b = nilai penambah
xb = hasil brightness

Adapun contoh praktikum sbb :



Listing program Brightness sebagai berikut :

Private Sub HScroll2_Change()
bg = Val(HScroll2)
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
G = Int((warna And RGB(0, 255, 0)) / 256)
B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

xb1 = R + bg
xb2 = G + bg
xb3 = B + bg
Picture2.PSet (i, j), RGB(xb1, xb2, xb3)
Next j
Next i
End Sub

Konversi Ke Citra Biner

Citra biner (hitam-putih) merupakan citra yang banyak dimanfaatkan untuk keperluan pattern recognition yang sederhana seperti pengenalan angka atau pengenalan huruf. Untuk mengubah suatu citra gray scale menjadi citra biner, sebetulnya prosesnya sama dengan threshold yaitu mengubah kuantisasi citra. Untuk citra dengan derajat keabuan 256, maka nilai tengahnya adalah 128 sehingga untuk mengubah menjadi citra biner dapat dituliskan:

Jika x<128 maka x=0, jika tidak maka x=255

Adapun contoh praktikum sebagai berikut :



Listing program diatas sebagai berikut :

Private Sub Command3_Click()
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
G = Int((warna And RGB(0, 255, 0)) / 256)
B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
x11 = (R + G + B) / 3
If x11 < 128 Then x11 = 0 Else x11 = 255
Picture2.PSet (i, j), RGB(x11, x11, x11)
Next j
Next i
End Sub

GrayScale

Proses awal yang banyak dilakukan dalam image processing adalah mengubah citra berwarna menjadi citra gray-scale, hal ini digunakan untuk menyederhanakan model citra. Seperti telah dijelaskan di depan, citra berwarna terdiri dari 3 layer matrik yaitu R-layer, G-layer dan B-layer. Sehingga untuk melakukan proses-proses selanjutnya tetap diperhatikan tiga layer di atas. Bila setiap proses perhitungan dilakukan menggunakan tiga layer, berarti dilakukan tiga perhitungan yang sama. Sehingga konsep itu diubah dengan mengubah 3 layer di atas menjadi 1 layer matrik gray-scale dan hasilnya adalah citra gray-scale. Dalam citra ini tidak ada lagi warna, yang ada adalah derajat keabuan. Untuk mengubah citra berwarna yang mempunyai nilai matrik masing-masing r, g dan b menjadi citra gray scale dengan nilai s, maka konversi dapat dilakukan dengan mengambil rata-rata dari nilai r, g dan b sehingga dapat dituliskan menjadi:



Adapun contoh praktikum sebagai berikut :



Listing program praktikum diatas :

Private Sub Command2_Click()
Dim i As Integer, j As Integer
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
G = Int((warna And RGB(0, 255, 0)) / 256)
B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
x12 = (R + G + B) / 3
Picture2.PSet (i, j), RGB(x12, x12, x12)
Next j
Next i
End Sub

Tresholding

Tresholding digunakan untuk mengatur jumlah derajat keabuan yang ada pada citra. Default yang ada pada visual basic adalah 256. Dengan menggunakan Tresholding maka derajat keabuan bias diubah sesuai keinginan, misalkan diinginkan menggunakan derajat keabuan 16, maka tinggal membagi nilai derajat keabuan dengan 16. Adapun contoh praktikum sebagai berikut :



Listing program praktikum diatas :

Private Sub Command5_Click()
th = Val(Text1)
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
G = Int((warna And RGB(0, 255, 0)) / 256)
B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)

x15 = (R + G + B) / 3

a = Int(256 / th)
x15 = a * Int(x15 / a)
Picture2.PSet (i, j), RGB(x15, x15, x15)
Next j
Next i
End Sub

Inversi Citra

Inversi citra adalah proses negatif pada citra, misalkan pada photo, dimana setiap nilai citra dibalik dengan acuan threshold yang diberikan. Proses ini banyak digunakan pada citra-citra medis seperti USG dan X-Ray. Untuk citra dengan derajat keabuan 256, proses inversi citra didefinisikan dengan:



Adapun contoh praktikum sbb :



Listing program praktikum inversi sbb :

Private Sub Command4_Click()
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
G = Int((warna And RGB(0, 255, 0)) / 256)
B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
x10 = (R + G + B) / 3
xn = 255 - x10
Picture2.PSet (i, j), RGB(xn, xn, xn)
Next j
Next i
End Sub

Friday, May 1, 2009

Histogram Equalization

Banyak sekali proses pengolahan citra yang melibatkan distribusi data, seperti pada contoh konversi biner di atas. Bahkan dalam image enhancement (perbaikan citra), distribusi dari nilai derajat keabuan pada citra menjadi suatu acuan dasar. Untuk menyatakan distribusi data dari nilai derajat keabuan ini dapat digunakan nilai histogram. Histogram adalah suatu fungsi yang menyatakan jumlah kemunculan dari setiap nilai. Misalkan diketahui data sebagai berikut:

X = 1 3 2 5 3 0 2 1 2 4 2 3

Maka histogramnya adalah munculnya setiap nilai, yaitu: nilai 0 muncul 1 kali, nilai 1 muncul 2 kali, nilai 2 muncul 4 kali, nilai 3 muncul 3 kali, nilai 4 muncul 1 kali dan nilai 5 muncul 1 kali. Karena citra mempunyai derajat keabuan 256 yaitu (0-255) maka histogram menyatakan jumlan kemunculan setiap nilai 0-255.
Adapun contoh praktikum sebagai berikut :



Listing program praktikum diatas sbb :

Private Sub Command6_Click()
Dim h(256) As Integer
For i = 1 To 256
h(i) = 0
Next i
For i = 1 To Picture1.Width Step 15
For j = 1 To Picture1.Height Step 15
warna = Picture1.Point(i, j)
R = warna And RGB(255, 0, 0)
G = Int((warna And RGB(0, 255, 0)) / 256)
B = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
x13 = Int((R + G + B) / 3)
h(x13 + 1) = h(x13 + 1) + 1
Picture1.PSet (i, j), RGB(x13, x13, x13)
Next j
Next i
ht2 = Picture2.Height
For i = 1 To 256
xp = 15 * (i - 1) + 1
Picture2.Line (xp, ht2 - h(i))-(xp, ht2), RGB(255, 0, 0)
Next i
End Sub