Top Banner

of 29

Makalah - Citra Digital

Jul 18, 2015

Download

Documents

Arif Aditomo
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

BAB I DASAR TEORI

I.

Citra 1. Citra, menurut kamus Webster, adalah suatu representasi, kemiripan, atau imitasi dari suatu objek atau benda. 2. Citra (image) adalah gambar pada bidang dua dimensi yang dihasilkan dari gambar analog dua dimensi yang kontinyu menjadi gambar diskrit melalui proses digitasi. 3. Citra, dari sudut pandang matematis, merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang 2 dimensi.

Citra = gambar = image

Citra sebagai keluaran dari suatu sistem perekaman data dapat bersifat : a. optik berupa foto b. analog berupa sinyal video seperti gambar pada monitor televisi c. digital yang dapat langsung disimpan pada media penyimpan magnetic Citra juga dapat dikelompokkan menjadi 2 yaitu : a. Citra tidak tampak (data foto/gambar dalam file, citra yang direpresentasikan dalam fungsi matematis) b. Citra tampak (foto, gambar, lukisan, apa yang nampak di layar monitor/televisi , hologram , dll) Pencitraan (imaging) adalah kegiatan mengubah informasi dari citra tampak/citra non digital menjadi citra digital. Beberapa alatMuhammad Furqan. Q. Ts. TI0801029 1|Page

yang dapat digunakan untuk pencitraan adalah : scanner, kamera digital, kamera sinar-x/sinar infra merah, dll Pengolahan Citra (image processing) adalah kegiatan memperbaiki kualitas citra agar mudah diinterpretasi oleh manusia/mesin(komputer). Inputannya adalah citra dan keluarannya juga citra tapi dengan kualitas lebih baik daripada citra masukan, misal citra warnanya kurang tajam, kabur (blurring), mengandung noise (misal bintikbintik putih), dll sehingga perlu ada pemrosesan untuk memperbaiki citra karena citra tersebut menjadi sulit diinterpretasikan karena informasi yang disampaikan menjadi berkurang. Operasi-operasi pada pengolahan citra diterapkan pada citra bila :a) Perbaikan atau memodifikasi citra dilakukan untuk

meningkatkan kualitas penampakan citra/menonjolkan beberapa aspek informasi yang terkandung dalam citra (image enhancement). Contoh : perbaikan kontras gelap/terang, perbaikan tepian objek, penajaman, pemberian warna semu, dll.b) Adanya cacat pada citra sehingga perlu

dihilangkan/diminimumkan (image restoration). Contoh : penghilangan kesamaran (debluring) ??? citra tampak kabur karena pengaturan fokus lensa tidak tepat / kamera goyang, penghilangan noisec) Elemen dalam citra perlu dikelompokkan, dicocokan atau

diukur (image segmentation). Operasi ini berkaitan erat dengan pengenalan pola.d) Diperlukannya ekstraksi ciri-ciri tertentu yang dimiliki citra

untuk membantu dalam pengidentifikasian objek (image analysis). Proses segementasi kadangkala diperlukan untukMuhammad Furqan. Q. Ts. TI0801029 2|Page

melokalisasi objek yang diinginkan dari sekelilingnya. Contoh : pendeteksian tepi objek.e) Sebagian citra perlu digabung dengan bagian citra yang lain

(image reconstruction). Contoh : beberapa foto rontgen digunakan untuk membentuk ulang gambar organ tubuh.f) Citra perlu dimampatkan (image compression). Contoh : suatu

file citra berbentuk BMP berukuran 258 KB dimampatkan dengan metode JPEG menjadi berukuran 49 KB.g) Menyembunyikan data rahasia (berupa teks/citra) pada citra

sehingga keberadaan data rahasia tersebut tidak diketahui orang (steganografi & watermarking). II. Bahasa Pemrograman Dalam program aplikasi pengolahan citra kami menggunakan bahasa pemrograman Visual basic 6, yang merupakan bahasa pemrograman tingkat tinggi dari Microsoft yang berarah grafis dan relatif mudah untuk dipelajari. Visual basic dapat digunakan untuk membuat aplikasi basisdata sederhana sampai perangkat lunak komersial. III. Metode pengolahan citra Dalam aplikasi yang kami buat, kami menggunakan beberapa metode didalam teknik pengolahan citra, yaitu : 1. Black and white 2. Grayscale 3. Smart noise 4. Negative 5. Flip horizontal 6. Flip vertical 7. Restore imageMuhammad Furqan. Q. Ts. TI0801029 3|Page

8. Edge detection 9. Invert 10. Blur 11. Mask 12. Histogram 13. Dan Lain - Lain Berikut adalah sebagian penjelasan dari metode yang kami gunakan : 1. Black and white Black and white adalah sebuah citra pixel-pixel yang nilai intensitasnya di bawah 128 diubah menjadi hitam (nilai intensitas = 0), sedangkan pixelpixel yang nilai intensitasnya di atas 128 diubah menjadi putih (nilai intensitas =1). Black and white disebut juga citra biner. 2. Grayscale Grayscale adalah sebuah citra dimana terjadi perubahan derajat keabuan dengan membagi masing-masing nilai dari itensitas warna RGB kemudian dicari rata-ratanya. 3. Smart noise Smart noise adalah proses pembentukan bintik-bintik putih pada citra atau gambar. 4. Negative Negatif Image adalah suatu citra sepeti halnya meniru film negatif pada fotografi dengan cara mengurangi nilai intensitas pixel dari nilai keabuan maksimum. Misal citra dengan 256 derajat keabuan (8 bit), maka citra negatif diperoleh dengan persaman X = (R + G + B) / bilangan pembagiMuhammad Furqan. Q. Ts. TI0801029 4|Page

Y = 255 - X 5. Flip Horizontal Flip Horizontal adalah adalah pencerminan pada sumbu Y (cartesian) dari citra A menjadi citra B, yang diberikan oleh : B[x][y] = A[N-x][y]

6. Flip Vertical Flip Vertical adalah pencerminan pada sumbu X (cartesian) dari citra A menjadi citra B, yang diberikan oleh : B[x][y] = A[x][M-y] 7. Restore image Restore image adalah suatu proses pengembalian bentuk citra atau gambar sebelum dilakukan proses pengolahan citra atau bentuk awalnya. 8. Edge detection Deteksi tepi (Edge Detection) pada suatu citra adalah suatu proses yang menghasilkan tepi-tepi dari objek-objek gambar. Tujuan pendeteksian tepi adalah untuk meningkatkan penampakan garis batas suatu daerah atau objek di dalam citra. 9. Invert InvertImage adalah suatu gambar yang terjadi adanya proses invert pada gambar asli sehingga tampak seperti gambar negative pada suatu susunan warna RGB. Proses invert ini berbeda dengan ImageNegative. 10. Blur Blur Image adalah proses pengacakan pada suatu susunan pixel-pixel warna RGB sehingga suatu gambar menjadi kabur untuk dilihat.Muhammad Furqan. Q. Ts. TI0801029 5|Page

11. Mask ImageMask adalah suatu gambar yang terjadi adanya kerenggangan pixelpixel yang mewakili warna RGB yang didominasi sehingga warna RGB pada gambar menjadi renggang seperti halnya kurang dari 128 bit yang di dominasi warna-warna RGB tersebut. 12. Histogram Histogram citra adalah grafik yang menggambarkan penyebaran nilai-nilai intensitas pixel dari suatu citra atau bagian tertentu di dalam citra. Histogram juga dapat menunjukkan tanda kecerahan (brightness) kontras (contrast) dari sebuah citra. dan

BAB II PEMBAHASAN PROGRAM PEMBUAT APLIKASI

Muhammad Furqan. Q. Ts. TI0801029 6|Page

Salah satu cara untuk mengaktifkan IDE Visual Basic adalah menjalankannya dari Menu Start, pilih menu Command, dan pilih Microsoft Visual Basic 6.0 dan akhirnya Microsoft Visual Basic 6.0.

Sesaat anda aktif di IDE Visual Basic, maka anda akan dihadapkan kepada suatu pilihan terhadap jenis Project yang ingin anda buat sebagaimana yang ditunjukan oleh Gambar 1-2. Sebagai langkah awal dari proses belajar adalah memilih project Standard EXE.

IDE Visual Basic 6 menggunakan model MDI (Multiple Document Interface). Berikut ini adalah gambar yang menunjukan bagian-bagian dan nama-nama jendela yang dapat tampil pada IDE Visual Basic. Mungkin pada IDE anda hanya ditampilkan sebagian jendela dibandingkan dengan Gambar 1-3 anda tidak perlu terkejut, karena penampilan dari jendela-jendela tersebut dapat diatur dengan perintah pada menu View. Sebagai langkah awal dari proses belajar, tidak semua jendela akan kita gunakan, tetapi hanya beberapa yang penting, sedangkan yang lainnya bersifat khusus.

Muhammad Furqan. Q. Ts. TI0801029 7|Page

Sebagaimana dengan proses belajar ini, kita akan fokus pada beberapa jendela yang penting terlebih dahulu sehingga konsentrasi tidak menjadi pecah, dan peserta belajar menjadi bingung. Adapun jendela-jendela yang perlu anda perhatikan adalah sebagai berikut :

Menu Bar, digunakan untuk memilih tugas-tugas tertentu seperti menyimpan project, membuka project, dll Main Toolbar, digunakan untuk melakukan tugas-tugas tertentu dengan cepat. Jendela Project, jendela ini berisi gambaran dari semua modul yang terdapat dalam aplikasi anda. Anda dapat menggunakan icon Toggle Folders untuk menampilkan modul-modul dalam jendela tersebut secara di group

Muhammad Furqan. Q. Ts. TI0801029 8|Page

atau berurut berdasarkan nama. Anda dapat menggunakan Ctrl+R untuk menampilkan jendela project, ataupun menggunakan icon Project Explorer.

Jendela Form Designer, jendela ini merupakan tempat anda untuk merancang user interface dari aplikasi anda. Jadi jendela ini menyerupai kanvas bagi seorang pelukis.

Jendela Toolbox, jendela ini berisi komponen-komponen yang dapat anda gunakan untuk mengembangkan user interface. Jendela Code, merupakan tempat bagi anda untuk menulis koding. Anda dapat menampilkan jendela ini dengan menggunakan kombinasi Shift-F7. Jendela Properties, merupakan daftar properti-properti object yang sedang terpilih. Sebagai contohnya anda dapat mengubah warna tulisan (foreground) dan warna latarbelakang (background). Anda dapat menggunakan F4 untuk menampilkan jendela properti.

Jendela Color Palette, adalah fasilitas cepat untuk mengubah warna suatu object. Jendela Form Layout, akan menunjukan bagaimana form bersangkutan ditampilkan ketika runtime.

BAB III PEMBUATAN APLIKASI PENGOLAHAN CITRA DAN HASIL OUTPUT

Muhammad Furqan. Q. Ts. TI0801029 9|Page

Option Explicit Private Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long Const Sumbu_X = 1000 Const Sumbu_Y = 500 Dim pixels(1 To Sumbu_X, 1 To Sumbu_Y) As Long Dim ImgData() As Long Private Sub Form_Load() Picture1.Top = (Me.ScaleHeight / 2) - (Picture1.ScaleHeight / 2) Picture1.Left = (Me.ScaleWidth / 2) - (Picture1.ScaleWidth / 2) End Sub Private Sub Form_Resize() Picture1.Top = (Me.ScaleHeight / 2) - (Picture1.ScaleHeight / 2) Picture1.Left = (Me.ScaleWidth / 2) - (Picture1.ScaleWidth / 2) End Sub Private Sub mnuFileExit_Click() Unload Me End SubMuhammad Furqan. Q. Ts. TI0801029 10 | P a g e

Muhammad Furqan. Q. Ts. TI0801029 11 | P a g e

Private Sub mnuFileOpen_Click() With CD .Filter = "Picture Files (*.BMP; *.GIF; *.JPG)|*.BMP;*.GIF;*.JPG|Bitmap Files (*.BMP)|*.BMP|GIF Files (*.GIF)|*.GIF|JPEG Files (*.JPG)|*.JPG|All FIles (*.*)|*.*" .DialogTitle = "Masukan File Gambar" .ShowOpen End With Picture1.Picture = LoadPicture(CD.FileName) Form_Resize 'force the picturebox to center itself ReDim ImgData(0 To 2, 0 To Picture1.ScaleWidth, 0 To Picture1.ScaleHeight) As Long Dim i As Long, j As Long Dim R As Long, G As Long, B As Long Dim lngCounter As Long For i = 0 To Picture1.ScaleWidth - 1 For j = 0 To Picture1.ScaleHeight - 1 R = GetRGB(GetPixel(Picture1.hdc, i, j))(2) G = GetRGB(GetPixel(Picture1.hdc, i, j))(1) B = GetRGB(GetPixel(Picture1.hdc, i, j))(0) ImgData(0, i, j) = R ImgData(1, i, j) = GMuhammad Furqan. Q. Ts. TI0801029 12 | P a g e

ImgData(2, i, j) = B lngCounter = lngCounter + 1 If Not (lngCounter Mod 1000) Then DoEvents If (lngCounter > 50000) Then lngCounter = 0 Next j Me.Caption = "Pengolahan Citra Digital - " & Int(i * 100 / (Picture1.ScaleWidth - 1)) & "%" Next i Me.Caption = "Furqan's Computer System 2010 - Pengolahan Citra Digital" End Sub

Private Sub mnuEffectsSmooth_Click() Dim i As Long, j As Long Dim R As Long, G As Integer, B As Integer Dim p1 As Long, p2 As Long, p3 As Long, p4 As Long, p5 As Long '9x9 grid Dim p6 As Long, p7 As Long, p8 As Long, p9 As Long Picture1.Refresh For i = 1 To Picture1.ScaleWidth - 2 For j = 1 To Picture1.ScaleHeight - 2 R = ImgData(0, i - 1, j - 1) + ImgData(0, i, j - 1) + ImgData(0, i + 1, j - 1) + ImgData(0, i - 1, j) + _Muhammad Furqan. Q. Ts. TI0801029 13 | P a g e

ImgData(0, i, j) + ImgData(0, i + 1, j) + ImgData(0, i - 1, j + 1) + ImgData(0, i, j + 1) + _ ImgData(0, i + 1, j + 1) G = ImgData(1, i - 1, j - 1) + ImgData(1, i, j - 1) + ImgData(1, i + 1, j - 1) + ImgData(1, i - 1, j) + _ ImgData(1, i, j) + ImgData(1, i + 1, j) + ImgData(1, i - 1, j + 1) + ImgData(1, i, j + 1) + _ ImgData(1, i + 1, j + 1) B = ImgData(2, i - 1, j - 1) + ImgData(2, i, j - 1) + ImgData(2, i + 1, j - 1) + ImgData(2, i - 1, j) + _ ImgData(2, i, j) + ImgData(2, i + 1, j) + ImgData(2, i - 1, j + 1) + ImgData(2, i, j + 1) + _ ImgData(2, i + 1, j + 1) SetPixelV Picture1.hdc, i, j, RGB(R / 9, G / 9, B / 9) Next j Picture1.Refresh Next i End Sub

Private Sub mnuEffectsSharpen_Click()Muhammad Furqan. Q. Ts. TI0801029 14 | P a g e

Dim i As Long, j As Long Dim R As Integer, G As Integer, B As Integer Picture1.Refresh For i = 1 To Picture1.ScaleWidth - 1 For j = 1 To Picture1.ScaleHeight - 1 R = ImgData(0, i, j) + 0.5 * (ImgData(0, i, j) - ImgData(0, i - 1, j - 1)) G = ImgData(1, i, j) + 0.5 * (ImgData(1, i, j) - ImgData(1, i - 1, j - 1)) B = ImgData(2, i, j) + 0.5 * (ImgData(2, i, j) - ImgData(2, i - 1, j - 1)) If (R > 255) Then R = 255 If (G > 255) Then G = 255 If (R > 255) Then B = 255 If (R < 0) Then R = 0 If (G < 0) Then G = 0 If (B < 0) Then B = 0 SetPixelV Picture1.hdc, i, j, RGB(R, G, B) Next j Picture1.Refresh Next i End Sub

Private Sub mnuEffectsSolarize_Click() Dim i As Long, j As LongMuhammad Furqan. Q. Ts. TI0801029 15 | P a g e

Dim R As Integer, G As Integer, B As Integer Dim pixel As Long Picture1.Refresh For i = 0 To Picture1.ScaleWidth - 1 For j = 0 To Picture1.ScaleHeight - 1 pixel = GetPixel(Picture1.hdc, i, j) R = ImgData(0, i, j) G = ImgData(1, i, j) B = ImgData(2, i, j) If (R < 128) Then R = 255 - R If (G < 128) Then G = 255 - G If (B < 128) Then B = 255 - B SetPixelV Picture1.hdc, i, j, RGB(R, G, B) Next j Picture1.Refresh Next i End Sub

Private Sub mnuEffectsEmboss_Click() Dim i As Long, j As Long Dim R As Integer, G As Integer, B As Integer Picture1.Refresh For i = 0 To Picture1.ScaleWidth - 1Muhammad Furqan. Q. Ts. TI0801029 16 | P a g e

For j = 0 To Picture1.ScaleHeight - 1 R = Abs(ImgData(0, i, j) - ImgData(0, i + 1, j + 1) + 128) G = Abs(ImgData(1, i, j) - ImgData(1, i + 1, j + 1) + 128) B = Abs(ImgData(2, i, j) - ImgData(2, i + 1, j + 1) + 128) If (R > 255) Then R = 255 If (G > 255) Then G = 255 If (R > 255) Then B = 255 If (R < 0) Then R = 0 If (G < 0) Then G = 0 If (B < 0) Then B = 0 SetPixelV Picture1.hdc, i, j, RGB(R, G, B) Next j Picture1.Refresh Next i End Sub

Private Sub mnuEffectsRipple_Click() Dim i As Long, j As Long Dim Temp As Long Dim RippleVal As String Dim Ripples() As Long Dim width As Long Picture1.RefreshMuhammad Furqan. Q. Ts. TI0801029 17 | P a g e

width = Picture1.ScaleWidth ReDim Ripples(1 To width) RippleVal = InputBox("Masukan Intensitas Ripple", "Ripple Effect", "2") For i = 1 To width Temp = i + Sin(i / Val(RippleVal)) * Val(RippleVal) If Temp > width Then Ripples(i) = width ElseIf Temp < 1 Then Ripples(i) = 1 Else Ripples(i) = Temp End If Next i Dim rip As Long, R As Integer, G As Integer, B As Integer For i = 1 To Picture1.ScaleWidth For j = 1 To Picture1.ScaleHeight rip = RGB(ImgData(0, Ripples(i), j), ImgData(1, Ripples(i), j), ImgData(2, Ripples(i), j)) R = GetRGB(rip)(2): G = GetRGB(rip)(1): B = GetRGB(rip)(0) SetPixelV Picture1.hdc, i, j, rip Next j Picture1.Refresh Next i End Sub

Muhammad Furqan. Q. Ts. TI0801029 18 | P a g e

Private Sub mnuEffectsGrayScale_Click()Muhammad Furqan. Q. Ts. TI0801029 19 | P a g e

Dim i As Long, j As Long Dim R As Integer, G As Integer, B As Integer Dim pixel As Long, hhr As Long Picture1.Refresh For i = 0 To Picture1.ScaleWidth For j = 0 To Picture1.ScaleHeight R = ImgData(0, i, j) G = ImgData(1, i, j) B = ImgData(2, i, j) hhr = ((R + G + B) / 3) If (hhr > 255) Then hhr = 255 If (hhr < 0) Then hhr = 0 SetPixelV Picture1.hdc, i, j, RGB(hhr, hhr, hhr) Next j Picture1.Refresh Next i End Sub

Private Sub mnuEffectsInvert_Click() Dim i As Long, j As Long Dim R As Integer, G As Integer, B As Integer Dim pixel As Long Picture1.Refresh For i = 0 To Picture1.ScaleWidth - 1Muhammad Furqan. Q. Ts. TI0801029 20 | P a g e

For j = 0 To Picture1.ScaleHeight - 1 pixel = GetPixel(Picture1.hdc, i, j) R = ImgData(0, i, j) G = ImgData(1, i, j) B = ImgData(2, i, j) R = 255 - R G = 255 - G B = 255 - B SetPixelV Picture1.hdc, i, j, RGB(R, G, B) Next j Picture1.Refresh Next i End Sub

Private Sub mnuEffectsWhiteEdges1_Click() Dim i As Long, j As Long Dim R As Integer, G As Integer, B As Integer Picture1.Refresh For i = 1 To Picture1.ScaleWidth - 1 For j = 1 To Picture1.ScaleHeight - 1 R = Abs((-2 * ImgData(0, i, j)) + ImgData(0, i - 1, j) + ImgData(0, i + 1, j)) G = Abs((-2 * ImgData(1, i, j)) + ImgData(1, i - 1, j) + ImgData(1, i + 1, j)) B = Abs((-2 * ImgData(2, i, j)) + ImgData(2, i - 1, j) + ImgData(2, i + 1, j))Muhammad Furqan. Q. Ts. TI0801029 21 | P a g e

SetPixelV Picture1.hdc, i, j, RGB(R, G, B) Next j Picture1.Refresh Next i End Sub

Private Sub mnuEffectsWhiteEdges2_Click() Dim i As Long, j As Long Dim R As Integer, G As Integer, B As Integer Picture1.Refresh For i = 1 To Picture1.ScaleWidth - 1 For j = 1 To Picture1.ScaleHeight - 1 R = Abs((-1 * ImgData(0, i - 1, j)) + (4 * ImgData(0, i, j)) + (-1 * ImgData(0, i + 1, j)) + (-1 * ImgData(0, i, j - 1)) + (-1 * ImgData(0, i, j + 1))) G = Abs((-1 * ImgData(1, i - 1, j)) + (4 * ImgData(1, i, j)) + (-1 * ImgData(1, i + 1, j)) + (-1 * ImgData(1, i, j - 1)) + (-1 * ImgData(1, i, j + 1))) B = Abs((-1 * ImgData(2, i - 1, j)) + (4 * ImgData(2, i, j)) + (-1 * ImgData(2, i + 1, j)) + (-1 * ImgData(2, i, j - 1)) + (-1 * ImgData(2, i, j + 1))) SetPixelV Picture1.hdc, i, j, RGB(R, G, B) Next j Picture1.Refresh Next i End SubMuhammad Furqan. Q. Ts. TI0801029 22 | P a g e

Private Sub mnuEffectsSobelX_Click() Dim i As Long, j As Long Dim R As Integer, G As Integer, B As Integer Picture1.Refresh For i = 1 To Picture1.ScaleWidth - 1 For j = 1 To Picture1.ScaleHeight - 1 R = Abs((-1 * ImgData(0, i - 1, j - 1)) + (-2 * ImgData(0, i - 1, j)) + (-1 * ImgData(0, i - 1, j + 1)) + _ ImgData(0, i + 1, j - 1) + (2 * ImgData(0, i + 1, j)) + ImgData(0, i + 1, j + 1)) G = Abs((-1 * ImgData(1, i - 1, j - 1)) + (-2 * ImgData(1, i - 1, j)) + (-1 * ImgData(1, i - 1, j + 1)) + _ ImgData(1, i + 1, j - 1) + (2 * ImgData(1, i + 1, j)) + ImgData(1, i + 1, j + 1)) B = Abs((-1 * ImgData(2, i - 1, j - 1)) + (-2 * ImgData(2, i - 1, j)) + (-1 * ImgData(2, i - 1, j + 1)) + _ ImgData(2, i + 1, j - 1) + (2 * ImgData(2, i + 1, j)) + ImgData(2, i + 1, j + 1)) R = 255 - R G = 255 - G B = 255 - B If (R > 255) Then R = 255 If (G > 255) Then G = 255Muhammad Furqan. Q. Ts. TI0801029 23 | P a g e

If (R > 255) Then B = 255 If (R < 0) Then R = 0 If (G < 0) Then G = 0 If (B < 0) Then B = 0 SetPixelV Picture1.hdc, i, j, RGB(R, G, B) Next j Picture1.Refresh Next i End Sub

Private Sub mnuEffectsSobelY_Click() Dim i As Long, j As Long Dim R As Integer, G As Integer, B As Integer Picture1.Refresh For i = 1 To Picture1.ScaleWidth - 1 For j = 1 To Picture1.ScaleHeight - 1 R = Abs(ImgData(0, i - 1, j - 1) + (2 * ImgData(0, i, j - 1)) + ImgData(0, i + 1, j - 1) + (-1 * ImgData(0, i - 1, j + 1)) + _ (-2 * ImgData(0, i, j + 1)) + (-1 * ImgData(0, i + 1, j + 1))) G = Abs(ImgData(1, i - 1, j - 1) + (2 * ImgData(1, i, j - 1)) + ImgData(1, i + 1, j - 1) + (-1 * ImgData(1, i - 1, j + 1)) + _ (-2 * ImgData(1, i, j + 1)) + (-1 * ImgData(1, i + 1, j + 1)))Muhammad Furqan. Q. Ts. TI0801029 24 | P a g e

B = Abs(ImgData(2, i - 1, j - 1) + (2 * ImgData(2, i, j - 1)) + ImgData(2, i + 1, j - 1) + (-1 * ImgData(2, i - 1, j + 1)) + _ (-2 * ImgData(2, i, j + 1)) + (-1 * ImgData(2, i + 1, j + 1))) R = 255 - R G = 255 - G B = 255 - B If (R > 255) Then R = 255 If (G > 255) Then G = 255 If (R > 255) Then B = 255 If (R < 0) Then R = 0 If (G < 0) Then G = 0 If (B < 0) Then B = 0 SetPixelV Picture1.hdc, i, j, RGB(R, G, B) Next j Picture1.Refresh Next i End Sub

Private Sub mnuEffectsLapLace_Click() Dim i As Long, j As LongMuhammad Furqan. Q. Ts. TI0801029 25 | P a g e

Dim R As Integer, G As Integer, B As Integer Picture1.Refresh For i = 2 To Picture1.ScaleWidth - 2 For j = 2 To Picture1.ScaleHeight - 2 R = Abs((-1 * ImgData(0, i - 2, j - 2)) + (-1 * ImgData(0, i - 1, j - 2)) + (-1 * ImgData(0, i, j - 2)) + _ (-1 * ImgData(0, i + 1, j - 2)) + (-1 * ImgData(0, i + 2, j - 2)) + _ (-1 * ImgData(0, i - 2, j - 1)) + (-1 * ImgData(0, i - 1, j - 1)) + (-1 * ImgData(0, i, j - 1)) + _ (-1 * ImgData(0, i + 1, j - 1)) + (-1 * ImgData(0, i + 2, j - 1) + _ (-1 * ImgData(0, i - 2, j)) + (-1 * ImgData(0, i - 1, j)) + (24 * ImgData(0, i, j)) +_ (-1 * ImgData(0, i + 1, j)) + (-1 * ImgData(0, i + 2, j)) + _ (-1 * ImgData(0, i - 2, j + 1)) + (-1 * ImgData(0, i - 1, j + 1)) + ImgData(0, i, j + 1)) + _ (-1 * ImgData(0, i + 1, j + 1)) + (-1 * ImgData(0, i + 2, j + 1)) + _ (-1 * ImgData(0, i - 2, j + 2)) + (-1 * ImgData(0, i - 1, j + 2)) + (-1 * ImgData(0, i, j + 2)) + _ (-1 * ImgData(0, i + 1, j + 2)) + (-1 * ImgData(0, i + 2, j + 2))) G = Abs((-1 * ImgData(1, i - 2, j - 2)) + (-1 * ImgData(1, i - 1, j - 2)) + (-1 * ImgData(1, i, j - 2)) + _ (-1 * ImgData(1, i + 1, j - 2)) + (-1 * ImgData(1, i + 2, j - 2)) + _ (-1 * ImgData(1, i - 2, j - 1)) + (-1 * ImgData(1, i - 1, j - 1)) + (-1 * ImgData(1, i, j - 1)) + _ (-1 * ImgData(1, i + 1, j - 1)) + (-1 * ImgData(1, i + 2, j - 1) + _ (-1 * ImgData(1, i - 2, j)) + (-1 * ImgData(1, i - 1, j)) + (24 * ImgData(1, i, j)) +_ (-1 * ImgData(1, i + 1, j)) + (-1 * ImgData(1, i + 2, j)) + _ (-1 * ImgData(1, i - 2, j + 1)) + (-1 * ImgData(1, i - 1, j + 1)) + ImgData(1, i, j + 1)) + _ (-1 * ImgData(1, i + 1, j + 1)) + (-1 * ImgData(1, i + 2, j + 1)) + _ (-1 * ImgData(1, i - 2, j + 2)) + (-1 * ImgData(1, i - 1, j + 2)) + (-1 * ImgData(1, i, j + 2)) + _ (-1 * ImgData(1, i + 1, j + 2)) + (-1 * ImgData(1, i + 2, j + 2))) B = Abs((-1 * ImgData(2, i - 2, j - 2)) + (-1 * ImgData(2, i - 1, j - 2)) + (-1 * ImgData(2, i, j - 2)) + _ (-1 * ImgData(2, i + 1, j - 2)) + (-1 * ImgData(2, i + 2, j - 2)) + _ (-1 * ImgData(2, i - 2, j - 1)) + (-1 * ImgData(2, i - 1, j - 1)) + (-1 * ImgData(2, i, j - 1)) + _ (-1 * ImgData(2, i + 1, j - 1)) + (-1 * ImgData(2, i + 2, j - 1) + _ (-1 * ImgData(2, i - 2, j)) + (-1 * ImgData(2, i - 1, j)) + (24 * ImgData(2, i, j)) +_ (-1 * ImgData(2, i + 1, j)) + (-1 * ImgData(2, i + 2, j)) + _ (-1 * ImgData(2, i - 2, j + 1)) + (-1 * ImgData(2, i - 1, j + 1)) + ImgData(2, i, j + 1)) + _ (-1 * ImgData(2, i + 1, j + 1)) + (-1 * ImgData(2, i + 2, j + 1)) + _Muhammad Furqan. Q. Ts. TI0801029 26 | P a g e

(-1 * ImgData(2, i - 2, j + 2)) + (-1 * ImgData(2, i - 1, j + 2)) + (-1 * ImgData(2, i, j + 2)) + _ (-1 * ImgData(2, i + 1, j + 2)) + (-1 * ImgData(2, i + 2, j + 2))) SetPixelV Picture1.hdc, i, j, RGB(R, G, B) Next j Picture1.Refresh Next i End Sub

Private Sub mnuDark_Click() Dim X As Integer, Y As Integer, addon As Integer addon = 5 Dim R As Integer, G As Integer, B As Integer For X = 1 To Sumbu_X For Y = 1 To Sumbu_Y pixels(X, Y) = Picture1.Point(X, Y) Next Y Next X For X = 1 To Sumbu_X For Y = 1 To Sumbu_Y R = pixels(X, Y) And &HFF G = ((pixels(X, Y) And &HFF00) / &H100) Mod &H100 B = ((pixels(X, Y) And &HFF0000) / &H10000) Mod &H100Muhammad Furqan. Q. Ts. TI0801029 27 | P a g e

R = R - addon If R < 0 Then R = 0 G = G - addon If G < 0 Then G = 0 B = B - addon If B < 0 Then B = 0 pixels(X, Y) = RGB(R, G, B) Next Y Next X For X = 1 To Sumbu_X For Y = 1 To Sumbu_Y Picture1.PSet (X, Y), pixels(X, Y) Next Y Picture1.Refresh Next X End Sub

Private Sub mnuBright_Click() Dim X As Integer, Y As Integer, addon As Integer addon = 5 Dim R As Integer, G As Integer, B As IntegerMuhammad Furqan. Q. Ts. TI0801029 28 | P a g e

For X = 1 To Sumbu_X For Y = 1 To Sumbu_Y pixels(X, Y) = Picture1.Point(X, Y) Next Y Next X For X = 1 To Sumbu_X For Y = 1 To Sumbu_Y R = pixels(X, Y) And &HFF G = ((pixels(X, Y) And &HFF00) / &H100) Mod &H100 B = ((pixels(X, Y) And &HFF0000) / &H10000) Mod &H100 R = R + addon If R > 255 Then R = 255 G = G + addon If G > 255 Then G = 255 B = B + addon If B > 255 Then B = 255 pixels(X, Y) = RGB(R, G, B) Next Y Next X For X = 1 To Sumbu_X For Y = 1 To Sumbu_Y Picture1.PSet (X, Y), pixels(X, Y) Next Y Picture1.Refresh Next X End Sub

Muhammad Furqan. Q. Ts. TI0801029 29 | P a g e