Kamis, 07 November 2013

Komputer Grafik - Transformasi



Grafika komputer 3D  adalah representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Hasil ini kadang kala ditampilkan secara waktu nyata (real time) untuk keperluan simulasi. Secara umum prinsip yang dipakai adalah mirip dengan grafika komputer 2D, dalam hal: penggunaan algoritma, grafika vektor, model frame kawat (wire frame model), dan grafika rasternya.
Grafika komputer 3D sering disebut sebagai model 3D. Namun, model 3D ini lebih menekankan pada representasi matematis untuk objek 3 dimensi. Data matematis ini belum bisa dikatakan sebagai gambar grafis hingga saat ditampilkan secara visual pada layar komputer atau printer. Proses penampilan suatu model matematis ke bentuk citra 2 D biasanya dikenal dengan proses 3D rendering.

Materi Transformasi  Mata Kuliah Komputer Grafik
Transformasi adalah perubahan bentuk. Komputer merupakan salah satu transformator yang cukup ideal. Pada grafik komputer kemungkinan untuk mengubah bentuk atau penampilan dari suatu objek sangat luas bahkan untuk mengganti objek itu sendiri secara permanan.

Transformasi diperlukan untuk mengubah ( transform ) posisi suatu objek dari tempat asal ke posisi elemen grafik, transformasi juga diperlukan untuk memutarkan posisi suatu objek pada titik pusat, mengubah ukuran objek dan menarik sebagian objek sehingga tampak terdistorsi.
Bentuk-bentuk transformasi tersebut secara umum adalah sebagai berikut :

    Translation ( mengeser ) 
     Strecthing ( merubah lebar )
     Scale ( merubah ukuran )
     Rotation ( memutar )

    Translation ( mengeser )

Translasi suatu gambar atau objek 2D dilakukan dengan cara menambah atau mengurangi koordinat x atau y dengan sejumlah nilai tertentu sehingga objek bergeser dari suatu posisi ke posisi lain.
Sebuah objek merupakan deretan titik-titik yang membangun objek tersebut, jika dilakukan proses translasi, maka akan mengoperasikan seluruh titik tersebut dan membutuhkan proses yang komplek dan lama. Untuk mengatasi masalah tersebut maka perlu ditentukan suatu titik tertentu dari suatu objek yang menjadi titik orientasi sehingga pergeseran dilakukan terhadap titik orientasi tersebut dan diikuti offset vektornya.
Strecthing ( merubah lebar )
Prinsip dasar strecthing sama seperti translasi hanya pada strecthing pergeseran hanya pada satu titik tertentu hingga objek bertambah besar atau bertambah kecil pada titik koordinat yang ditentukan.

Scale ( merubah ukuran )
Scale dapat diartikan sebagai suatu perubahan terhadap objek tertentu sehingga ukuran objek tersebut berubah. Perubahan besar untuk lingkaran adalah pada radius r menjadi r’ dan perubahan besar pada segi empat pada P1, P2, P3 dan P4 menjadi  P1’, P2’, P3’ dan P4’.
Rotation ( memutar )
Rotation dapat diartikan sebagai aksi pemutaran objek sebesar sudut x dari posisi awalnya pada titik rotasi  ( x ).

Grafika komputer 3D menggunakan matriks 4x4 untuk merubah dan mentayangkan model 3D dalam bentuk citra 2D. Grafika komputer 3D memiliki 5 jenis dasar matriks transformasi:

    Matriks model (Model matrix): Menyimpan orientasi dan posisi model relatif terhadap suatu posisi.
    Matriks pandangan (View matrix): Menyimpan transformasi pandangan relatif terhadap posisi asal (yang bernilai (0,0,0)).
    Matriks proyeksi (Projection matrix): Menyimpan transformasi untuk merubah ruang 3D menjadi citra 2D, dan sebaliknya.
    Matriks dunia (World matrix): Menyimpan orientasi dan posisi suatu posisi relatif terhadap posisi asal.
    Matriks lokal (Local matrix): Menyimpan orientasi dan posisi suatu posisi relatif terhadap suatu posisi lain.

Saat penayangan citra, kamera pandangan digunakan sebagai kerangka acuan ruang maya. Apabila kamera harus berpindah (translate) sejarak +10 unit di Poros-Z, maka seluruh model di ruang maya harus berpindah -10 di Poros-Z. Jadi, kamera sebenarnya tidak berpindah, melainkan ruang maya yang berpindah. Setiap benda (termasuk kamera) grafika komputer mempunyai matriks model yang menyimpan posisi dan orientasi model. Sementara, kamera juga memiliki matriks pandangan dan proyeksi. Matriks dunia dan matriks lokal tidak wajib diperlukan, dan bisa dianggap bernilai identitas.

 saya temukan dari berbagai sumber.

Description: Komputer Grafik - Transformasi Rating: 4.5 Reviewer: Fikri Ramadhan - ItemReviewed: Komputer Grafik - Transformasi

Senin, 24 Juni 2013

PENGOLAHAN CITRA





Listing program pengolahan citra menggunakan VB Net


Public Class Form1
    Dim gambar As Bitmap

    Private Sub OpenCitraToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenCitraToolStripMenuItem.Click
        OFD.Filter = "BMP|*.bmp|JPG|*.Jpg"
        OFD.ShowDialog()

        If OFD.FileName = "" Then Exit Sub
        PIC1.Image = Image.FromFile(OFD.FileName)
        gambar = New Bitmap(PIC1.Image)
    End Sub

    Private Sub SaveCitraToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveCitraToolStripMenuItem.Click
        SFD.Filter = "JPG|*.Jpg|BMP|*.bmp"
        SFD.ShowDialog()
        If SFD.FileName = "" Then Exit Sub
        If SFD.FilterIndex = 1 Then
            gambar.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
        End If
        If SFD.FilterIndex = 2 Then
            gambar.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
        End If
    End Sub

    Private Sub GrayscaleToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GrayscaleToolStripMenuItem.Click
        Dim Pb, Pc As Integer
        Dim Rt, vM, vH, vB As Double
        With gambar
            For Pb = 0 To .Height - 1
                For Pc = 0 To .Width - 1
                    vM = .GetPixel(Pc, Pb).R
                    vH = .GetPixel(Pc, Pb).G
                    vB = .GetPixel(Pc, Pb).B
                    Rt = (vM + vH + vB) / 3
                    .SetPixel(Pc, Pb, Color.FromArgb(Rt, Rt, Rt))
                Next
                Pic2.Image = gambar
                Pic2.Refresh()
            Next
        End With
    End Sub

    Private Sub NegatifToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NegatifToolStripMenuItem.Click
        Dim Pb, Pc As Integer
        Dim vM, vH, vB As Double
        With gambar
            For Pb = 0 To .Height - 1
                For Pc = 0 To .Width - 1
                    vM = 255 - .GetPixel(Pc, Pb).R
                    vH = 255 - .GetPixel(Pc, Pb).G
                    vB = 255 - .GetPixel(Pc, Pb).B
                    If vM <= 0 Then vM = 0
                    If vB <= 0 Then vB = 0
                    If vH <= 0 Then vH = 0
                    .SetPixel(Pc, Pb, Color.FromArgb(vM, vH, vB))
                Next
                Pic2.Image = gambar
                Pic2.Refresh()
            Next
        End With
    End Sub

    Private Sub BrigtnessToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BrigtnessToolStripMenuItem.Click
        Dim Pb, Pc As Integer
        Dim vM, vH, vB As Double
        With gambar
            For Pb = 0 To .Height - 1
                For Pc = 0 To .Width - 1
                    vM = .GetPixel(Pc, Pb).R + 5
                    vH = .GetPixel(Pc, Pb).G + 5
                    vB = .GetPixel(Pc, Pb).B + 5
                    If vM > 255 Then vM = 255
                    If vB > 255 Then vB = 255
                    If vH > 255 Then vH = 255
                    .SetPixel(Pc, Pb, Color.FromArgb(vM, vH, vB))
                Next
                Pic2.Image = gambar
                Pic2.Refresh()
            Next
        End With
    End Sub

    Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
        gambar = New Bitmap(Pic1.Image)
    End Sub

    Private Sub KeluarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KeluarToolStripMenuItem.Click
        End
    End Sub

    Private Sub BinerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BinerToolStripMenuItem.Click
        Dim Pb, Pc As Integer
        Dim rata, vM, vH, vB As Double
        With gambar
            For Pb = 0 To .Height - 1
                For Pc = 0 To .Width - 1
                    vM = .GetPixel(Pc, Pb).R
                    vH = .GetPixel(Pc, Pb).G
                    vB = .GetPixel(Pc, Pb).B
                    rata = (vM + vH + vB) / 3
                    If (rata < 128) Then
                        vM = 0
                        vH = 0
                        vB = 0
                    Else
                        vM = 255
                        vH = 255
                        vB = 255
                    End If

                    .SetPixel(Pc, Pb, Color.FromArgb(vM, vH, vB))
                Next
                Pic2.Image = gambar
                Pic2.Refresh()
            Next
        End With
    End Sub

    Private Sub RotateToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RotateToolStripMenuItem.Click
        Dim Pb, Pc As Integer
        Dim vM, vH, vB As Double
        Dim gambar3 As Bitmap = New Bitmap(Pic1.Image)
        With gambar
            For Pb = .Height - 1 To 0 Step -1
                For Pc = .Width - 1 To 0 Step -1
                    vM = .GetPixel(Pc, Pb).R
                    vH = .GetPixel(Pc, Pb).G
                    vB = .GetPixel(Pc, Pb).B
                    gambar3.SetPixel(.Width - 1 - Pc, .Height - 1 - Pb, Color.FromArgb(vM, vH, vB))
                Next
                Pic2.Image = gambar3
                Pic2.Refresh()
            Next
        End With
        gambar = gambar3
    End Sub

End Class



Citra Biner