fungsi kelompok - · pdf fileoperasi pelembutan citra dilakukan untuk menekan komponen yang...

26
pengolahan citra halaman <1> Fungsi Kelompok : Efek Smooting Pelembutan citra (image smoothing) bertujuan untuk menekan gangguan (noise) pada citra. Gangguan tersebut biasanya muncul sebagai akibat dari hasil penerokan yang tidak bagus (sensor noise, photographic grain noise) atau akibat saluran transmisi (pada pengiriman data). Gangguan pada citra umumnya berupa variasi intensitas suatu pixel yang tidak berkorelasi dengan pixel-pixel tetangganya. Secara visual, gangguan mudah dilihat oleh mata karena tampak berbeda dengan pixel tetangganya. Pixel yang mengalami gangguan umumnya memiliki frekuensi tinggi (berdasarkan analisis frekuensi dengan transformasi Fourier). Komponen citra yang berfrekuensi rendah umumnya mempunyai nilai pixel konstan atau berubah sangat lambat. Operasi pelembutan citra dilakukan untuk menekan komponen yang berfrekuensi tinggi dan meloloskan komponen yang benfrekuensi rendah. Operasi pelembutan dapat dilakukan pada ranah spsial maupun pada ranah frekuensi. Pada ranah spasial, operasi pelembutan dilakukan dengan mengganti intensitas suatu pixel dengan rata-rata dan nilai pixel tersebut dengan nilai pixel-pixel tetangganya. Jadi, diberikan citra f(x,y) yang berukuran N x M. Citra hasil pelembutan, g(x,y), didefinisikan sebagai berikut : yang dalam hal ini d adalah jumlah pixel yang terlibat dalam perhitungan rata-rata. Gambar 1 memperlihatkan dua buah skema

Upload: truongnhu

Post on 07-Feb-2018

227 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <1>

Fungsi Kelompok :

Efek Smooting

Pelembutan citra (image smoothing) bertujuan untuk menekan

gangguan (noise) pada citra. Gangguan tersebut biasanya muncul

sebagai akibat dari hasil penerokan yang tidak bagus (sensor noise,

photographic grain noise) atau akibat saluran transmisi (pada

pengiriman data).

Gangguan pada citra umumnya berupa variasi intensitas suatu

pixel yang tidak berkorelasi dengan pixel-pixel tetangganya. Secara

visual, gangguan mudah dilihat oleh mata karena tampak berbeda

dengan pixel tetangganya. Pixel yang mengalami gangguan umumnya

memiliki frekuensi tinggi (berdasarkan analisis frekuensi dengan

transformasi Fourier). Komponen citra yang berfrekuensi rendah

umumnya mempunyai nilai pixel konstan atau berubah sangat lambat.

Operasi pelembutan citra dilakukan untuk menekan komponen yang

berfrekuensi tinggi dan meloloskan komponen yang benfrekuensi

rendah.

Operasi pelembutan dapat dilakukan pada ranah spsial maupun

pada ranah frekuensi. Pada ranah spasial, operasi pelembutan

dilakukan dengan mengganti intensitas suatu pixel dengan rata-rata dan

nilai pixel tersebut dengan nilai pixel-pixel tetangganya. Jadi, diberikan

citra f(x,y) yang berukuran N x M. Citra hasil pelembutan, g(x,y),

didefinisikan sebagai berikut :

yang dalam hal ini d adalah jumlah pixel yang terlibat dalam

perhitungan rata-rata. Gambar 1 memperlihatkan dua buah skema

Page 2: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <2>

perata-rataan [G0N77]. Pada skema pertama, tetangga sebuah pixel

adalah pixel-pixel yang berjarak x, sedangkan pada skema kedua

tetangga sebuah pixel adalah pixel-pixel yang berjarak paling jauh 2

x. Operasi perata-rataan di atas dapat dipandang sebagai konvolusi

antara citra f(x,y) dengan penapis h(x,y) :

Penapis h disebut penapis rerata (mean filter). Dalam ranah frekuensi,

operasi konvolusi tersebut adalah

radius = x

radius = 2 x

Gambar 1. Skema Perata-Rataan

Page 3: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <3>

Contoh penapis rerata yang berukuran 3 x 3 dan 2 x 2 adalah seperti di

bawah ini (elemen yang bertanda • menyatakan posisi (0, 0) dan pixel

yang dikonvolusi)):

Algoritma pelembutan citra dengan penapis 3 x 3 ditunjukkan pada

Algoritma berikut :

void PerataanCitra (citra image, citra imageresult, int N, int M)/* Melembutkan citra image yang berukuran N x M dengan melakukankonvolusi citra image dengan penapis rerata yang berukuran 3 x 3. Hasilpelembutan disimpan di dalam image result. */{ int I, j; for (i=1; i<=N-1; i++) for (j=1; j<=M-1; j++) { imageresult [i][j] = image[i-1][j-1]+image[i-1][j]+image[i-1, j+1]+ image[i][j-1]+image[i][j]+image [I,j+1] + image[i+1][j-1]+image[i+1][j] + image[i+1,j+1]; imageresult[i][j] = imageresult[i][j]/9; }}

Operasi penapisan ini mempunyai efek pemerataan derajat

keabuan, sehingga gambar yang diperoleh tampak lebih kabur

kontrasnya. Efek pengaburan mi disebut efek blurring. Efek pengaburan

yang dihasilkan dan penapis rata-rata dapat dikurangi dengan prosedur

pengambangan berikut :

dengan T adalah nilai ambang yang dispesifikasikan.

Page 4: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <4>

Penapis h(x,y) pada operasi pelembutan citra disebut juga penapis

lolos-rendah (low-pass filter), karena penapis tersebut menekan

komponen yang berfrekuensi tinggi (misalnya pixel gangguan, pixel tepi)

dan meloloskan komponen yang berfrekuensi rendah.

Penapis Lolos-Rendah

Penapis rata-rata adalah salah satu penapis lolos-rendah yang

paling sederhana. Aturan untuk penapis Iolos-rendah adalah :

1. Semua koefisien penapis harus positif

2. Jumlah semua koefisien harus sama dengan 1

Jika jumlah semua koefisien lebih besar dari 1, maka konvolusi

menghasilkan penguatan (tidak diinginkan). Jika jumlah semua koefisien

kurang dan 1, maka yang dihasilkan adalah penurunan, dan nilai mutlak

setiap pixel di seluruh bagian citra berkurang. Akibatnya, citra hasil

pelembutan tampak lebih gelap.

Ilustrasi konvolusi dengan penapis rata-rata 3 x 3 terhadap citra

yang mengandung pixel derau diperlihatkan di bawah ini. Pixel yang

mengalami gangguan dimisalkan bernilai 17, sedangkan nilai pixel

tetangganya (yang tidak mengalami gangguan) bernilai rendah,

misalkan 8. Efek dan penapis lolos-rendah adalah sbb : pixel-pixel

tetangga tidak mengalami perubahan (kecuali bila terdapat

perbedaan nilai atau gradien antara pixel-pixel yang bertetangga),

sedangkan pixel derau nilainya turun menjadi 9 :

Page 5: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <5>

Nilai 9 ini diperoleh dan hasil perhitungan konvolusi :

(1,1) = (8 + 8 + 8 + 8 + 17 + 8 + 8 + 8 + 8)/9 = 81/ 9 = 9

Selain dengan penapis rata-rata, penapis lolos-rendah lain yang dapat

digunakan pada operasi pelembutan adalah :

Jika citra hasil penapisan Iolos-rendah dikurangi dari citra semula

(yang mengandung derau), maka yang dihasilkan adalah peningkatan

relatif komponen citra yang berfrekuensi tinggi tanpa peningkatan

komponen derau. Akibatnya, citra hasil pengurangan muncul lebih

tajam dan citra semula. ini dapat digunakan untuk menonjolkan bagian

citra yang tidak jelas, misalnya tertutup oleh kabut atau awan. Aplikasi ini

dapat diterapkan untuk mendapatkan citra kota Jakarta yang Iebih

bagus daripada citra kota Jakarta yang tertutup oleh kabut.

Penapis lolos-rendah yang disebutkan di atas merupakan penapis

lanjar (linear). Operasi pelembutan dapat juga dilakukan dengan

menggunakan penapis nirlanjar, yaitu:

1. Penapis minimum (min filter)

2. Penapis maksimum (max filter)

3. Penapis median (median filter)

Penapis nirlanjar sebenarnya tidak termasuk kategori operasi konvolusi

yang lazim. Cara kerja penapis tersebut berbeda dari penapis lanjar.

Operasi dengan penapis nirlanjar dihitung dengan mengurutkan nilai

intensitas sekelompok pixel, lalu mengganti nilai pixel yang sedang

diproses dengan nilai tertentu dan kelompok tersebut (misalnya nilai

median dan kelompok pixel, nilai maksimum atau nilai minimum dari

kelompok pixel)

Page 6: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <6>

Penapis Median

Penapis nirlanjar yang akan dijelaskan adalah penapis median.

Penapis ini dikembangkan oleh Tukey. Pada penapis median, suatu

“jendela” (window) memuat sejumlah pixel (ganjil). Jendela digeser titik

demi titik pada seluruh daerah citra. Pada setiap pergeseran dibuat

jendela baru. Titik tengah dan jendela ini diubah dengan nilai median

dari jendela tersebut.

Dan kedua contoh penapis (penapis rerata dan penapis median),

dapat dilihat bahwa penapis median memberikan hasil yang Iebih baik

dibandingkan penapis rerata untuk citra yang mengalami gangguan

dalam bentuk spike berupa bercak bercak putih.

Cara lain yang dapat dilakukan pada pelembutan citra adalah

merata-ratakan derajat keabuan setiap pixel dan citra yang sama yang

diambil berkali-kali. Misalnya untuk gambar yang sarna direkam dua kali,

lalu dihitung intensitas rata rata untuk setiap pixel :

Efek Sharpening

Operasi penajaman citra bertujuan memperjelas tepi pada objek

di dalam citra. Penajaman citra merupakan kebalikan dan operasi

pelembutan citra, karena operasi ini menghilangkan bagian citra yang

lembut.

Operasi penajaman dilakukan dengan melewatkan citra pada

penapis lolos-tinggi (high-pass filter). Penapis lolos-tinggi akan meloloskan

(atau memperkuat) komponen yang berfrekuensi tinggi (misalnya tepi

atau pinggiran objek) dan akan menurunkan komponen berfrekuensi

rendah. Akibatnya, pinggiran objek telihat lebih tajam dibandingkan

sekitarnya.

Page 7: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <7>

Selain untuk mempertajam gambar, penapis lolos-tinggi juga

digunakan untuk mendeteksi keberadaan tepi (edge detection). Dalam

hal ini, pixel-pixel tepi ditampilkan lebih terang (highlight) sedangkan

pixel-pixel bukan tepi dibuat gelap (hitam).

Penapis Lolos-Tinggi

Aturan penapis lolos-tinggi :

1. koefisien penapis boleh positif, negatif, atau nol

2. jumlah semua koefisien adalah 0 atau 1

Jika jumlah koefisien = 0, maka komponen berfrekuensi rendah

akan turun nilainya, sedangkan jika jumlah koefisien, sama dengan 1,

maka komponen berfrekuensi rendah akan tetap sama dengan nilai

semula. Contoh-contoh penapis lolos-tinggi :

Nilai koefisien yang besar di titik pusat penapis memainkan peranan

kunci dalam proses konvolusi. Pada komponen citra dengan frekuensi

tinggi (yang berarti perubahan yang besar pada nilai intensitasnya), nilai

tengah ini dikalikan dengan nilai pixel yang dihitung. Koefisien negatif

yang lebih kecil di sekitar titik tengah penapis bekerja untuk mengurangi

faktor pembobotan yang besar. Efek nettonya adalah, pixel-pixel yang

bernilai besar diperkuat, sedangkan area citra dengan intensitas pixel

konstan tidak berubah nilanya.

Page 8: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <8>

Karena koefisien penapis mengandung nilai negatif, maka

konvolusi mungkin saja menghasilkan pixel bernilai negatif. Meskipun

intensitas bernilai negatif menarik, tetapi kita tidak dapat

menampilkannya. Untuk alasan terakhir ini implementasi konvolusi men-

set nilai negatif menjadi nilai 0. Cara lainnya adalah dengan

mengambil nilai mutlaknya atau menskalakan semua nilai pixel secara

menaik sehingga nilai yang paling negatif menjadi 0.

Hasil Rancangan Tugas Kelompok :

Gambar 1. Form Utama

Page 9: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <9>

Gambar 3. Form Hasil Efek Smooting

Gambar 2. Form Histogram

Page 10: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <10>

Listing ProgramForm1

Private Sub cmdclose_Click() EndEnd Sub

Private Sub cmdhis_Click() Me.Hide Form2.Show For i = 0 To 255 X1 = Form2.Picture1.Width \ 256 + (i * (Form2.Picture1.Width \ 256)) Y1 = Form2.Picture1.Height Yr = Y1 - Frekuensi(0, i) Yg = Y1 - Frekuensi(1, i) Yb = Y1 - Frekuensi(2, i) Form2.Picture1.Line (X1, Y1)-(X1, Yr) Form2.Picture2.Line (X1, Y1)-(X1, Yg) Form2.Picture3.Line (X1, Y1)-(X1, Yb) NextEnd Sub

Gambar 4. Form Hasil Efek Sharpening

Page 11: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <11>

Private Sub cmdopen_Click()Dim i As Integer, j As IntegerDim red As Integer, green As Integer, blue As IntegerDim Pixel As LongDim PictureName As StringCommonDialog1.InitDir = App.PathCommonDialog1.Filter = "Image|*.BMP;*.GIF;*.JPG;*.DIB|All Files|*.*"CommonDialog1.Action = 1PictureName = CommonDialog1.FileNameIf PictureName = "" Then Exit SubPicture1.Picture = LoadPicture(PictureName)Form1.Refreshx = Picture1.ScaleWidthy = Picture1.ScaleHeightIf x > 500 Or y > 500 Then MsgBox "Image terlalu besar, Silahkan coba Image yang lebih kecil" x = 0 y = 0 Exit SubEnd IfForm1.Width = Form1.ScaleX(Picture1.Width + 6, vbPixels, vbTwips)Form1.Height = Form1.ScaleY(Picture1.Height + 30, vbPixels, vbTwips)Form1.RefreshForm3.ShowForm3.RefreshFor i = 0 To y - 1 For j = 0 To x - 1 Pixel = Form1.Picture1.Point(j, i) red = Pixel& Mod 256 green = ((Pixel And &HFF00) / 256&) Mod 256& blue = (Pixel And &HFF0000) / 65536 ImagePixels(0, i, j) = red If red < 0 Then red = 0 If green < 0 Then green = 0 If blue < 0 Then blue = 0 ImagePixels(1, i, j) = green ImagePixels(2, i, j) = blue Frekuensi(0, red) = Frekuensi(0, red) + 1 Frekuensi(1, green) = Frekuensi(1, green) + 1 Frekuensi(2, blue) = Frekuensi(2, blue) + 1 Next Form3.ProgressBar1.Value = i * 100 / (y - 1)NextForm3.Hide

End Sub

Private Sub cmdsharp_Click()Dim i As Integer, j As IntegerConst Dx As Integer = 1Const Dy As Integer = 1Dim red As Integer, green As Integer, blue As IntegerMe.Hide

Page 12: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <12>

Form5.ShowFor i = 1 To y - 2 For j = 1 To x - 2 red = ImagePixels(0, i, j) + 0.5 * (ImagePixels(0, 1, j) _ - ImagePixels(0, i - Dx, j - Dy)) green = ImagePixels(1, i, j) + 0.5 * (ImagePixels(1, 1, j) _ - ImagePixels(1, i - Dx, j - Dy)) blue = ImagePixels(2, i, j) + 0.5 * (ImagePixels(2, 1, j) _ - ImagePixels(2, i - Dx, j - Dy))

If red > 255 Then red = 255 If red < 0 Then red = 0 If green > 255 Then green = 255 If green < 0 Then green = 0 If blue > 255 Then blue = 255 If blue < 0 Then blue = 0 Form5.Picture2.PSet (j, i), RGB(red, green, blue) Form5.Picture1.PSet (j, i), RGB(ImagePixels(0, i, j), ImagePixels(1, i, j),

ImagePixels(2, i, j)) Next Form5.Picture2.RefreshNext

End Sub

Private Sub cmdsmoot_Click() Dim i As Integer, j As Integer Dim red As Integer, green As Integer, blue As Integer Me.Hide Form4.Show For i = 1 To y - 2 For j = 1 To x - 2 red = ImagePixels(0, i - 1, j - 1) + ImagePixels(0, i - 1, j) _ + ImagePixels(0, i - 1, j + 1) + ImagePixels(0, i, j - 1) _ + ImagePixels(0, i, j) + ImagePixels(0, i, j + 1) _ + ImagePixels(0, i + 1, j - 1) + ImagePixels(0, i + 1, j) _ + ImagePixels(0, i + 1, j + 1) green = ImagePixels(1, i - 1, j - 1) + ImagePixels(1, i - 1, j) _ + ImagePixels(1, i - 1, j + 1) + ImagePixels(1, i, j - 1) _ + ImagePixels(1, i, j) + ImagePixels(1, i, j + 1) _ + ImagePixels(1, i + 1, j - 1) + ImagePixels(1, i + 1, j) _ + ImagePixels(1, i + 1, j + 1) blue = ImagePixels(2, i - 1, j - 1) + ImagePixels(2, i - 1, j) _ + ImagePixels(2, i - 1, j + 1) + ImagePixels(2, i, j - 1) _ + ImagePixels(2, i, j) + ImagePixels(2, i, j + 1) _ + ImagePixels(2, i + 1, j - 1) + ImagePixels(2, i + 1, j) _ + ImagePixels(2, i + 1, j + 1) Form4.Picture2.PSet (j, i), RGB(red / 9, green / 9, blue / 9) Form4.Picture1.PSet (j, i), RGB(ImagePixels(0, i, j), ImagePixels(1, i, j),

ImagePixels(2, i, j)) Next Form4.Picture1.Refresh Next

Page 13: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <13>

End Sub

Private Sub Form_Load() Me.Top = (Screen.Height - Height) / 2 Me.Left = (Screen.Width - Width) / 2End Sub

Form2

Private Sub Form_Load() Me.Top = (Screen.Height - Height) / 2 Me.Left = (Screen.Width - Width) / 2End Sub

Private Sub Form_Unload(Cancel As Integer) Form1.ShowEnd Sub

Form4

Private Sub Form_Load() Me.Top = (Screen.Height - Height) / 2 Me.Left = (Screen.Width - Width) / 2End Sub

Private Sub Form_Unload(Cancel As Integer) Form1.ShowEnd SubForm5

Private Sub Form_Load() Me.Top = (Screen.Height - Height) / 2 Me.Left = (Screen.Width - Width) / 2End Sub

Private Sub Form_Unload(Cancel As Integer) Form1.ShowEnd Sub

Module

Global ImagePixels(2, 800, 800) As IntegerGlobal Frekuensi(2, 255) As DoubleGlobal x, y As Integer

Page 14: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <14>

Fungsi Individu :

Watermark

Gambar 5. Form Sebelum Diberi Efek Watermark

Gambar 6. Form Setelah Diberi Efek Watermark

Page 15: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <15>

Listing Program Watermark :

Option Explicit

Private Function CombineColors(ByVal clr1 As OLE_COLOR, ByVal clr2 AsOLE_COLOR, ByVal A As Byte) As OLE_COLOR

Dim r1 As LongDim g1 As LongDim b1 As LongDim r2 As LongDim g2 As LongDim b2 As Long

b1 = Int(clr1 / 65536) g1 = Int((clr1 - (65536 * b1)) / 256) r1 = clr1 - ((b1 * 65536) + (g1 * 256)) b2 = Int(clr2 / 65536) g2 = Int((clr2 - (65536 * b2)) / 256) r2 = clr2 - ((b2 * 65536) + (g2 * 256)) r1 = (A * r1 + (255 - A) * r2) \ 256 g1 = (A * g1 + (255 - A) * g2) \ 256 b1 = (A * b1 + (255 - A) * b2) \ 256 CombineColors = r1 + 256 * g1 + 65536 * b1End Function

Private Sub Form_Load()Dim x As IntegerDim y As Integer

picBackground.AutoRedraw = True picWatermark1.AutoRedraw = True picWatermark2.AutoRedraw = True picBackground.ScaleMode = vbPixels picWatermark1.ScaleMode = vbPixels picWatermark2.ScaleMode = vbPixels x = (picBackground.ScaleWidth - picWatermark1.ScaleWidth) \ 2 y = (picBackground.ScaleHeight - picWatermark1.ScaleHeight) \ 3 DrawWatermark picWatermark1, picBackground, x, y y = 2 * (picBackground.ScaleHeight - picWatermark1.ScaleHeight) \ 3 DrawWatermark picWatermark2, picBackground, x, yEnd Sub

Private Sub DrawWatermark(ByVal wm_pic As PictureBox, ByVal bg_pic AsPictureBox, ByVal x As Integer, ByVal y As Integer)

Const ALPHA As Byte = 128Dim transparent As OLE_COLORDim wm_clr As OLE_COLORDim bg_clr As OLE_COLORDim new_clr As OLE_COLORDim px As IntegerDim py As Integer

transparent = wm_pic.Point(0, 0)

Page 16: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <16>

wm_pic.ScaleMode = vbPixels bg_pic.ScaleMode = vbPixels For py = 0 To wm_pic.ScaleHeight - 1 For px = 0 To wm_pic.ScaleWidth - 1 wm_clr = wm_pic.Point(px, py) If wm_clr <> transparent Then bg_clr = bg_pic.Point(x + px, y + py) new_clr = CombineColors(wm_clr, bg_clr, ALPHA) bg_pic.PSet (x + px, y + py), new_clr End If Next px Next pyEnd Sub

Edge Detection

Gambar 7. Form Setelah Dipilih Vertical Edges

Page 17: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <17>

Listing Program Edge Detection :

Option ExplicitDim PixelDim Pixel2Dim RredDim GgreenDim BblueDim RR1Dim GG1Dim BB1Dim RR2Dim GG2Dim BB2Dim RR3Dim GG3Dim BB3Dim Q As StringDim XXX As IntegerDim YYY As IntegerDim XX As Integer

Gambar 8. Form Setelah Dipilih Horizontal Edges

Page 18: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <18>

Dim YY As IntegerDim RR As IntegerDim RG As IntegerDim RB As Integer

Private Sub GetRGB(ByVal Col As String)On Error Resume Next

Bblue = Col \ (256 ^ 2) Ggreen = (Col - Bblue * 256 ^ 2) \ 256 Rred = (Col - Bblue * 256 ^ 2 - Ggreen * 256)End Sub

Private Sub Command21_Click()On Error Resume NextQ = InputBox("Enter a value for find horizontal edges (higher value = brighterimage)", "", "4")If Q = "" Then Exit Sub

For YYY = 0 To Picture1.ScaleHeight - 1For XXX = 0 To Picture1.ScaleWidth - 1

Pixel2 = GetPixel(Picture1.HDC, XXX + 2, YYY)Pixel = GetPixel(Picture1.HDC, XXX + 1, YYY)GetRGB PixelRR1 = RredGG1 = GgreenBB1 = BblueGetRGB Pixel2RR2 = RredGG2 = GgreenBB2 = BblueIf RR1 = RR2 Then RR3 = 0If RR1 > RR2 ThenRR3 = RR1 - RR2ElseRR3 = RR2 - RR1End IfIf GG1 = GG2 Then GG3 = 0If GG1 > GG2 ThenGG3 = GG1 - GG2ElseGG3 = GG2 - GG1End IfIf BB1 = BB2 Then BB3 = 0If BB1 > BB2 ThenBB3 = BB1 - BB2ElseBB3 = BB2 - BB1End IfSetPixelV Picture1.HDC, XXX, YYY, RGB(RR3 * Q, GG3 * Q, BB3 * Q)

NextPicture1.Refresh

NextPicture1.Refresh

Page 19: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <19>

End Sub

Private Sub Command22_Click()On Error Resume NextQ = InputBox("Enter a value for find vertical edges (higher value = brighterimage)", "", "4")If Q = "" Then Exit Sub

For XXX = 0 To Picture1.ScaleWidth - 1For YYY = 0 To Picture1.ScaleHeight - 1

Pixel2 = GetPixel(Picture1.HDC, XXX, YYY + 2)Pixel = GetPixel(Picture1.HDC, XXX, YYY + 1)GetRGB PixelRR1 = RredGG1 = GgreenBB1 = BblueGetRGB Pixel2RR2 = RredGG2 = GgreenBB2 = BblueIf RR1 = RR2 Then RR3 = 0If RR1 > RR2 ThenRR3 = RR1 - RR2ElseRR3 = RR2 - RR1End IfIf GG1 = GG2 Then GG3 = 0If GG1 > GG2 ThenGG3 = GG1 - GG2ElseGG3 = GG2 - GG1End IfIf BB1 = BB2 Then BB3 = 0If BB1 > BB2 ThenBB3 = BB1 - BB2ElseBB3 = BB2 - BB1End IfSetPixelV Picture1.HDC, XXX, YYY, RGB(RR3 * Q, GG3 * Q, BB3 * Q)

NextPicture1.Refresh

NextPicture1.Refresh

End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X AsSingle, Y As Single)

JB = 1CurX = XCurY = Y

End SubPrivate Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, YAs Single)

Page 20: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <20>

JB = 0End Sub

Module

Declare Function GetPixel Lib "gdi32" (ByVal HDC As Long, ByVal X As Long,ByVal Y As Long) As Long

Declare Function SetPixelV Lib "gdi32" (ByVal HDC As Long, ByVal X As Long,ByVal Y As Long, ByVal crColor As Long) As Long

Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long,ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByValhSrcDC As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop AsLong) As Long

Brightness

Gambar 9. Form Brightness

Page 21: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <21>

Listing Program Brightness :

Option Explicit

Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObjectAs Long, ByVal nCount As Long, lpObject As Any) As LongPrivate Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByValhBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBitsAs Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As LongPrivate Declare Function SetDIBits Lib "gdi32" (ByVal hdc As Long, ByValhBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBitsAs Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As LongPrivate Type BITMAP '14 bytes bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As LongEnd Type

Private Type BITMAPINFOHEADER '40 bytes biSize As Long biWidth As Long biHeight As Long biPlanes As Integer biBitCount As Integer biCompression As Long biSizeImage As Long biXPelsPerMeter As Long biYPelsPerMeter As Long biClrUsed As Long biClrImportant As LongEnd Type

Private Type RGBQUAD rgbBlue As Byte rgbGreen As Byte rgbRed As Byte rgbReserved As ByteEnd Type

Private Type BITMAPINFO bmiHeader As BITMAPINFOHEADER bmiColors As RGBQUADEnd Type

Private Const DIB_RGB_COLORS = 0&Private Const BI_RGB = 0&Private Const pixR As Integer = 3Private Const pixG As Integer = 2

Page 22: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <22>

Private Const pixB As Integer = 1

Private Sub SetBrightness(ByVal pic1 As PictureBox, ByVal pic2 As PictureBox,ByVal brightness As Single)

Dim bitmap_info As BITMAPINFODim pixels() As ByteDim bytes_per_scanLine As IntegerDim pad_per_scanLine As IntegerDim X As IntegerDim Y As IntegerDim fraction As Single

With bitmap_info.bmiHeader .biSize = 40 .biWidth = Picture1.ScaleWidth ' Use negative height to scan top-down. .biHeight = -Picture1.ScaleHeight .biPlanes = 1 .biBitCount = 32 .biCompression = BI_RGB bytes_per_scanLine = ((((.biWidth * .biBitCount) + 31) \ 32) * 4) pad_per_scanLine = bytes_per_scanLine - (((.biWidth * .biBitCount) + 7) \ 8) .biSizeImage = bytes_per_scanLine * Abs(.biHeight) End With ReDim pixels(1 To 4, 1 To Picture1.ScaleWidth, 1 To Picture1.ScaleHeight) GetDIBits Picture1.hdc, Picture1.Image, _ 0, Picture1.ScaleHeight, pixels(1, 1, 1), _ bitmap_info, DIB_RGB_COLORS ' Modify the pixels. If brightness < 0 Then ' Darken. fraction = (100 + brightness) / 100 For Y = 1 To pic1.ScaleHeight For X = 1 To pic1.ScaleWidth pixels(pixR, X, Y) = fraction * pixels(pixR, X, Y) pixels(pixG, X, Y) = fraction * pixels(pixG, X, Y) pixels(pixB, X, Y) = fraction * pixels(pixB, X, Y) Next X Next Y Else ' Brighten. fraction = brightness / 100 For Y = 1 To pic1.ScaleHeight For X = 1 To pic1.ScaleWidth pixels(pixR, X, Y) = pixels(pixR, X, Y) + _ fraction * (255 - pixels(pixR, X, Y)) pixels(pixG, X, Y) = pixels(pixG, X, Y) + _ fraction * (255 - pixels(pixG, X, Y)) pixels(pixB, X, Y) = pixels(pixB, X, Y) + _ fraction * (255 - pixels(pixB, X, Y)) Next X Next Y End If

Page 23: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <23>

' Display the result. SetDIBits Picture2.hdc, Picture2.Image, _ 0, Picture1.ScaleHeight, pixels(1, 1, 1), _ bitmap_info, DIB_RGB_COLORS Picture2.Picture = Picture2.ImageEnd Sub

Private Sub Form_Load() Me.Top = (Screen.Height - Height) / 2 Me.Left = (Screen.Width - Width) / 2 Picture1.ScaleMode = vbPixels Picture2.ScaleMode = vbPixels Picture1.AutoRedraw = True Picture2.AutoRedraw = TrueEnd Sub

Private Sub HScroll1_Change() SetBrightness Picture1, Picture2, HScroll1.Value lblValue.Caption = Format$(HScroll1.Value)End Sub

Binary Image

Gambar 10. Form Binary Image

Page 24: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <24>

Listing Program Binary Image :

Option ExplicitDim PixelDim RredDim GgreenDim BblueDim Q As StringDim Temp As IntegerDim XXX As IntegerDim YYY As IntegerDim XX As Integer

Private Sub GetRGB(ByVal Col As String)On Error Resume Next Bblue = Col \ (256 ^ 2) Ggreen = (Col - Bblue * 256 ^ 2) \ 256 Rred = (Col - Bblue * 256 ^ 2 - Ggreen * 256) End Sub

Private Sub Form_Load()On Error Resume NextQ = InputBox("Enter a value for black and white (0-255, high value will make adarker image)", "", "127")Me.Top = (Screen.Height - Height) / 2Me.Left = (Screen.Width - Width) / 2If Q = "" Then Exit SubFor YYY = 0 To Picture1.ScaleHeight - 1 For XXX = 0 To Picture1.ScaleWidth - 1 Pixel = GetPixel(Picture1.HDC, XXX, YYY) GetRGB Pixel Temp = (Rred + Ggreen + Bblue) Temp = (Temp / 3) If Val(Temp) >= Q Then Pixel = vbWhite Else Pixel = vbBlack End If SetPixelV Picture1.HDC, XXX, YYY, Pixel Next Picture1.RefreshNextPicture1.Refresh

End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X AsSingle, Y As Single) JB = 1 CurX = X CurY = YEnd Sub

Page 25: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <25>

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, YAs Single) JB = 0End Sub

ModuleDeclare Function GetPixel Lib "gdi32" (ByVal HDC As Long, ByVal X As Long,

ByVal Y As Long) As LongDeclare Function SetPixelV Lib "gdi32" (ByVal HDC As Long, ByVal X As Long,

ByVal Y As Long, ByVal crColor As Long) As LongDeclare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long,

ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByValhSrcDC As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop AsLong) As Long

Page 26: Fungsi Kelompok -   · PDF fileOperasi pelembutan citra dilakukan untuk menekan komponen yang ... pengolahan citra ... Jendela digeser titik demi titik pada seluruh daerah citra

pengolahan citra

halaman <26>

Daftar Pustaka

Munir, Rinaldi. 2004. Pengolahan Citra Digital Dengan PendekatanAlgoritma. Bandung : Penerbit Informatika

Daftar Situs :

http://www.vb-helper.com/howto_watermark.htmlhttp://www.vb-helper.com/howto_adjust_brightness.htmlhttp://www.vbaccelerator.com/home/VB/Code/vbMedia/Image_Processi

ng/Edge_Detection/article.asphttp://www.vbaccelerator.com/home/VB/Code/vbMedia/Image_Processi

ng/Binary_Image/article.asp