Anda di halaman 1dari 29

BAB I

DASAR TEORI

I. Citra
Citra = gambar = image
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 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 alat
Muhammad 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 bintik-bintik 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 noise
c) 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 untuk
Muhammad 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 image

Muhammad 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 pixel-
pixel 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 pembagi
Muhammad 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 pixel-


pixel 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) dan
kontras (contrast) dari sebuah citra.

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 atau berurut berdasarkan nama. Anda dapat menggunakan Ctrl+R

Muhammad Furqan. Q. Ts. – TI0801029


8|Page
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 Sub
Muhammad 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) = G
Muhammad 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 Long

Muhammad 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 - 1

Muhammad 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.Refresh
Muhammad 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 - 1

Muhammad 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 Sub

Muhammad 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 = 255
Muhammad 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 Long

Muhammad 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 &H100

Muhammad 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 Integer

Muhammad 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

Anda mungkin juga menyukai