Elektrotekno.com Ana Sayfa || Kitaplar, Dergiler (E-Books, Magazines)


Görüntü İşleme - Uygulama

Açıklama:
Elektrik, Elektronik, Haberleşme ve Otomasyon konularının ağırlıklı olarak konuşulduğu, tartışıldığı ve bilgi paylaşımı yapıldığı forumumuza hoşgeldiniz.
Şu an E-kütüphane (Elektrik, elektronik ve haberleşme konularında) kategorisi içerisindeki Kitaplar, Dergiler (E-Books, Magazines) forumunda bulunuyorsunuz.
Bu sayfada üyelerimizin "Görüntü İşleme - Uygulama" konusundaki problem, görüş ve önerileri okuyabilir ayrıca konu hakkındaki doküman, resim, proje, devre ve programlara ücretsiz olarak ulaşabilirsiniz. Üye olduktan sonra sizler de konu hakkında sorular sorabilir ya da yorum ve paylaşım yaparak birikimlerinizi aktarabilirsiniz.
Forumdan tam olarak yararlanabilmek için üye olmayı unutmayınız!
Kayıt: 28 Hzr 2009
Mesajlar: 21

Offline
imotephcadi
Tarih: 14 10 2009 13:22

Bir görüntü üzerinde yapılabilecek işlemleri noktasal, alansal, toplamsal, biçimsel gibi alt kategorilere bölebiliriz.

Öncelikli olarak noktasal işlemlerden bahsedersek, noktasal işlemler; görüntü üzerinde gözek gözek dolaşıp, her gözekin sadece kendi değerini değiştirdiğimiz işlemlerdir. Örnek olarak parlaklık(brightness) , zıtlık(contrast), gritona çevirme, negatif ve eşikleme gibi işlemleri verebiliriz. Alansal işlemler ise sadece bir gözekle değil birbirine komşu birkaç gözekle yapılan işlemlerdir. En bilinen örneği filtrelerdir. Örneğin bir resme medyan filtresi uygulamak istediğimizde seçilen yapısal elemana göre (3x3 veya 5x5) o bölgedeki tüm gözeklerin değeri hesaplanıp yapısal elemanın ortasındaki değere yazılır. Biçimsel işlemler, resmin renk değerlerinde değil de biçiminde yapılan değişikliklerdir. Balık gözü(fish eye), girdap(twirl) ve gözekleme(pixelate) gibi. Toplamsal işlemlere de Fourier dönüşümünü örnek verebiliriz.

Noktasal işlemlerin birkaçından genel olarak bahsedip sadece parlaklık üzerinde duracağım. Diğer işlemlere de ilerleyen günlerde Kod Kütüphanesinde yer vereceğim.

Bir gözeğin renk değerlerinin 0 ile 255 arasında değiştiğinden bahsetmiştik. Değerler 255 e yaklaştıkça o gözeğin parlaklığı artar. Bunun için bir resmin parlaklığını artırmak için , resmin tüm gözeklerinin renk değerlerini artırmalıyız. Kod üzerinde açıklarsak;

(daha basit ve anlaşılır olduğu için 32bitlik formatı tercih ettim.)


Kod
public Bitmap parlat(Bitmap resim, int değer)

        {
            unsafe
            {
                BitmapData bmpdata = resim.LockBits(new Rectangle(0, 0, resim.Width, resim.Height),
                        ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);

                byte* p = (byte*)bmpdata.Scan0;

                for (int i = 0; i < bmpdata.Height; i++)
                {
                    for (int h = 0; h < bmpdata.Width; h++)
                    {
                        p[0] =Convert.ToByte( p[0]+değer );
                        p[1] =Convert.ToByte( p[1]+değer );
                        p[2] =Convert.ToByte( p[2]+değer );

                        p += 4;
                    }
                }

                resim.UnlockBits(bmpdata);

                return resim;
            }
        }



Burada 'resim' gözek gözek dolaşılmakta ve renk değerleri, girilen 'değer' parametresi kadar artırılmaktadır. Yalnız burda dikket edilmesi gerekilen nokta renk değerlerinin 0-255 arasında değişmesidir. Eğer değerler bu sınırı geçerse program hata verecektir. Onun için her artırmada değerler kontol edilip 255'i geçenler 255'e, 0'ın altına inenlerde 0'a eşitlenmelidir. Düzeltilmiş kısım ;

Kod
for (int i = 0; i < bmpdata.Height; i++)

{
    for (int h = 0; h < bmpdata.Width; h++)
    { 
        //mavi için
        if (p[0] + değer > 255)     p[0] = 255; 
        else if(p[0] + değer < 0 )  p[0] = 0 ;   
        else   p[0] =Convert.ToByte( p[0]+değer );

        //yeşil için
        if (p[1] + değer > 255)     p[1] = 255;
        else if (p[1] + değer < 0)  p[1] = 0;   
        else  p[1] = Convert.ToByte( p[1] + değer);

        //kırmızı için
        if (p[2] + değer > 255)     p[2] = 255;
        else if (p[2] + değer < 0)  p[2] = 0;   
        else  p[2] = Convert.ToByte(p[2] + değer);

        p += 4;
    }
}


Bu yöntem pekde doğru bir algoritma olmayıp, görüntü işlemenin matnığını anlatmak için verdim. Parlaklık için çeşitli fonksiyonlar internette bulunabilir.

Diğer noktasal işlemlerden biraz bahsedecek olursak; bir görüntünün tersini(negatifini), tüm gözeklerin renk değerlerini 255 den çıkararak elde ederiz.

Kod
for (int i = 0; i < bmpdata.Height; i++)

{
    for (int h = 0; h < bmpdata.Width; h++)
    {
        p[0] = Convert.ToByte(255 - p[0]);
        p[1] = Convert.ToByte(255 - p[1]);
        p[2] = Convert.ToByte(255 - p[2]);

        p += 4;
    }
}


Bir resmi gritonlarına çevirmek için kırmızı, yeşil, mavi renk değerlerinn ortamasını alıp üç rengede bu değeri atıyarız. Yine bu yönteme göre daha bir yöntem var olup bu yöntem, her rengi belli bir oranda işleme katar.
Kod
for (int i = 0; i < bmpdata.Height; i++)

{
    for (int h = 0; h < bmpdata.Width; h++)
    {
        byte ort = Convert.ToByte((p[0] + p[1] + p[2]) / 3);
        p[0] = p[1] = p[2] = ort;
        p += 4;
    }
}

Kaynak : http://www.gencisbb.com/
Başa dön



Görüntü İşleme - Uygulama


Benzer Konular
- plc ile gerçek uygulama örnekleri
- yardım!!! spektral görüntü filtreleme
- Sayısal İşaret İşleme Ders Notu

- görüntü yakalama kartı yardım

- MATLAB - Görüntü işleme ile lastik izi tanıma projesi...
- pwm ile ilgili onlarca örnek ve uygulama (hex,proteus,pbp)
- 12 kat konut komple uygulama projesi (ZAYIF AKIM)
- 12 kat konut komple uygulama projesi
- PIC16F877 ile yapılmış 40 dan fazla uygulama :)

- Matlab Görüntü işleme...

- Receiver Tuneri ile1500mhzde görüntü aktarma

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Türkiye | Ads by Google Adsense | Design by Crazy Bat based
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72