Anda di halaman 1dari 8

Membaca Data Gambar

Dasar Teori Citra/gambar secara konsep dapat dinyatakan dalam bentuk 2D atau array 2D, dimana setiap pixelnya pada posisi (x,y) dinyatakan dalam P(x,y). Setiap pixel pada data gambar mempunyai nilai sesuai dengan format gambar yang digunakan: 1. Pada gambar berwarna, setiap titik mempunyai nilai 24bit RGB, dimana masing-masing komponen warna R,G dan B mempunyai nilai 8bit, atau dengan kata lain setiap komponen warna memiliki nilai 0 s/d 255. 2. Pada gambar grayscale atau derajat mempunyai nilai 8bit, atau 0 s/d 255. keabuan, setiap titik

3. Pada gambar hitam putih (BW), setiap titik mempunyai nilai 0 atau 1.

Untuk bisa mengolah data citra maka sebelumnya harus didefinisikan sebuah obyek citra dalam type Bitmap. Contoh :Bitmap objBitmap; Dalam sebuah obyek Bitmap terdapat beberapa parameter dan fungsi yang dapat digunakan yaitu: objBitmap.width menyatakan panjang dari sebuah gambar (jumlah pixel horisontal) objBitmap.height menyatakan tinggi dari sebuah gambar (jumlah pixel vertical) objBitmap.getPixel fungsi untuk membaca data RGB dari pixel(x,y). Hasil pembacaan berupa nilai warna yang bertipe Color yang memiliki tiga data yaitu color.R, color.G dan color.B objBitmap.setPixel fungsi untuk memberikan nilai warna RGB pada pixel(x,y) dalam objBitmap.

PERCOBAAN

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 PrakCitra1 { public partial class Form2 : Form { Bitmap objBitmap,objBitmap1,objBitmap2,objBitmap3; public Form2() { InitializeComponent(); }

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

objBitmap1 = new Bitmap(objBitmap); Bitmap(objBitmap); }

private void button2_Click(object sender, EventArgs e) { objBitmap1 = new Bitmap(objBitmap); for (int x = 0; x < objBitmap.Width; x++) for (int y = 0; y < objBitmap.Height; y++) { {

Color w = objBitmap.GetPixel(x, y); //membaca data RGB dari

pixel(x,y) yang memberika return value warna yang bertipe Color yang memiliki tiga data yaitu color.R, color.G dan color.B objBitmap1.SetPixel(x, y, w); //fungsi untuk memberikan nilai warna RGB pada pixel(x,y) dalam objBitmap //untuk button copy letaknya tetap } } pictureBox2.Image = objBitmap1;

private void button3_Click(object sender, EventArgs e) { objBitmap1 = new Bitmap(objBitmap); for (int x = 0; x < objBitmap.Width; x++) { for (int y = 0; y < objBitmap.Height; y++) { Color w = objBitmap.GetPixel(x, y); objBitmap1.SetPixel(objBitmap.Width - 1 - x, y, w); //untuk button flip horisontal letak y atau tingginya tetap yang berubah adalah width atau x , yaitu dibalik } } pictureBox2.Image = objBitmap1;

private void button4_Click(object sender, EventArgs e) { objBitmap1 = new Bitmap(objBitmap); for (int x = 0; x < objBitmap.Width; x++) { for (int y = 0; y < objBitmap.Height; y++) { Color w = objBitmap.GetPixel(x, y); objBitmap1.SetPixel( x,objBitmap.Height - 1 - y, w);

//untuk button flip vertikal kebalikan dari horisontal yaitu x atau widhtnya tetap sedangakan y atau tingginya yang dibalik } } pictureBox2.Image = objBitmap1;

private void button6_Click(object sender, EventArgs e) { objBitmap2 objBitmap1.Width); for (int x = 0; x < objBitmap1.Width; x++) { for (int y = 0; y < objBitmap1.Height; y++) { Color w = objBitmap1.GetPixel(x, y); objBitmap2.SetPixel(y, objBitmap1.Width - 1 - x, w); } } pictureBox2.Image = objBitmap2; objBitmap1 = new Bitmap(objBitmap2); } = new Bitmap(objBitmap1,objBitmap1.Height,

private void button5_Click(object sender, EventArgs e) { objBitmap2 = new Bitmap(objBitmap3); for (int x = 0; x < objBitmap3.Width; x++) { for (int y = 0; y < objBitmap3.Height; y++) { Color w = objBitmap3.GetPixel(x, y); objBitmap2.SetPixel(objBitmap3.Width - 1 - x, objBitmap3.Height - 1 - y, w); } } pictureBox2.Image = objBitmap2;

objBitmap3 = new Bitmap(objBitmap2); }

} }

HASIL PERCOBAAN

ANALISA

Citra asal dengan citra setelah rekonstruksi memiliki perubahan nilai dari warna citra. Perubahan yang terjadi diakibatkan terkenanya kompresi pada citra yang akan dikirim.Saya sarankan untuk mengambil gambar yg filenya tidak terlalu besar karena,bila file terlalu besar maka gambarnya akan lama tampilnya. Pada pengubahan sebuah gambar menjadi grayscale dapat dilakukan dengan cara mengambil semua pixel pada gambar kemudian warna tiap pixel akan diambil informasi mengenai 3 warna dasar yaitu merah, biru dan hijau (melalui fungsi warnatoRGB), ketiga warna dasar ini akan dijumlahkan kemudian dibagi tiga sehingga didapat nilai rata-rata. Nilai rata-rata inilah yang akan dipakai untuk

memberikan warna pada pixel gambar sehingga warna menjadi grayscale, tiga warna dasar dari sebuah pixel akan diset menjadi nilai rata-rata (melalui fungsi RGBtowarna).Proses dari rumus keduanya hampir sama, bedanya pada rumus pertama warna pada setiap pixel yang telah diratarata akan dikalikan dengan nilai derajat keabuan (th), sehingga terjadi pengelompokan warna menjadi beberapa kelompok sesuai dengan nilai kuantisasinya.
KESIMPULAN

Tipe data yang di gunakan untuk menampung image adalah bitmap Dalam sebuah obyek Bitmap terdapat beberapa parameter dan fungsi yang dapat digunakan yaitu: o objBitmap.width menyatakan panjang dari sebuah gambar (jumlah pixel horisontal) o objBitmap.height menyatakan tinggi dari sebuah gambar (jumlah pixel vertical) o objBitmap.getPixel fungsi untuk membaca data RGB dari pixel(x,y). Hasil pembacaan berupa nilai warna yang bertipe Color yang memiliki tiga data yaitu color.R, color.G dan color.B o objBitmap.setPixel fungsi untuk memberikan nilai warna RGB pada pixel(x,y) dalam objBitmap.

Untuk mengambil setiap pixel dari image harus menggunakan nestedloop yang mana looping yang pertama di gunakan untuk mengambil panjang pixel dan untuk looping yang kedua untuk mengambil lebar pixel . Di balik jug tidak masalah.