Makale Özeti

Bu makalede C# ile,seçilen 20*20 px boyutlarındaki örnek bir resmin tüm Pixel bilgilerinin ve hemen yanlarında Pixel renk örneklerinin tablo şeklinde listelenmesini göreceğiz.Resim işleme vb alanlara ilgi duyanlar için faydalı bir uygulamadır.

Makale

Bu uygulamada 20*20 px  boyutundaki bir örnek resmin Pixel değerleri,sayısal ve görsel olarak elde edilmekte ve bir tablo üzerinde listelenmektedir.Bu şekilde tablolama özellikle Resim İşleme,Filtreleme,Efekt verme,OCR(Optik Karakter Tanıma)Uygulamaları vb resmin Pixel bilgileriyle işlem yapılan tüm konularda Pixel analizi bakımından faydalı olabilmektedir.Pixel'lerin sayısal değerlerinin hemen yanında renk örnekleride yer almaktadır.
Orjinal ve çıktı tabloları oluşturulup aralarındaki farklılıklar,ilişkiler daha iyi görülebilir.
İncelenen resimlerin boyutları küçük de olsa bu çoğu zaman yeterli olur,burada amaçlananda
Pixel yada Pixel grubundaki ana değişimi görmektir.

Konuyla ilgili olduğu için bazı temel kavramlara değinmek istiyorum.

 

 


Bitmap Resimler --Bitmap Resim Türleri

Bilindiği üzere Bitmap adreslenebilir en küçük resim parçası (Pixel) için renk bilgilerinin verildiği resim formatlarına verilen genel addır.Kırmızı,yeşil ve mavi renklerinin 0-255 arasında karıştırılmasıyla resim oluşturulur.Yaygın olarak kullanılan Bitmap türleri olarak BMP, GIF, JPEG, JPG, PNG, PICT formatlarını sayabiliriz.

Bitmap Resim İşleme Tekniklerinden Bazıları

Noktasal Resim İşleme Teknikleri: Parlaklık,Renkleri Ters Çevirme,Negatif Alma,Siyah-Beyaz Yapma vb  tek bir Pixel bazında işlem yapılan tekniklerdir.

Alansal Resim İşleme Teknikleri: Pixel'in kendisi ve yanındaki komşu Pixel'ler ile matematiksel ilişkiler temelinde işlem yapılan tekniklerdir.Örneğin Gaussian Blur Filtresi,Sharpen Filtresi vb.Bu teknikte tek bir Pixel üzerinde işlem yapılmayıp,belirlenen bir Pixel alanında işlemler yapılır.

Biçimsel Resim İşleme Teknikleri: Noktasal yada Alansal Tekniklerin dışında resmin biçimsel özelliklerinde değişiklik yapılan bir tekniktir.Örneğin bir resme Balık Gözü etkisi vermek gibi.

Aşağıda Pixel Analiz uygulaması kullanılarak yapılan bir kaç Pixel analiz örneği verilmiştir.

Siyah - Beyaz'a Çevrilmiş Resim

Orjinal ve siyah-beyaz resimler uygulama içinde seçildikten sonra tablolar oluşturulmuştur.Tablonun 0 - 0 ve 1 - 0 konumundaki Pixel bilgilerini inceleyelim.

 

Orjinal Resim Bilgileri

Siyah-Beyaz Resim Bilgileri

Bir resmi siyah-beyaza çevirmek için R-G-B kanalındaki Pixel değerleri toplanıp,çıkan toplam 3'e bölünür ve sonuç yeni resmin Kırmızı,Yeşil ve Mavi renklerine atanır.
0 - 0 konumuna bakacak olursak: 219 + 174 + 135  = 528  ve  528 / 3 = 176  olduğu görünmektedir.
1 - 0 konumunda ise: 214 + 169 + 130 = 513 ,  513 / 3 = 171  olduğu görülür.

Parlaklığı Arttırılmış Resim

Orjinal Resim Bilgileri

Parlaklığı Arttırılan Resim Bilgileri

Tabloda görüldüğü gibi parlaklık 20 birim artırılmıştır.

Invert(tersleme) İşlemi Yapılmış Resim

Orjinal Resim

Invert İşlemi Yapılmış Resim

Orjinal Resim Bilgileri

Invert Edilen Resim Bilgileri

Invert işlemi için her rengin değeri 255' ten çıkarılır ve çıkan sonuç yeni resmin renk değerlerine atanır.
0 - 0 Konumu İçin: 255 - 41 = 214, 255 - 111 = 144, 255 - 109 = 146
1 - 0 Konumu İçin: 255 - 47 = 208, 255 - 119 = 136, 255 - 116 = 139

Yukarda verilen örnekler sadece tek bir Pixel'i ilgilendiren,Pixel alanlarında yada resimde biçimsel olarak değişikliğin yapılmadığı örneklerdir.İstenirse Alansal yada Biçimsel değişikliklerde tablodan izlenebilir.(Örneğin Gaussian Blur filtresi).

Orjinal Resim

Gaussian Blur Efekti Uygulanmış Resim

Uygulamanın Kodlanması

İsim Uzayları

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;
using System.IO;

 

           // DEGISKEN TANIMLAMALARI
 private void btnTabloOlustur_Click(object sender, EventArgs e)
        {
            Bitmap OrnekResim = new Bitmap(pictureBox1.Image);
            Bitmap BosTablo = new Bitmap(pictureBox2.Image);
            Bitmap ListBoxResim = new Bitmap(1105, 550);
            Bitmap AnaTablo = new Bitmap(BosTablo.Width, BosTablo.Height);
            Bitmap BosResim = new Bitmap(1, 1);

            Color BosTabloRenk = new Color();
            Color OrnekResimRenk = new Color();
            Color ListBoxResimRenk = new Color();

            ListBox ListBox1 = new ListBox();
            ListBox1.Size = new System.Drawing.Size(1105, 550);
            ListBox1.Font = new Font("Microsoft Sans Serif", 7);

            int BosTabloKirmizi;
            int BosTabloYesil;
            int BosTabloMavi;
            int OrnekResimKirmizi;
            int OrnekResimYesil;
            int OrnekResimMavi;
            int ListBoxResimKirmizi;
            int ListBoxResimYesil;
            int ListBoxResimMavi;
            int OrnekResimGenislik = 0;
            int YukseklikSayaci1 = 0;
            int YukseklikSayaci2 = 0;
            int[] YatayRenkBaslangiclari = { 3, 58, 113, 168, 223, 278, 333, 388, 443, 498, 553, 608, 663, 718, 773, 828, 883, 938, 993, 1048 };
            int[] OrnekResimYukseklikDizisi = { 23, 47, 71, 95, 119, 143, 167, 191, 215, 239, 263, 287, 311, 335, 359, 383, 407, 431, 455, 479 };

            string OrnekResimKirmiziString = "";
            string OrnekResimYesilString = "";
            string OrnekResimMaviString = "";
            string Bosluk = " ";
            string OrnekResimBilgileri = "";

Oluşturulan değişkenlere kısaca değinmek gerekirse:

OrnekResim: Analizi yapılacak olan resimlere ait Bitmap değişkeni.
BosTablo: Listbox'taki renk bilgileriyle Ana tabloyu oluşturmakta kullanacağımız,Pixel'lerin konum
bilgilerinin olduğu tablo.
ListBoxResim: ListBox1'i Bitmap formatına çevirdiğimiz Bitmap değişkeni.
OrnekResimRenk: Örnek resmin renk bilgilerine ulaştığımız Color değişkeni.
BosTabloRenk: Boş tablonun renklerine ulaştığımız Color değişkeni.
ListBoxResimRenk: Bitmap'a çevrilen ListBox'un Pixel'lerine ulaştığımız Color değişkeni.
ListBox1: Örnek resmin renk bilgilerini aktardığımız ListBox değişkeni,
OrnekResimBilgileri: Örnek resmin renk bilgilerini aktardığımız string değişkeni.
Diğer Değişkenler: Örnek resmin yükseklik ve genişlik bilgilerini tuttuğumuz,döngü içerisinde
kullanmak için Int türünden değişkenler, Ana tabloyu oluştururken Pixel'lerin sayısal değerlerinin
yanında görsel renk örneklerinide eklemek için kullandığımız Int türünden diziler ve diğer
değişkenler.YatayRenkBaslangiclari ve OrnekResimYukseklikDizisi Ana tablodaki görsel renk
örneklerinin referans olarak başlayacağı noktalardır.Bu referans noktalarına göre görsel renk
örnekleri Ana tabloda oluşturulur.

Örnek Resim Bilgileri İle ListBoxResim'in Oluşturulması

Bu bölümde örnek resmin Pixel bilgileri minumum üç karaktere tamamlanıp,önce string değişkenine
sonrada satır satır ListBox1 değişkenine yazdırılır.Resim 20px yüksekliğinde olduğu için 20 satır
vardır.Son olarakta DrawToBitmap metodu ile ListBox nesnesinin Bitmap olarak resmi oluşturulur.

                    //LISTBOX RESMİNİ OLUŞTURMA
for (int yukseklik = 0; yukseklik < OrnekResim.Height; yukseklik++)
            {
                for (int genislik = 0; genislik < OrnekResim.Width; genislik++)
                {
                    OrnekResimRenk = OrnekResim.GetPixel(genislik, yukseklik);

                    // RESIM1 ICIN PIXEL DEGERLERINI 3 KARAKTERE TAMAMLAMA
                    if (OrnekResimRenk.R.ToString().Length == 1)
                    {
                        OrnekResimKirmiziString = "00";
                    }
                    if (OrnekResimRenk.R.ToString().Length == 2)
                    {
                        OrnekResimKirmiziString = "0";
                    }
                    if (OrnekResimRenk.R.ToString().Length == 3)
                    {
                        OrnekResimKirmiziString = "";
                    }
                    if (OrnekResimRenk.G.ToString().Length == 1)
                    {
                        OrnekResimYesilString = "00";
                    }
                    if (OrnekResimRenk.G.ToString().Length == 2)
                    {
                        OrnekResimYesilString = "0";
                    }
                    if (OrnekResimRenk.G.ToString().Length == 3)
                    {
                        OrnekResimYesilString = "";
                    }
                    if (OrnekResimRenk.B.ToString().Length == 1)
                    {
                        OrnekResimMaviString = "00";
                    }
                    if (OrnekResimRenk.B.ToString().Length == 2)
                    {
                        OrnekResimMaviString = "0";
                    }
                    if (OrnekResimRenk.B.ToString().Length == 3)
                    {
                        OrnekResimMaviString = "";
                    }
                    // PIXEL DEGERLERINI STRING'E AKTARMA
                    if (yukseklik == YukseklikSayaci1)
                    {
                        OrnekResimBilgileri += OrnekResimKirmiziString + OrnekResimRenk.R.ToString() + " " + OrnekResimYesilString + OrnekResimRenk.G.ToString() + " " + OrnekResimMaviString + OrnekResimRenk.B.ToString() + "   ";
                    }

                }
                // PIXEL DEGERLERINI STRING'DEN LISTBOX1'E AKTARMA
                ListBox1.Items.Add(Bosluk);
                ListBox1.Items.Add(OrnekResimBilgileri);
                OrnekResimBilgileri = "";
                if (YukseklikSayaci1 != 19)
                {
                    YukseklikSayaci1 = YukseklikSayaci1 + 1;
                }

            }

            ListBox1.DrawToBitmap(ListBoxResim, new Rectangle(0, 0, 1105, 550));

Boş Tablonun Hazırlanması

ListBoxResim nesnesiyle oluşturulan resimde satır-sütun bilgileri bulunmamaktadır. Sadece incelenecek olan örnek resmin Pixel değerleri satır satır listelenmiştir.Bu ham diyebileceğimiz resmi bir resim editöründe düzenleyerek satır ve sütunları çizip BoşTablo resmini hazırlıyoruz.Pixel bazında işlem yapıldığı için bu aşama biraz uğraştırıcı olabilir.Ben resim düzenleme programı olarak Ms Paint'i kullandım.Burada dikkat edilmesi gereken konu Boş tabloyu hazırlarken ListBox1'in yazısı hangi renkse onun dışındaki renkleri kullanmaktır.Bu uygulamada ListBox1'in yazı rengi siyahtır.Ana tablonun içindeki rakam bölümleri ListBoxResim'in siyah olan Pixel'leriyle oluşacak,diğer bölümlerde Boş tablonun Pixel'leriyle oluşacaktır.

ListBox Resmi

Hazırlanan Boş Tablo

Ana Tablonun Elde Edilmesi

Son adım olarak aynı boyuttaki ListBoxResim ve Boş tablo ile döngü içerisinde ana tablo oluşturulur.SaveFileDialog nesnesi ile tablonun oluşturulma süresi görsel olarak görülmektedir.Oluşturulan tablo jpeg yada bmp formatlarında kaydedilebilir.

             // ANA TABLOYU OLUSTURMA
            for (int yukseklik = 0; yukseklik < BosTablo.Height; yukseklik++)
            {
                if (yukseklik == 40 || yukseklik == 64 || yukseklik == 88 || yukseklik == 112 || yukseklik == 136 || yukseklik == 160 || yukseklik == 184 || yukseklik == 208 || yukseklik == 232 || yukseklik == 256 || yukseklik == 280 || yukseklik == 304 || yukseklik == 328 || yukseklik == 352 || yukseklik == 376 || yukseklik == 400 || yukseklik == 424 || yukseklik == 448 || yukseklik == 472)
                {
                    OrnekResimGenislik = 0;
                    if (YukseklikSayaci2 != 19)
                    {
                        YukseklikSayaci2 = YukseklikSayaci2 + 1;
                    }
                    progressBar1.Minimum = 0;
                    progressBar1.Maximum = 550;
                    progressBar1.Step = 1;
                    progressBar1.Value = yukseklik;
                    lblSonuc1.Text = "";
                    pictureBox4.Image = BosResim;
                    Application.DoEvents();

                }
                for (int genislik = 0; genislik < BosTablo.Width; genislik++)
                {
                    BosTabloRenk = BosTablo.GetPixel(genislik, yukseklik);
                    BosTabloKirmizi = BosTabloRenk.R;
                    BosTabloYesil = BosTabloRenk.G;
                    BosTabloMavi = BosTabloRenk.B;

                    ListBoxResimRenk = ListBoxResim.GetPixel(genislik, yukseklik);
                    ListBoxResimKirmizi = ListBoxResimRenk.R;
                    ListBoxResimYesil = ListBoxResimRenk.G;
                    ListBoxResimMavi = ListBoxResimRenk.B;

                    if (ListBoxResimKirmizi + ListBoxResimYesil + ListBoxResimMavi == 0)
                    {
                        AnaTablo.SetPixel(genislik, yukseklik, (Color.FromArgb(ListBoxResimKirmizi, ListBoxResimYesil, ListBoxResimMavi)));
                    }
                    else
                    {
                        AnaTablo.SetPixel(genislik, yukseklik, (Color.FromArgb(BosTabloKirmizi, BosTabloYesil, BosTabloMavi)));
                    }
                    if (yukseklik == OrnekResimYukseklikDizisi[YukseklikSayaci2] && genislik == YatayRenkBaslangiclari[OrnekResimGenislik])
                    {
                        OrnekResimRenk = OrnekResim.GetPixel(OrnekResimGenislik, YukseklikSayaci2);
                        OrnekResimKirmizi = OrnekResimRenk.R;
                        OrnekResimYesil = OrnekResimRenk.G;
                        OrnekResimMavi = OrnekResimRenk.B;

                        if (genislik == 3)
                        {
                            AnaTablo.SetPixel(genislik - 1, yukseklik, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 1, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 1, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 1, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 2, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 2, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 2, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 3, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 3, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 3, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 4, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 4, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 4, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 5, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 5, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 5, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 6, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 6, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 6, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                        }
                        else
                        {
                            AnaTablo.SetPixel(genislik - 1, yukseklik, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 4, yukseklik, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 5, yukseklik, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 1, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 1, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 1, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 4, yukseklik - 1, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 5, yukseklik - 1, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 2, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 2, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 2, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 4, yukseklik - 2, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 5, yukseklik - 2, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 3, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 3, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 3, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 4, yukseklik - 3, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 5, yukseklik - 3, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 4, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 4, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 4, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 4, yukseklik - 4, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 5, yukseklik - 4, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 5, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 5, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 5, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 4, yukseklik - 5, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 5, yukseklik - 5, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 1, yukseklik - 6, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 2, yukseklik - 6, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 3, yukseklik - 6, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 4, yukseklik - 6, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));
                            AnaTablo.SetPixel(genislik - 5, yukseklik - 6, (Color.FromArgb(OrnekResimKirmizi, OrnekResimYesil, OrnekResimMavi)));

                        }
                        if (OrnekResimGenislik != 19)
                        {
                            OrnekResimGenislik = OrnekResimGenislik + 1;
                        }
                    }
                }
            }
            pictureBox4.Image = AnaTablo;
            if (pictureBox4.Image.Height > 2)
            {
                lblSonuc1.Text = "Tablo Başarıyla Oluşturuldu";
            }

Resim Seçme

   private void btnResimSec1_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Resim Dosyaları|" + "*.bmp;*.jpg;*.gif;*.wmf;*.tif;*.png";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.Image = null;
                pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
            }
        }

Ana Tabloyu Kaydetme

        private void btnKaydet_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "jpeg dosyası(*.jpg)|*.jpg|Bitmap(*.bmp)|*.bmp";
            sfd.Title = "kayıt"
            sfd.FileName = "Tablo";
            DialogResult sonuç = sfd.ShowDialog();
            if (sonuç == DialogResult.OK)
            {
                pictureBox4.Image.Save(sfd.FileName);
            }
        }

Sonuç

Bu makalede Resim İşleme konusuyla ilgili temel bir giriş yapılmış ve örnek bir uygulamanın nasıl hazırlandığı anlatılmıştır.Aynı listeleme mantığı ile istenirse daha gelişmiş uygulamalar yazılabilir.

Faydalı olması dileğiyle

İyi çalışmalar

Vedat Yavuzoğlu



Örnek uygulama indirme linki: http://rapidshare.com/files/3997647452/Pixel%20Analiz%20Uygulamasi.zip