Jumat, 01 Juli 2011

TUGAS PENGGOLAHAN CITRA 3

DETEKSI TEPI


1. Pendeteksiaan gambar dengan operator Robert menggunakan visual basic

· Buka terlebih dahulu visual basic Anda masing-masing kemudian buatlah sebuah form yang berisikan tool-tool berikut ini :

TOOL

PROPERTIES

Picture1

Nama : pic1

Picture : beri foto kita

Scale mode : pixel

Picture2

Nama : pic2

Scale mode : pixel

Label1

Caption : Original

Label2

Caption : Hasil

Button1

Caption : Deteksi tepi

· Sehingga tampilan formnya menjadi seperti gambar di bawah ini


· Tuliskan source code deklarasi dan prosedur pada menu general

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

Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long

Dim R As Integer, G As Integer, B As Integer

Dim GradX As Long, GradY As Long, Grad As Long

Dim PixelValue As Long

Sub DecTORGB(ByVal Col As Long, R As Integer, G As Integer, B As Integer)

R = Col Mod 256

G = ((Col - R) Mod 65536) / 256

B = (Col - R - G) / 65536

If R < 0 Then R = 0: If R >= 255 Then R = 255

If G < 0 Then G = 0: If G >= 255 Then G = 255

If B < 0 Then B = 0: If B >= 255 Then B = 255

End Sub

· Berikut ini source code perintah operator Robert yang di tuliskan pada button1

Dim Op_X(-1 To 0, -1 To 0) As Integer, Op_Y(-1 To 0, -1 To 0) As Integer

Dim X As Integer, Y As Integer, I As Integer, J As Integer

Pic2.Cls

Grad = 0

Op_X(-1, -1) = 1: Op_X(0, -1) = 0

Op_X(-1, 0) = 0: Op_X(0, 0) = -1

Op_Y(-1, -1) = 0: Op_Y(0, -1) = -1

Op_Y(-1, 0) = 1: Op_Y(0, 0) = 0

For Y = 0 To Pic1.Height - 1

For X = 0 To Pic1.Width - 1

GradX = 0: GradY = 0: Grad = 0

If X = 0 Or Y = 0 Or X = Pic1.Width - 1 Or Y = Pic1.Height - 1 Then

Grad = 0

Else

For I = -1 To 0

For J = -1 To 0

PixelValue = GetPixel(Pic1.hdc, X + I, Y + J) //dapatkan pixel dari posisi x + i dan y + j

DecTORGB PixelValue, R, G, B //fungsi proses mendapatkan nilai RGB

Itensity = (R + G + B) / 3 //Itensitas / B & W

GradX = GradX + (Itensity * Op_X(I, J))

GradY = GradY + (Itensity * Op_Y(I, J))

Next J

Next I

Grad = Round(Sqr(Abs(GradX * GradX) + Abs(GradY * GradY)))

End If

If Grad <= 0 Then Grad = 0: If Grad >= 255 Then Grad = 255

SetPixel Pic2.hdc, X, Y, RGB(Grad, Grad, Grad)

Pic2.Refresh

Next X

Pic2.Refresh

Next Y

End Sub

· Contoh tampilan hasil deteksi gambar dengan operator Robert menggunakan visual basic

Contoh tampilan hasil deteksi gambar


SELAMAT MENCOBA





Kamis, 30 Juni 2011

TUGAS PENGGOLAHAN CITRA 2

Brightness


Brightness adalah nilai kecerahan suatu pixel dalam suatu citra, yang menunjukan tingkat kecerahan dari hitam sampai putih. Tingkat kecerahan ini biasanya dinilai dari 0 (hitam) dan 255 (putih). Berikut ini saya postingkan langkah-langkah membuat aplikasi brightness dengan visual basic.
1. Buat form VB terlebih dahulu
2. Tambahkan components Microsoft windows common controls 6.0

3. Masukan tool-tool berikut ke dalam form

TOOL
PROPERTIES
Frame
Caption : Input
Frame
Caption : Output
Picturebox
Name : picInput
Picture : foto kita sendiri
Picturebox
Name : picOutput
Slider
Name : sldLevel

tampilan form

4. Add modules dan tuliskan source code di bawah ini di dalamnya
Public Function getBrightness(cl As Long, level As Integer) As Long
//mencari nilai brightness di dalam gambar
' cl = Color wich will be brightened
' level = Brightness (between -255 and 255)

Dim r As Integer, g As Integer, b As Integer
//mencari nilai RGB
r = getRed(cl) + level
g = getGreen(cl) + level
b = getBlue(cl) + level
If r > 255 Then r = 255
If g > 255 Then g = 255
If b > 255 Then b = 255
If r < 0 Then r = 0
If g < 0 Then g = 0
If b < 0 Then b = 0
getBrightness = RGB(r, g, b)
End Function

Private Function getRed(color As Long)
//mencari nilai warna merah di dalam variable warna gambar
getRed = color And &HFF&
End Function

Private Function getGreen(color As Long)
//mencari nilai warna hijau di dalam variable warna gambar
getGreen = (color And &HFF00&) / &H100&
End Function

Private Function getBlue(color As Long)
//mencari nilai warna biru di dalam variable warna gambar
getBlue = (color And &HFF0000) / &H10000
End Function

5. Tuliskan deklarasi di bawah ini pada form1
Option Explicit
Private Declare Function SetPixel 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
Private m_blnAppExit As Boolean


6. Tuliskan source code perintah di bawah ini pada sldLevel
Private Sub sldLevel_Click()
m_blnAppExit = False
Dim x As Integer, y As Integer, intWidth As Integer, _
intHeight As Integer
//memperoleh panjang dan lebar gambar
intWidth = picInput.Width / Screen.TwipsPerPixelX - 3
intHeight = picInput.Height / Screen.TwipsPerPixelY - 2
picOutput.Picture = LoadPicture()
picOutput.Cls
//memperoleh setiap pixel di dalam gambar
For y = 0 To intHeight Step 1
For x = 0 To intWidth Step 1
'Get BrightValue for this pixel and (re)paint it
SetPixel _
picOutput.hdc, _
x, _
y, _
modules.getBrightness( _
GetPixel(picInput.hdc, x, y), _
sldLevel.Value)
Next
picOutput.Refresh
Next
//refresh picOutput
picOutput.Refresh
DoEvents
m_blnAppExit = True
End Sub

7. Dan hasilnya……
8. Hasilnya…………………

nilai brightness bertambah berdasarkan penambahan/pengurangan nilai level kecerahan pada setiap pixel.

SELAMAT MENCOBA

Jumat, 17 Juni 2011

TUGAS PENGGOLAHAN CITRA 1





TUGAS MENAMPILKAN GAMBAR DAN HISTOGRAM



Private Sub Form_Load()
Drive1.Drive = "d:\"
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

Private Sub File1_Click()
On Error GoTo Pesan
Picture1.Picture = LoadPicture(Dir1.Path & "\" & File1.FileName)
Pesan:
If Err.Number = 481 Then
MsgBox "Gambar tidak bisa tampil", vbOKOnly, "PERINGATAN"
End If
End Sub

Private Sub Command1_Click()
Dim hr(256) As Integer, hg(256) As Integer, hb(256) As Integer
Dim ht2 As Long
Dim xp As Integer, i As Integer, j As Integer
Dim r As Integer, g As Integer, b As Integer
Dim warna As Long, X As Long, a As Long
Picture2.Cls
Picture3.Cls
Picture4.Cls
Me.MousePointer = vbHourglass
For i = 1 To 256
hr(i) = 0
hg(i) = 0
hb(i) = 0
Next
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)
If r > 255 Then r = 255
If g > 255 Then g = 255
If b > 255 Then b = 255
hr(r) = hr(r) + 1
hg(g) = hg(g) + 1
hb(b) = hb(b) + 1
Next j
Next i
ht2 = Picture2.Height
For i = 1 To 256
xp = 15 * (i - 1) + 1
Picture2.Line (xp, ht2 - hr(i))-(xp, ht2), RGB(255, 0, 0)
Picture3.Line (xp, ht2 - hg(i))-(xp, ht2), RGB(0, 255, 0)
Picture4.Line (xp, ht2 - hb(i))-(xp, ht2), RGB(0, 0, 255)
Next i
Me.MousePointer = vbNormal
End Sub

Private Sub Command2_Click()
Unload Me
End Sub