Program Peningkatan Kecerahan (Brightness) Menggunakan Hscroll Dengan Brightness Positif 127 dan Negatif -127 (Bahasa Pemograman : Visual Basic 6.0 dan Visual Basic Net)

in #programming7 years ago

Halo sahabat Steemian!!! Selamat malam dan apa kabar bagi kalian semua yang berada di Indonesia? Terima kasih bagi kalian yang menyempatkan waktu untuk membaca dan meng-up vote postinganku ini. Nah dalam postingan kali ini aku akan mencoba membahas mengenai Pengolahan Citra Digital. Dalam bidang Teknik Informatika, pengolahan citra digital merupakan salah satu metode pembelajarn yang wajib untuk dikuasai.  

Pengolahan Citra Digital yang merupakan suatu proses yang bertujuan untuk memanipulasi dan menganalisis sebuah citra dengan menggunakan aplikasi pemograman berbentuk GUI yaitu Microsoft Visual Basic 6.0 dan juga Matlab. Namun kegunaan dari pengolahan citra digital ini adalah untuk mengakuisisi citra, meningkatkan kualitas citra, segmentasi citra, dan merepresentasikannya. Jadi langsung saja aku akan mencoba melakukan beberapa percobaan dalam perbaikkan citra sebagai berikut. 

Percobaan

Brightness Menggunakan Visual Basic 6.0 

  1. Buatlah project baru dengan menekan CTRL+N dan atur form tersebut, lalu klik pada objek picture maka akan dengan sendirinya propertise pada picture akan keluar dan browserlah foto pada laptop kalian seperti pada gambar dibawah ini :
  2. Mengisi property pada setiap objek dan form sebagai berikut :
  3. Klik 2 kali tombol Brightness dan isikan source code ini :
  4. Lalu klik 2 kali pada tombol Histogram dan isikan source code ini :
  5. Pada tombol Keluar isikan juga source code ini sebagai penutup :
  6. Lalu setelah semua source codenya telah ditulis, selanjutlan run program ini dan akan menghasilkan output sebagai berikut :

Pada percobaan pertama telah selesai aku kerjakan dan dapat kalian lihat output pada percobaan pertama tersebut. Sekarang aku akan mencoba membuat program kedua yaitu Program Brightness Menggunakan Hscroll dengan brightness positif dan negatif dan dengan min -127, max 127 (VB 6.0 dan VB Net).

  1. Source code program Brightness menggunakan Visual Basic 6.0 :
  2. Kemudian run dan akan tampil Output Brightness negatif :
  3. Output Brightness positif :

Pada program selanjutnya akan meggunakan Visual Basic NET, nah program kali ini akan sedikit berbeda dari sebelumnya. Aku telah menulis programnya seperti berikut ini :

  1. Source code program Brightness menggunakan VB Net :
  2. Kemudian run program tersebut dan akan tampil output Brightness negatif :

Perbedaan Kondisi Positif dan Negatif 

Kondisi Brightness Positif merupakan kondisi dimana jika nilai penguat brightness adalah angka positif karena akan menghasilkan nilai citra baru yang lebih mendekati 255, maka kecerahan citra bertambah menjadi lebih cerah contoh seperti pada output gambar brightness positif. Sedangkan kondisi Brightness Negatif yaitu nilai penguat brightness merupakan angka negatif dan kecerahan citra akan berkurang sehingga gambar menjadi lebih gelapnegatif karena akan menghasilkan nilai citra baru yang lebih mendekati 0, contoh seperti pada gambar brightness negatif.

Menganalisis Perprogram 

Dalam menciptakan suatu program dibutuhkan keahlian dalam berfikir, serta logika yang kuat agar mampu menciptakan algoritma yang akan dituangkan menjadi sebuah program seperti pada percobaan yang telah aku kerjakan ini. Bukan hanya itu, setiap program yang telah diciptakan tentunya terlebih dahulu harus melewati langkah pengujian seperti menganalisa program ini. Aku mencoba menganalisa setiap baris program yang telah aku tulis agar orang yang membacanya memahami maksud dan tujuan dari program ini dan mengerti setiap baris program yang aku tulis ini diperuntukan sebagai apa. Berikut aku membuat daftar list analisa perprogram yang telah aku tulis :

Menganalisa Program Brightness Pada Program Visual Basic 6.0

List Program pada Command1 (Brightness) 

  • Private Sub Command1_Click() //Pendeklarasian sub method Command1_Click dengan modified private, method ini memberikan aksi ketika button command1 di klik · 
  • Picture2.Cls //Untuk mengosongkan Form
  • bg = Val(HScroll1) //Nilai yang didapatkan dari HScroll1.  
  • For i = 1 To Picture1.Width Step 15 // Perulangan matrix untuk lebar gambar, yaitu dimulai dari index 1 sampai lebar Picture 1
  • For j = 1 To Picture1.Height Step 15 // Perulangan matrix untuk lebar gambar, yaitu dimulai dari index 1 sampai tinggi Picture 1
  • warna = Picture1.Point(i, j) // Untuk mengambil setiap titik pixel matrix yang ada pada gambar
  • R = warna And RGB(255, 0, 0) // Untuk mengambil nilai warna merah dari satu titik pixel matrix
  • g = Int((warna And RGB(0, 255, 0)) / 256) // Untuk mengambil nilai warna hijau dari satu titik pixel matrix
  • b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256) // Untuk mengambil nilai warna biru dari satu titik pixel matrix
  • x = (R + g + b) / 3 // Untuk melakukan konversi dengan mengambil rata-rata dari nilai r, g, dan b, sehingga menghasilkan nilai x sebagai nilai grey-scale nya.
  • xb = x + bg //Rumus untuk brightness dimana nilai x atau grayscale ditambah dengan nilai dari variabel bg atau nilai yang didapatkan dari HScroll akan dimasukkan ke variable xb.
  • Picture1.PSet (i, j), RGB(x, x, x) // Memberikan nilai gray-scale(x) pada setiap pixel rgb di picture1
  • Picture2.PSet (i, j), RGB(xb, xb, xb) // Memberikan nilai brightness(xb) pada setiap pixel rgb di picture2
  • Next j // Mengakhiri perulangan matrix untuk tinggi gambar
  • Next i // Mengakhiri perulangan matrix untuk lebar gambar
  • End Sub // Mengakhiri sub method Command1_Click

List Program pada Command2 (Histogram)

  • Private Sub Command2_Click() // Pendeklarasian sub method Command2_Click dengan modified private, method ini memberikan aksi ketika button command2 di klik
  • Picture3.Cls // Untuk mengosongkan Form
  • Picture4.Cls // Untuk mengosongkan Form
  • Dim h(256), h1(256) As Integer // Mendeklarasikan h dan h1 yang bernilai 256 sebagai integer
  • For i = 1 To 256 // perulangan pada i yang bernilai 1 sampai 256
  • h(i) = 0: h1(i) = 0 // nilai yang di peroleh oleh h yaitu dari 0 dibagikan h1 array i sama dengan 0
  • Next i // Mengakhiri perulangan
  • For i = 1 To Picture1.Width Step 15 //Perulangan matrix untuk lebar gambar, yaitu dimulai dari index 1 sampai lebar pada Picture1
  • For j = 1 To Picture1.Height Step 15 //Perulangan matrix untuk lebar gambar, yaitu dimulai dari index 1 sampai tinggipada Picture1 · warna = Picture1.Point(i, j) //Untuk mengambil setiap titik pixel matrix yang ada pada gambar
  • R = warna And RGB(255, 0, 0) //warna dan nilai RGB (255,0,0) akan dimasukkan pada variable r yang menjadi warna Red pada RGB.
  • g = Int((warna And RGB(0, 255, 0)) / 256) //nilai g adalah integer yang memiliki penjumlahan dari warna dan nilai RGB pada Green
  • b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256) //nilai g adalah integer yang memiliki penjumlahan dari warna dan nilai RGB pada Blue
  • x = (R + g + b) / 3 //rumus untuk mencari nilai grayscale yaitu x R+g+b setelah itu baru dibagi 3 akan dimasukkan ke variable x.
  • h(x + 1) = h(x + 1) + 1 //untuk mencari nilai dari array yaitu dengan menambahkan dengan 1 dari hasil perkalian h (x+1) dan di masukkan ke h(x+1).
  • Next j //Mengakhiri perulangan matrix untuk tinggi gambar
  • Next i //Mengakhiri perulangan matrix untuk lebar gambar
  • Picture3.Line (0, ht2)-(wp3, ht2), RGB(0, 0, 255) //Menggambarkan grafik histogram pada layar pada picturebox3
  • Picture4.Line (0, ht2)-(wp4, ht2), RGB(0, 0, 255) //Menggambarkan grafik histogram pada layar pada picturebox4
  • For i = 1 To 256 //perulangan pada nilai array
  • xp = 15 * (i - 1) + 1 //rumus untuk mencari nilai yang akan ditampilan pada Picture2 atau pada histogram yang dimasukkan ke variable xp 
  • Picture3.Line (0, ht2)-(wp3, ht2), RGB(0, 0, 255) //Menggambarkan grafik histogram pada layar pada picturebox3
  • Picture4.Line (0, ht2)-(wp4, ht2), RGB(0, 0, 255) //Menggambarkan grafik histogram pada layar pada picturebox4
  • End Sub // Mengakhiri sub method Command2_Click
  • Private Sub HScroll1_Change() // Pendeklarasian sub method HScroll1_Change dengan modified private, method ini memberikan aksi ketika Scroll digeser
  • Label1.Caption = HScroll1.Value // Menampilkan nilai dari Scroll jika scrol bergeser dan ditampilkan di label1  

List Program pada Command3 (Keluar)  

  • Private Sub Command3_Click()//Pendeklarasian sub method Command3_Click dengan modified private, method ini memberikan aksi ketika button command2 di klik
  • End ‘Fungsi untuk mengakhiri program
  • End Sub ‘Mengakhiri sub method Command3_Click  

Analisa Program Latihan Brightness Menggunakan Visual Studio (VB.Net)

List Program pada Form1 

  • Public h1(0 To 255) As Integer // Mendeklarasikan h1 yang bernilai 0 sampai 255 sebagai integer.
  • Public h2(0 To 255) As Integer // Mendeklarasikan h2 yang bernilai 0 sampai 255 sebagai integer.
  • Dim hmaxg1 As Integer // Mendeklarasikan hmaxg1 sebagai integer
  • Dim hmaxg2 As Integer // Mendeklarasikan hmaxg2 sebagai integer 

List Program pada Button1 (Brightness)

  • Dim x, xb As Integer // Mendeklarasikan x, xb sebagai integer
  • Dim gambar1 As New Bitmap(PictureBox1.Image) // Mendeklarasikan gambar1 sebagai Bitmap Baru dan nilai bitmap diambil dari PictureBox1
  • Dim gambar2 As New Bitmap(PictureBox2.Image) // Mendeklarasikan gambar2 sebagai Bitmap Baru dan nilai bitmap diambil dari PictureBox2
  • hmaxg1 = 0 // hmaxg1 bernilai 0
  • hmaxg2 = 0 // hmaxg1 bernilai 0
  • For i As Integer = 0 To 255 // kondisi perulangan i sebagai integer yang bernilai dari 0 sampai 255
  • h1(i) = 0 // h1 bernilai 0
  • h2(i) = 0 // h1 bernilai 0
  • Next // Mengakhiri dari perulangan i
  • Dim nilai As Integer = TrackBar1.Value //  Mendeklarasikan nilai sebagai integer dimana diambil dari nilai pergeseran pada TrackBar1
  • For i As Integer = 0 To PictureBox1.Width – 1 // kondisi perulangan pada matrix untuk lebar gambar, yaitu dimulai dari index 0 sampai tinggi Picture1
  • For j As Integer = 0 To PictureBox1.Height - 1// kondisi perulangan pada matrix untuk tinggi gambar, yaitu dimulai dari index 0 sampai tinggi Picture1
  • Dim r As Integer = gambar1.GetPixel(i, j).R // Mendeklarasikan r sebagai nilai integer dan variable r untuk menginisialisasikan warna merah atau red dimana nilai dari rgb red dikaitkan dengan nilai yang ada pada pixel(i, j) pada gambar1
  • Dim g As Integer = gambar1.GetPixel(i, j).G //Mendeklarasikan g sebagai nilai integer dan variable g untuk menginisialisasikan warna hijau atau green dimana nilai dari rgb green dikaitkan dengan nilai yang ada pada pixel(i, j) pada gambar1
  • Dim b As Integer = gambar1.GetPixel(i, j).B // Mendeklarasikan b sebagai nilai integer dan variable b untuk menginisialisasikan warna biru atau blue dimana nilai dari rgb blue dikaitkan dengan nilai yang ada pada pixel(i, j) pada gambar1
  • x = (r + g + b) / 3 // rumus dari grayscale dimana nilai penambaha dari r+g+b akan di bagi dengan 3 agar mendapatkan citra grayscale.
  • xb = x + nilai // Nilai yang didapatkan pada varivable xb yaitu nilai dari x atau grayscale ditambahkan dengan nilai dari variable nilai atau dari trackbar1.
  • If xb >= 255 Then //kondisi if jika nilai pada variabel xb lebih besar dari atau sama dengan 255 maka if bernilai benar dan nilai xb sama dengan 255, jika salah maka lanjut ke elseif.
  • xb = 255 //Nilai xb sama dengan 255 
  • ElseIf xb <= 0 Then // Kondisi elseif jika nilai pada variabel xb lebih kecil dari atau sama dengan 0 bernilai benar maka nilai variabel xb adalah 0, jika salah maka kondisi if berakhir untuk loop tersebut.
  • xb = 0 // Nilai variabel xb sama dengan 0
  • End If // Mengakhiri dari kondisi if
  • h1(x) = h1(x) + 1 // Rumus untuk mencari nilai h1 dimana h1(x) ditambahkan dengan 1 maka nilai tersebut akan dimasukkan ke h1(x)
  • h2(xb) = h2(xb) + 1 //Rumus untuk mencari nilai h1 dimana h1(x) ditambahkan dengan 1 maka nilai tersebut akan dimasukkan ke h1(x)
  • gambar1.SetPixel(i, j, Color.FromArgb(x, x, x)) // fungsi set pixel - yaitu untuk menciptakan titik-titik dari sumbu i dan j beserta warna RGB dari titik tersebut (x) untuk gambar2(PictureBox1)
  • gambar2.SetPixel(i, j, Color.FromArgb(xb, xb, xb)) //fungsi set pixel - yaitu untuk menciptakan titik-titik dari sumbu i dan j beserta warna RGB dari titik tersebut (xb) untuk gambar2(PictureBox2)
  • Next j // Mengakhiri perulangan matrix untuk tinggi gambar · Next i // Mengakhiri perulangan matrix untuk lebar gambar
  • PictureBox1.Image = gambar1 // Gambar1 adalah citra yang didapat dari PictureBox1
  • PictureBox2.Image = gambar2 // Gambar2 adalah citra yang didapat dari PictureBox2
  • For tinggi1 As Integer = 0 To 255 // Perulangan yang dilakukan pada tinggi1 sebagai nilai integer dan bernilai indeks dari 0 sampai 255
  • If h1(tinggi1) > hmaxg1 Thenhmaxg1 = h1(tinggi1) // Jika tinggi h1 benilai indeks dari tinggi1 lebih besaar dari hmaxg1 maka hmaxg1 sama dengan h1(tinggi1)
  • End If // Mengakhiri dari kondisi if
  • Next // // Mengakhiri perulangan dari tinggi1
  • For tinggi2 As Integer = 0 To 255 // Perulangan yang dilakukan pada tinggi2 sebagai nilai integer dan bernilai indeks dari 0 sampai 255
  • If h2(tinggi2) > hmaxg2 Thenhmaxg2 = h2(tinggi2) //Jika tinggi h2 benilai indeks dari tinggi2 lebih besar dari hmaxg2 maka hmaxg2 sama dengan h2(tinggi2)
  • End If // Menghentikan kondisi if
  • Next // Menghentikan perulangan dari tinggi
  • For i = 0 To 255 // kondisi perulangan yang dilakukan i dan bernilai dari 0 sampai 255
  • Me.Chart1.Series("Histogram Grayscale").Points.AddXY(i, h1(i)) // Membuat diagram atau histogram dari chart1 yang bernama series “Histogram Grayscale” dimana nilai diambil dari pixel atau nilai titik dari sumbu x dan y dan juga dari nilai i, h2(i)
  • Next // Menghentikan perulangan · For i = 0 To 255 // kondisi perulangan yang dilakukan i dan bernilai dari 0 sampai 255
  • Me.Chart2.Series("Histogram Brightness").Points.AddXY(i, h2(i)) // Membuat diagram atau histogram dari chart2 yang bernama series “Histogram Brightness” dimana nilai diambil dari pixel atau nilai titik dari sumbu x dan y dan juga dari nilai i, h2(i)
  • Next // Menghentikan perulangan

Analisa Sistem

Sistem yang telah dibuat berjalan dengan baik dan berhasil membuat Citra RGB ke Grayscale dan berubah dari Grayscale biasa menjadi terang atau gelap sesuai dengan apa yang diatur pada Brightness pada Citra. Kemudian mencari histogram dari setiap citra grayscale dan citra grayscale yang telah di Brightness. Sistem yang dibuat adalah menggunakan teknik pengolahan citra, Konversi citra RGB ke grayscale, grayscale ke brightness dengan nilai brigthnessnya dapat diatur sesuka hati kemudian citra dibuat histogram. Pada program percobaan dan latihan ini juga dapat diketahui bahwa perubahan kecerahan pada citra mempengaruhi hasil citra atau seperti yang dapat dilihat pada histogram masing-masing program.Hasil histogram citra menentukan nilai warna dari citra piksel apakah warna lebih gelap atau terang.

Semoga dari postingan ini dapat menjadi sumber inspirasi untuk kita semua sebagai manusia biasa yang mencoba menggali ilmu didunia ini. Terima kasih sudah membaca dan semoga bermanfaat :)


Written By Alfarisi (Original) Follow me @alfarisi

Keep Steem On, And Thank You So Much :)

Coin Marketplace

STEEM 0.21
TRX 0.14
JST 0.030
BTC 67873.49
ETH 3528.53
USDT 1.00
SBD 2.80