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
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ıtlaSilMerhaba Mert ,
SilGö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.
Merhaba tekrardan,
Silhttps://drive.google.com/open?id=0B7t9QNNtqJHeekJqSEhqMXAxSU0
bu yazıyı yazdığım projenin linki mevcut. Umarım işinize yarar. İyi çalışmalar kolay gelsin.