2018년 7월 8일 일요일

[Java] Image Processing with ImageJ


Download: ij152.zip


1. Image Create and Save
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public static void createJpegImage(int width, int height) {
    ImagePlus imp = IJ.createImage("created.jpg", "jpg", width, height, 32);
    ImageProcessor ip = imp.getProcessor();
    ip.setColor(Color.BLUE);
    ip.setLineWidth(4);
    ip.drawRect(10, 10, imp.getWidth() - 20, imp.getHeight() - 20); 
    IJ.save(imp, "D:/created.jpg");
    /* extension: 
     * ".tif", ".jpg", ".gif", ".zip", ".raw", ".avi", ".bmp",
     * ".fits", ".pgm", ".png", ".lut", ".roi", ".txt"
     */
    //imp.show();
}

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public static void createJpegImage2(int width, int height) {
    ImagePlus imp = IJ.createImage("created.jpg", "jpg", width, height, 32);
    ImageProcessor ip = imp.getProcessor();
    ip.setColor(Color.BLUE);
    ip.setLineWidth(4);
    ip.drawRect(10, 10, imp.getWidth() - 20, imp.getHeight() - 20); 
    IJ.saveAs(imp, "jpeg","D:/created.jpg");
    /* type:
     * "tiff", "jpeg", "gif", "zip", "raw", "avi", "bmp", "fits", "pgm", 
     * "png", "text image", "lut", "text"
     */
}


Output: D:\created.jpg



2. Image Load and Convert To Gray Scale
1
2
3
4
5
6
7
public static void convertToGray() {
    ImagePlus ip = IJ.openImage("D:/lena.png");
    ImageConverter ic = new ImageConverter(ip);
    FileSaver fs = new FileSaver(ip);
    ic.convertToGray8();
    fs.saveAsJpeg("D:/lena_gray.jpg");
}

Input: lena.png


Output: lena_gray.jpg



3. Image Convert to Jpeg
1
2
3
4
5
6
7
public static void convertToJpeg(int quality) {
    ImagePlus ip = IJ.openImage("D:/lena.png");
    FileSaver fs = new FileSaver(ip);
    FileSaver.setJpegQuality(quality);
    FileSaver.getJpegQuality();
    fs.saveAsJpeg("D:/lena.jpg");
}


4. Image Resize

4.1 ImagResize by Width (with the aspect ratio maintained)
1
2
3
4
5
6
7
8
public static void resizeImage() {
    ImagePlus imp = IJ.openImage("D:/lena.png");
    ImageProcessor ip = imp.getProcessor();
    ip = ip.resize(imp.getWidth()/2);
    imp.setProcessor(ip);
    FileSaver fs = new FileSaver(imp);
    fs.saveAsPng("D:/lena_half.png");
}


4.2 Image Resize by Width and Height
1
2
3
4
5
6
7
public static void resizeImage2() {
    ImagePlus imp = IJ.openImage("D:/lena.png");
    ImageProcessor ip = imp.getProcessor();
    ip = ip.resize(imp.getWidth(),imp.getHeight()/2);
    imp.setProcessor(ip);
    IJ.save(imp,"D:/lena_resized.png");
}

Output: lena_resized.png



4.3 Image Rescale
1
2
3
4
5
6
public static void rescaleImage() {
    ImagePlus imp = IJ.openImage("D:/lena.png");
    ImageProcessor ip = imp.getProcessor();
    ip.scale(1.0,0.5); //xScale, yScale
    IJ.save(imp,"D:/lena_rescaled.png");
}

Output: lena_rescaled.png (image size is not changed)



5. Image Crop
1
2
3
4
5
6
7
8
9
public static void cropImage() {
    ImagePlus imp = IJ.openImage("D:/lena.png");
    ImageProcessor ip = imp.getProcessor();
    ip.setRoi(0, 0, imp.getWidth()/2, imp.getHeight()/2); //x, y, w, h
    ip = ip.crop();
    imp.setProcessor(ip);
    FileSaver fs = new FileSaver(imp);
    fs.saveAsPng("D:/lena_crop.png");
}

Output: lena_crop.jpg



6. Image Smooth
1
2
3
4
5
6
7
public static void smoothImage() {
    ImagePlus imp = IJ.openImage("D:/lena.png");
    for( int i=0; i < 10; i++ ) 
        imp.getProcessor().smooth();
    FileSaver fs = new FileSaver(imp);
    fs.saveAsPng("D:/lena_smooth.png");
}

Input: lena.png


Output: lena_smooth.png




7. Image Rotate

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public static void rotateImage() {
    ImagePlus imp = IJ.openImage("D:/lena.png");
    ImageProcessor ip = imp.getProcessor();
    ImageProcessor ip_left = ip.rotateLeft();
    ImageProcessor ip_right = ip.rotateRight();
    imp.setProcessor(ip_left);
    IJ.save(imp,"D:/lena_left.png");
    imp.setProcessor(ip_right);
    IJ.save(imp,"D:/lena_right.png");
    ip.rotate(45);
    imp.setProcessor(ip);
    IJ.save(imp,"D:/lena_rotated.png");
}


Input: lena.png


Output: lena_left.png


Output: lena_right.png


Output: lena_rotated.png




8. Image Overlay
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
public static void overlayImage() {
    
    ImagePlus imp = new ImagePlus("D:/lena.png");
    BufferedImage bi = imp.getBufferedImage();
    
    ImagePlus imp2 = imp.duplicate();
    imp2.setProcessor(imp2.getProcessor().resize(imp2.getWidth()/2));
    new ImageConverter(imp2).convertToGray8();
    BufferedImage bi2 = imp2.getBufferedImage();
    
    Graphics2D g = bi.createGraphics();
    g.drawImage(bi2, 0, 0, null);
    ImagePlus imp3 = new ImagePlus("combined", bi);
    FileSaver fs = new FileSaver(imp3);
    fs.saveAsJpeg("D:/lena_overlay.jpg");       
}


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public static void overlayImage2() {
    
    ImagePlus imp = new ImagePlus("D:/lena.png");
    BufferedImage bi = imp.getBufferedImage();
    
    ImagePlus imp2 = imp.duplicate();
    imp2.setProcessor(imp2.getProcessor().resize(imp2.getWidth()/2));
    new ImageConverter(imp2).convertToGray8();
    BufferedImage bi2 = imp2.getBufferedImage();

    BufferedImage combined = new BufferedImage(imp.getWidth(), imp.getHeight(), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = combined.createGraphics();
    g.drawImage(bi, 0, 0, null);
    g.drawImage(bi2, 0, 0, null);
    ImagePlus imp3 = new ImagePlus("combined", combined);
    FileSaver fs = new FileSaver(imp3);
    fs.saveAsJpeg("D:/lena_overlay2.jpg");       
}


Input: lena.png

output: lena_overlay.png




9. Image Partial Edit
1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
public static void grayPartialImage() {
    ImagePlus imp = new ImagePlus("D:/lena.png");
    ImageProcessor ip = imp.getProcessor();
    BufferedImage bufferedImage = imp.getBufferedImage();
    for(int y=0; y < bufferedImage.getHeight()/2; y++) {
        for(int x=0; x < bufferedImage.getWidth()/2; x++) {
            Color color = new Color(bufferedImage.getRGB(x, y));
            int grayLevel = (color.getRed() + color.getGreen() + color.getBlue()) / 3;
            int r = grayLevel;
            int g = grayLevel;
            int b = grayLevel;
            int rgb = (r << 16) | (g << 8) | b;
            bufferedImage.setRGB(x, y, rgb);
        }
    }
    ImagePlus grayImg = new ImagePlus("gray", bufferedImage);
    FileSaver fs = new FileSaver(grayImg);
    fs.saveAsJpeg("D:/lena_partial.jpg");       
}

Output:: lena_partial.jpg





1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
public static void clearPartialImage() {
    ImagePlus imp = new ImagePlus("D:/lena.png");
    ImageProcessor ip = imp.getProcessor();
    BufferedImage bufferedImage = imp.getBufferedImage();
    for(int y=0; y < bufferedImage.getHeight()/2; y++) {
        for(int x=0; x < bufferedImage.getWidth()/2; x++) {
            int rgb = 0x00ffffff;
            bufferedImage.setRGB(x, y, rgb);
        }
    }
    ImagePlus grayImg = new ImagePlus("gray", bufferedImage);
    FileSaver fs = new FileSaver(grayImg);
    fs.saveAsJpeg("D:/lena_white.jpg");       
}

Output: lena_white.jpg












댓글 없음:

댓글 쓰기