Konversi Citra Warna ke Monochrome


Mengubah gambar ke biner prosesnya hampir sama dengan mengubah gambar ke grayscale,
bedanya warna rata­rata akan dikelompokkan menjadi dua, jika intensitas warna dimulai dari 0
sampai dengan 255 maka diambil nilai tengahnya yaitu 128, jika dibawah 128 maka warna akan cenderung hitam dan diatas 128 warna akan cenderung putih.


Implementasi di VB Net

Kode:
Public Class FRMMonokrom
    Dim temp As Bitmap
    Private Sub FRMMonokrom_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        HScrollBar1.Minimum = -255
        HScrollBar1.Maximum = 255
        HScrollBar1.Value = 0
        btnCancel.Enabled = False
        btnconvert.Enabled = False
        TextBox1.Text = "Contrast adjustment = 0"
    End Sub
    Private Sub Rotasi(ByVal s As RotateFlipType)
        temp = New Bitmap(Pctboxwarna.Image) 'Gambar asli dijadikan gambar Bitmap
        temp.RotateFlip(s)
        Pctboxmonokrom.Image = temp
    End Sub
    Private Sub btnexit_Clik(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnexit.Click
        Close()

    End Sub

    Private Sub btnBrowser_Clik(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowser.Click
        Dim namafile As String
        If (ofdwarna.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            namafile = ofdwarna.FileName        'tampung nama file yg diklik dari dialog ke variabel nama file'
            Pctboxwarna.ImageLocation = namafile    'pindahkan file ke pctboxwarna
            Label3.Text = namafile

            btnBrowser.Enabled = False
            btnCancel.Enabled = True
            btnconvert.Enabled = True

        End If

    End Sub

    Private Sub btnconvert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnconvert.Click
        btnCancel.Enabled = False
        btnconvert.Enabled = False
        btnBrowser.Enabled = False
        Btnsave.Enabled = False
        Btnprint.Enabled = False

        ProgressBar1.Value = 0
        Dim temp As New Bitmap(Pctboxwarna.Image)
        Pctboxmonokrom.Image = temp
        Dim red As Integer, green As Integer, blue As Integer
        Dim x, y As Integer
        Dim A, R, G, B As Integer
        Dim cursize, picsize As Integer
        Dim integerprogress As Integer
        picsize = (temp.Width - 1) * (temp.Height - 1)
        For y = 0 To temp.Height - 1    'baca pixel mulai dari x=0 y=0 samapi dengan lebar gambar warna'
            cursize = x * y
            integerprogress = Int(100 * cursize / picsize)
            ProgressBar1.Value = integerprogress
            For x = 0 To temp.Width - 1  'ulangi ke baris berikutnya'
                red = temp.GetPixel(x, y).R     'dapatkan warna merah,hijau dan biru'
                green = temp.GetPixel(x, y).G
                blue = temp.GetPixel(x, y).B
                cboinfo.Items.Add(red)
                ComboBox1.Items.Add(green)
                ComboBox2.Items.Add(blue)
                A = Int((red + green + blue) / 3) 'jumlahkan warna red,green,blue'
                If (A < 128) Then       'uji apakah warna R,G,B lebih besar dari 128, jika ya maka akan warna putih, jika tidak maka sebaliknya'
                    R = 0 : G = 0 : B = 0
                Else
                    R = 255 : G = 255 : B = 255
                End If
                temp.SetPixel(x, y, Color.FromArgb(A, A, A))
            Next

        Next
        Pctboxmonokrom.Refresh()
    End Sub

    Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        btnCancel.Enabled = False
        btnconvert.Enabled = False
        btnBrowser.Enabled = True

        Pctboxwarna.ImageLocation = ""
        Label3.Text = ""
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnsave.Click
        SaveFileDialog1.ShowDialog()
        If SaveFileDialog1.FileName <> "" Then
            Pctboxmonokrom.Image.Save(SaveFileDialog1.FileName + ".jpg")
        End If

    End Sub

    Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        btnCancel.Enabled = False
        btnconvert.Enabled = False
        btnBrowser.Enabled = False
        Btnsave.Enabled = False
        Btnprint.Enabled = False

        ProgressBar1.Value = 0

        Pctboxmonokrom.Image = temp
        Dim red As Integer, green As Integer, blue As Integer
        Dim x, y As Integer
        Dim A, R, G, B As Integer
        Dim cursize, picsize As Integer
        Dim integerprogress As Integer
        Dim nk As Integer = -50
        picsize = (temp.Width - 1) * (temp.Height - 1)
        For y = 0 To temp.Height - 1    'baca pixel mulai dari x=0 y=0 samapi dengan lebar gambar warna'
            cursize = x * y
            integerprogress = Int(100 * cursize / picsize)
            ProgressBar1.Value = integerprogress
            For x = 0 To temp.Width - 1  'ulangi ke baris berikutnya'
                red = temp.GetPixel(x, y).R     'dapatkan warna merah,hijau dan biru'
                green = temp.GetPixel(x, y).G
                blue = temp.GetPixel(x, y).B
                cboinfo.Items.Add(red)
                ComboBox1.Items.Add(green)
                ComboBox2.Items.Add(blue)
                red = red + nk
                If red > 255 Then
                    red = 255
                End If
                If red < 0 Then
                    red = 0
                End If
                green = green + nk
                If green > 255 Then
                    green = 255
                End If
                If green < 0 Then
                    green = 0
                End If
                blue = blue + nk
                If blue > 255 Then
                    blue = 255
                End If
                If blue < 0 Then
                    blue = 0
                End If
                temp.SetPixel(x, y, Color.FromArgb(red, green, blue))
            Next
        Next
        Pctboxmonokrom.Refresh()
    End Sub

    Private Sub HScrollBar1_Scroll(sender As System.Object, e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
        If (e.Type = ScrollEventType.EndScroll) Then
            TextBox1.Text = "Contrast adjustment = " & HScrollBar1.Value
            Dim temp As New Bitmap(Pctboxwarna.Image)
            Pctboxmonokrom.Image = temp
            Dim red As Integer, green As Integer, blue As Integer
            Dim x, y As Integer
            Dim A, R, G, B As Integer
            Dim cursize, picsize As Integer
            Dim integerprogress As Integer
            Dim nk As Integer = HScrollBar1.Value
            picsize = (temp.Width - 1) * (temp.Height - 1)
            For y = 0 To temp.Height - 1    'baca pixel mulai dari x=0 y=0 samapi dengan lebar gambar warna'
                cursize = x * y
                integerprogress = Int(100 * y / (temp.Height - 1))
                ProgressBar1.Value = integerprogress
                For x = 0 To temp.Width - 1  'ulangi ke baris berikutnya'
                    red = temp.GetPixel(x, y).R     'dapatkan warna merah,hijau dan biru'
                    green = temp.GetPixel(x, y).G
                    blue = temp.GetPixel(x, y).B
                    cboinfo.Items.Add(red)
                    ComboBox1.Items.Add(green)
                    ComboBox2.Items.Add(blue)
                    red = red + nk
                    If red > 255 Then
                        red = 255
                    End If
                    If red < 0 Then
                        red = 0
                    End If
                    green = green + nk
                    If green > 255 Then
                        green = 255
                    End If
                    If green < 0 Then
                        green = 0
                    End If
                    blue = blue + nk
                    If blue > 255 Then
                        blue = 255
                    End If
                    If blue < 0 Then
                        blue = 0
                    End If
                    temp.SetPixel(x, y, Color.FromArgb(red, green, blue))
                Next
            Next
            Pctboxmonokrom.Refresh()
        End If
    End Sub

    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        Rotasi(RotateFlipType.Rotate90FlipNone)
    End Sub
End Class

Hasil Eksekusi :


Komentar