Advertisement
Guest User

Untitled

a guest
Oct 18th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. import java.awt.FlowLayout;
  2. import java.awt.image.BufferedImage;
  3. import java.awt.image.WritableRaster;
  4. import java.io.File;
  5. import java.io.IOException;
  6.  
  7. import javax.imageio.ImageIO;
  8. import javax.swing.ImageIcon;
  9. import javax.swing.JFrame;
  10. import javax.swing.JLabel;
  11.  
  12.  
  13. public class Lab3 {
  14.  
  15.  
  16. public static void showImage(BufferedImage img, String title) {
  17.  
  18. ImageIcon icon=new ImageIcon(img);
  19. JFrame frame=new JFrame();
  20. frame.setLayout(new FlowLayout());
  21. frame.setSize(200,300);
  22. JLabel lbl=new JLabel();
  23. lbl.setIcon(icon);
  24. frame.setTitle(title);
  25. frame.add(lbl);
  26. frame.setVisible(true);
  27. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28. }
  29.  
  30. public static BufferedImage toGray(BufferedImage buff){
  31.  
  32. WritableRaster wr = buff.getRaster();
  33. int width = buff.getWidth();
  34. int height = buff.getHeight();
  35.  
  36. int sum=0;
  37.  
  38. for(int i=0; i<width; i++)
  39. for(int j=0; j<height; j++ ){
  40.  
  41. if( wr.getNumBands() > 1 ){
  42. int R = wr.getSample(i, j, 0);
  43. int G = wr.getSample(i, j, 1);
  44. int B = wr.getSample(i, j, 2);
  45.  
  46. int I = (int)(0.3*R + 0.59*G + 0.11*B);
  47.  
  48. wr.setSample(i, j, 0, I);
  49. wr.setSample(i, j, 1, I);
  50. wr.setSample(i, j, 2, I);
  51. }
  52.  
  53. sum += wr.getSample(i, j, 0);
  54.  
  55. }
  56.  
  57. System.out.println("mean : "+sum/(width*height));
  58.  
  59. return buff;
  60. }
  61.  
  62. public static double STD(BufferedImage buff){
  63. int numArray[] = new int[buff.getWidth()* buff.getHeight()];
  64.  
  65. WritableRaster wr = buff.getRaster();
  66. wr.getSamples(0, 0, buff.getWidth(), buff.getHeight(), 0, numArray);
  67.  
  68. double sum=0.0;
  69. double sd = 0.0;
  70. int length = numArray.length;
  71.  
  72. for(double num: numArray)
  73. sum += num;
  74.  
  75. double mean = sum/length;
  76. System.out.println("mean: "+mean);
  77. for(double num: numArray){
  78. sd += Math.pow(num - mean, 2);
  79. }
  80.  
  81. return Math.sqrt(sd/(length-1));
  82. }
  83. public static void main(String[] args) throws Exception {
  84. // TODO Auto-generated method stub
  85. String file="C:\\download\\test_035.jpg";
  86. BufferedImage img=ImageIO.read(new File(file));
  87.  
  88. showImage(img,"Color");
  89.  
  90. //showImage(toGray(img),"Gray");
  91. double sd = STD(toGray(img));
  92. System.out.println("sd: "+sd);
  93. }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement