Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.FlowLayout;
- import java.awt.image.BufferedImage;
- import java.awt.image.WritableRaster;
- import java.io.File;
- import java.io.IOException;
- import javax.imageio.ImageIO;
- import javax.swing.ImageIcon;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- public class Lab3 {
- public static void showImage(BufferedImage img, String title) {
- ImageIcon icon=new ImageIcon(img);
- JFrame frame=new JFrame();
- frame.setLayout(new FlowLayout());
- frame.setSize(200,300);
- JLabel lbl=new JLabel();
- lbl.setIcon(icon);
- frame.setTitle(title);
- frame.add(lbl);
- frame.setVisible(true);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- public static BufferedImage toGray(BufferedImage buff){
- WritableRaster wr = buff.getRaster();
- int width = buff.getWidth();
- int height = buff.getHeight();
- int sum=0;
- for(int i=0; i<width; i++)
- for(int j=0; j<height; j++ ){
- if( wr.getNumBands() > 1 ){
- int R = wr.getSample(i, j, 0);
- int G = wr.getSample(i, j, 1);
- int B = wr.getSample(i, j, 2);
- int I = (int)(0.3*R + 0.59*G + 0.11*B);
- wr.setSample(i, j, 0, I);
- wr.setSample(i, j, 1, I);
- wr.setSample(i, j, 2, I);
- }
- sum += wr.getSample(i, j, 0);
- }
- System.out.println("mean : "+sum/(width*height));
- return buff;
- }
- public static double STD(BufferedImage buff){
- int numArray[] = new int[buff.getWidth()* buff.getHeight()];
- WritableRaster wr = buff.getRaster();
- wr.getSamples(0, 0, buff.getWidth(), buff.getHeight(), 0, numArray);
- double sum=0.0;
- double sd = 0.0;
- int length = numArray.length;
- for(double num: numArray)
- sum += num;
- double mean = sum/length;
- System.out.println("mean: "+mean);
- for(double num: numArray){
- sd += Math.pow(num - mean, 2);
- }
- return Math.sqrt(sd/(length-1));
- }
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- String file="C:\\download\\test_035.jpg";
- BufferedImage img=ImageIO.read(new File(file));
- showImage(img,"Color");
- //showImage(toGray(img),"Gray");
- double sd = STD(toGray(img));
- System.out.println("sd: "+sd);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement