Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- มี 2 class กับ RGB Function
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package image2d;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import javax.imageio.ImageIO;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.SwingUtilities;
- public class Image2D {
- static BufferedImage image;
- public static Color[][] convolution(double kernel[][], int wigth, int height, int sizeKernel, int kernelXY) {
- int r = 0, g = 0, b = 0;
- RGB c = new RGB();
- int pixels[][] = new int[wigth][height]; // contian a pixels
- Color output[][] = new Color[image.getWidth()][image.getHeight()]; // use to get result for calculation
- for (int i = 0; i < height; i++) {
- for (int j = 0; j < wigth; j++) {
- pixels[j][i] = image.getRGB(j, i); // get RGB
- // calculate image -------------------------------------------
- for (int k = 0; k < sizeKernel; k++) {
- int x = sizeKernel - 1 - k;
- for (int l = 0; l < sizeKernel; l++) {
- int y = sizeKernel - 1 - l;
- int xloc = i + (k - kernelXY);
- int yloc = j + (l - kernelXY);
- if (xloc >= 0 && xloc < i && yloc >= 0 && yloc < j) {
- r += c.red(pixels, xloc, yloc) * kernel[x][y]; // calculate a RED and call red method
- g += c.green(pixels, xloc, yloc) * kernel[x][y]; // calculate a GREEN and call green method
- b += c.blue(pixels, xloc, yloc) * kernel[x][y]; // calculate a BLUE and call blue method
- output[i][j] = new Color(r, g, b); // set RGB prepare to convert to image
- }
- }
- }
- }
- }
- return output;
- }
- public static Color[][] gaussianFillter(BufferedImage img) {
- double gaussian[][] = {
- {1, 2, 1},
- {2,4,2},
- {1, 2, 1}
- };
- int wight = img.getWidth();
- int heigth = img.getHeight();
- int kernelSize = gaussian.length;
- int kernelXY = kernelSize / 2;
- Color result[][] = new Color[wight][heigth];
- result = convolution(gaussian, wight, heigth, kernelSize, kernelXY);
- return result;
- }
- public static BufferedImage loadImage(String url) {
- try {
- image = ImageIO.read(new File(url));
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- return image;
- }
- private static void createAndShowGUI() {
- final JFrame frame = new JFrame("Show Result");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- final JPanel panel = new JPanel() {
- @Override
- protected void paintComponent(Graphics g) {
- Graphics g2 = g.create();
- g2.drawImage(image, 0, 0, null);
- g2.dispose();
- }
- @Override
- public Dimension getPreferredSize() {
- return new Dimension(image.getWidth(), image.getHeight());
- }
- };
- frame.add(panel);
- frame.pack();
- frame.setLocationRelativeTo(null);
- frame.setVisible(true);
- }
- public static void main(String[] args) {
- Image2D obj = new Image2D();
- String url = "E:\\งาน\\Java Project&Web\\Image2D\\src\\image2d\\test.jpg";
- // load image and call filter function
- try {
- loadImage(url);
- Color col[][] = gaussianFillter(image);
- for (int i = 0; i < image.getWidth(); i++) {
- for (int j = 0; j < image.getHeight(); j++) {
- System.out.println(col[i][j].getRed());
- System.out.println(col[i][j].getGreen());
- System.out.println(col[i][j].getBlue());
- }
- }
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- /*
- * *
- * try { SwingUtilities.invokeLater(new Runnable() {
- *
- * @Override public void run() {
- *
- * createAndShowGUI(); } }); } catch (Exception e) {
- * System.out.println(e.getMessage()); }
- */
- }
- }
- ------------------------------------- RDD GREEN BLUE Function------------------------------------
- public class RGB{
- public int red(int pi[][] , int x ,int y){
- int r = 0;
- r = (pi[x][y] >> 16) & 0xff;
- return r;
- }
- public int red(int pi[][] , int x ,int y){
- int g = 0;
- g = (pi[x][y] >> 8) & 0xff;
- return g;
- }
- public int red(int pi[][] , int x ,int y){
- int b = 0;
- b = (pi[x][y]) & 0xff;
- return b;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment