Program çalişmadan önce....
*Temel görüntü işleme algoritmalarından biri olan gri tona çevirme algoritması kullanılmıştır...
*Bu algoritmaya göre her pixelin RGB formatında 8 er bit ile renk tonları tutulduğu biliniyor...
*Bu int olarak tutulan bu değerlerinin aritmetik ortalaması aynı pixele işlenerek yapılmaktadır..
* Tabi bu işlemleri yaparken gerekli shift işlemleri yapılmalıdır...Yani RED değeri 16 bit sağa kaydırılmalıdır ve GREEN değeri 8 bit sağa kaydırılmalıdır..
*
package iamge_grayscale;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
/**
*
* @author YASİR KILIÇ
*/
public class Image_grayscale {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception{
// TODO code application logic here
BufferedImage image=null;
File f=null;
try {
f=new File("D:\\pardus.jpg");
image=ImageIO.read(f);
} catch (Exception e) {
e.printStackTrace();
}
int h=image.getHeight();
int w=image.getWidth();
for(int i=0;i<w;i++){
for(int j=0;j<h;j++){
int p=image.getRGB(i, j);
int a=(p>>24)&0xff;
int r=(p>>16)&0xff;
int g=(p>>8)&0xff;
int b=p&0xff;
int avg=(r+g+b)/3;
p=(a<<24)|(avg<<16)|(avg<<8)|avg;
image.setRGB(i, j, p);
}
}
try{
f=new File("D:\\x.jpg");
ImageIO.write(image, "jpg", f);
}catch(Exception e){
e.printStackTrace();
}
}
}
Program çaliştiktan sonra.....
No comments:
Post a Comment