17 Mayıs 2015 Pazar

Görüntü İşleme (Image Processing)

      S.a. Arkadaşlar,
      Bu gün farklı bir konuda bir şeyler yazacağız. Konumuz görüntü işleme olacak. Giriş mayetinde bir yazı olacak. O nedenle daha çok görüntü işleme nedir , ne değildirden konuşacağız. Daha sonra bir kaç basit örnek ile yazımıza son vermeyi düşünüyoruz. Bu konuyla ilgili yaptığım bir kaç araştırmadan sonra matlab veya java konusunda yazılara rastladım. Ama  bizim üzerinde duracağımız konu tabii ki java olacaktır. Peki nedir görüntü işlemi ? Kısaca bir görüntünün başka bir görüntüye dönüştürülmesi işlemidir. Peki o zaman arada ne gibi farklar olacak diye bir soracak olursanız; şöyle bir cevap verebiliriz. Örneğin görüntüdeki gürültüleri silebiliriz. Kişinin yüzündeki sivilceleri de silebiliriz :). Bir resim içinden harfleri çekebiliriz. Görüntüyü siyah beyaz veya farklı formatlarda işleyebiliriz. Ayrıca görüntüyü sıkıştırma, onarma gibi işlemlerde de kullanabiliriz. Bunu gibi örnekleri çoğaltabiliriz. Peki nerelerde kullanılır diye sorarsak; Tıp , astronomi,coğrafya, biyoloji gibi alanlarda kullanabiliriz. Tabi bu örnekleri çoğaltmak tabii ki mümkün. Bu işlemleri yaparken kütüphaneler mevcut. OpenCV ve OpenGL bunlardan ikisi. Bunla ilgili yazımızın sonunda bu konular üzerinde güzel web siteleri mevcut. Kaynaklar İngilizce de olsa gayet anlaşılır. Örneklerimizi de zaten bu sitelerin bazılarından aldık. Daha ayrıntılı öğrenmek için tabii ki çok daha emek sarf etmek gerekecektir. Bizimki sadece giriş niteliğinde bir yazı. Şimdi örneklerimizi inceleyelim.



      public class BlackPhoto {
   public static void main(String[] args) throws IOException   {
     // Bir resim alıyoruz. 
     BufferedImage input = ImageIO.read(new File("alacağimiz dosyanın yolu"));
     // siyah ve beyaz renkleri oluşturuyoruz
     BufferedImage im =   new BufferedImage(input.getWidth(),
                     input.getHeight(),BufferedImage.TYPE_BYTE_BINARY);
     // siyah ve beyaz renkleri alıyoruz
     Graphics2D g2d = im.createGraphics();
     // girdiyi alarak görüntüyü işliyoruz
     g2d.drawImage(input,0,0,null);
     // Jpg formatındaki son halini veriyoruz
     ImageIO.write(im,"JPG",new File("kaydedeceğimiz dosyanın yolu"));
     }
   
    Her zamanki gibi kodlar içinde yorum satırlarıyla kodumuzu zenginleştirmeye çalıştık. Burada aldığımız bir resmi siyah olarak veriyoruz. Aşağıdaki kodumuz ise satranç tahtası yapıyor.

      public static void main(String[] args) throws IOException {
     int width = 400,height = 400; // Resmin boyutları
   
     // binary formatta Buffered Image oluşturuyoruz
     BufferedImage im = new BufferedImage
                      (width,height,BufferedImage.TYPE_BYTE_BINARY);
    // pixel değerilerini ayarlıyoruz
     WritableRaster raster = im.getRaster();
     int[] whiteRegion = new int[50*50]; // her kare boyutu
     Arrays.fill(whiteRegion,1);
     for(int h=0;h<8;h++)
       for(int w=0;w<8;w++){
         // sadece tek onları alıyoruz
         if ((h+w) % 2 == 1) //beyazla dolduruyoruz
           raster.setSamples(w*50,h*50,50,50,0,whiteRegion);
         }
     // Ve bize döndürülen şekil
     ImageIO.write(im,"JPG",new File("D:\\block.jpg"));
     }
   }

     Şimdi son olarak da bu konuyla ilgili araştırırken bulduğum Turgay Can'ın paylaştığı linkleri aynen paylaşıp yazıyı bitiyoruz. İyi çalışmalar dilerim.

http://www.jhlabs.com/ip/blurring.html

http://www.lac.inpe.br/JIPCookbook/ ->Oldukça iyi bir dökümentasyona sahip

http://rsbweb.nih.gov/ij/ -> Dökümentasyonu mevcut

http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/

http://marvinproject.sourceforge.net/en/index.html

http://processing.org/ -> Oldukça iyidir

http://ubaa.net/shared/processing/opencv/

http://im4java.sourceforge.net/

http://www.graphicsmagick.org/ -> Dökümentasyon mevcut


 

 

3 yorum:

  1. Merhaba hocam Javada ImagıneJ kutuphanesı kullanarak basıt bır goruntu ısleme uygulaması yapmak ıstıyorum.Konuyla ılgılı bılgılerınızden faydalanmak ısterım.Yardım edebılır mısınız?

    YanıtlaSil
    Yanıtlar
    1. Merhaba Mert ,
      Görüntü işleme konusunda çok bilgili olduğumu söyleyemem ama basit bir proje yazmıştım. Onu bulabilirsem seninle paylaşayım. Bulamazsam da basit bir proje bulup senle paylaşmaya çalışacağım.

      Sil
    2. Merhaba tekrardan,
      https://drive.google.com/open?id=0B7t9QNNtqJHeekJqSEhqMXAxSU0
      bu yazıyı yazdığım projenin linki mevcut. Umarım işinize yarar. İyi çalışmalar kolay gelsin.

      Sil