Program Image Noise(Pengolahan Citra) Dengan Microsoft Visual Studio 2010

Program Image Noise(Pengolahan Citra) Dengan Microsoft Visual Studio 2010

Image Noise 




Image noise bisa dikatakan sebagai titik-titik yang mengganggu atau membuat sebuah gambar menjadi cacat. Atau ada yang menyebutkan dengan titik-titik semut pada sebuah gambar, karena umumnya noise berupa titik-titik seperti semut yang mengganggu visualisasi sebuah gambar. Noise pada gambar sebenarnya terdapat beberapa macam tergantung pada jenis cacat yang terjadi.
Ada tiga macam jenis noise yang banyak terjadi pada sebuah gambar sebagai akibat cacatnya peralatan dalam menangkap gambar atau kamera, yaitu:

1) Noise Gaussian: Noise ini berupa titik-titik berwarna dan menimbulkan efek
seperti bintik-bintik. Noise ini muncul akibat pemakaian sensor yang terlalu
sensitif, sehingga warna yang seharusnya seragam malah menjadi tidak seragam
dan bahkan memunculkan noise ini.

Sebuah titik (x,y) yang terkena noise gaussian, nilainya akan berubah
menjadi: 𝑥𝑏 = 𝑥𝑔 ± 𝑛𝑠
Dimana ns adalah bilangan acak antara -128 s/d 128.

2) Noise Speckle: Noise ini berupa titik-titik hitam dan muncul akibat dari adanya
sensor-sensor yang mati. Sebuah titik (x,y) yang terkena noise speckle, nilainya
akan berubah menjadi nol.


3) Noise Salt & Pepper: Noise ini berupa titik-titik putih, dan muncul akibat dari
adanya debu atau media lain yang menyebabkan lensa kotor. Sebuah titik (x,y)
yang terkena noise speckle, nilainya akan berubah menjadi nol.



Sekarang menuju membuat program nya  langka langkah nya sebagai berikut

1. buatlah layout seperti gamabr dibawah dengan komponen 5 buah Button ,2 buah Picturebox dan 1 buah openFileDialog dan tambahkan label serta textbox untuk mengolah probabilitas Noise.


2. Source Code :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Image9
{
    public partial class Form1 : Form
    {
        Bitmap objBitmap;
        Bitmap objBitmap1;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult d = openFileDialog1.ShowDialog();
            if (d == DialogResult.OK)
            {
                objBitmap = new Bitmap(openFileDialog1.FileName);
                pictureBox1.Image = objBitmap;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            for (int x = 0; x < objBitmap.Width; x++)
                for (int y = 0; y < objBitmap.Height; y++)
                {
                    Color w = objBitmap.GetPixel(x, y);
                    int r = w.R;
                    int g = w.G;
                    int b = w.B;
                    int xg = (int)((r + g + b) / 3);
                    Color wb = Color.FromArgb(xg, xg, xg);
                    objBitmap.SetPixel(x, y, wb);
                }
            pictureBox1.Image = objBitmap;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            objBitmap1 = new Bitmap(objBitmap);
            int a = Convert.ToInt16(textBox1.Text);
            Random r = new Random();
            for (int x=0; x < objBitmap.Width; x++)
                for (int y = 0; y < objBitmap.Height; y++)
                {
                    Color w = objBitmap.GetPixel(x, y);
                    int xg = w.R;
                    int xb = xg;
                    int nr = r.Next(0, 100);
                    if (nr < a)
                    {
                        int ns = r.Next(0, 256) - 128;
                        xb = (int)(xg + ns);
                        if (xb < 0) xb = -xb;
                        if (xb > 255) xb = 255;
                    }
                    Color wb = Color.FromArgb(xb, xb, xb);
                    objBitmap1.SetPixel(x, y, wb);
                }
            pictureBox2.Image = objBitmap1;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            objBitmap1 = new Bitmap(objBitmap);
            int a = Convert.ToInt16(textBox1.Text);
            Random r = new Random();
            for (int x =0; x < objBitmap.Width; x++)
                for (int y = 0; y < objBitmap.Height; y++)
                {
                    Color w = objBitmap.GetPixel(x, y);
                    int xg = w.R;
                    int xb = xg;
                    int nr = r.Next(0, 100);
                    if (nr < a) xb = 0;
                    Color wb = Color.FromArgb(xb, xb, xb);
                    objBitmap1.SetPixel(x, y, wb);
                }
            pictureBox2.Image = objBitmap1;
        }

        private void button5_Click(object sender, EventArgs e)
        {
            objBitmap1 = new Bitmap(objBitmap);
            int a = Convert.ToInt16(textBox1.Text);
            Random r = new Random();
            for (int x =0; x < objBitmap.Width; x++)
                for (int y = 0; y < objBitmap.Height; y++)
                {
                    Color w = objBitmap.GetPixel(x, y);
                    int xg = w.R;
                    int xb = xg;
                    int nr = r.Next(0, 100);
                    if (nr < a) xb = 255;
                    Color wb = Color.FromArgb(xb, xb, xb);
                    objBitmap1.SetPixel(x, y, wb);
                }
            pictureBox2.Image = objBitmap1;
        }

       
    }
}

NB : dari source code diatas untuk mengubah nilai probabilitas kemunculan noise mulai
 dari 0% dan 100% kita sudah menambahkan kode program int a = Convert.ToInt16(textBox1.Text); dan memanggil variable 'a' pada kode   if (nr < a) xb = 255; pada setiap button noise Gaussian,Speckle dan Salt n Papper

Terima kasih telah berkunjung
selalu support admin
agar terus memposting tutorial-tutorial selanjutnya 
jikalau ada error atau kurang paham silahkan email saya
hasbisusilo@gmail.com

You may like these posts