Convolve2 – Smoothing


convolution mask

  1   2   1
  2   4   2
  1   2   1


C:\ece538\2019\impro2>java Convolve2
spot.png

  0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0
  0   0   0 255 255 255 255   0   0   0
  0   0   0 255 255 255 255   0   0   0
  0   0   0 255 255 255 255   0   0   0
  0   0   0 255 255 255 255   0   0   0
  0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0

filtered

  0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0
  0   0  15  47  63  63  47  15   0   0
  0   0  47 143 191 191 143  47   0   0
  0   0  63 191 255 255 191  63   0   0
  0   0  63 191 255 255 191  63   0   0
  0   0  47 143 191 191 143  47   0   0
  0   0  15  47  63  63  47  15   0   0
  0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0

See Convolve.java


Convolve2.java

import java.awt.image.*;
import java.io.*;
import javax.swing.*;

public class Convolve2 {
 
    public static void main(String[] args) {
	String filename =  args.length>0? args[0]: "spot.png";

	int mag = 16;
	ImagePanel p1 = new ImagePanel(filename);
	p1.setMag(mag);
	 ImageFrame f1 = new ImageFrame(p1);
	 f1.setLocation(100,100);
	 f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	//listImage.listGray(img,filename);
	int mask[][] = { {1, 2, 1}, {2, 4, 2}, {1, 2, 1} };;
	Convolve c = new Convolve(mask);
	c.setScale(16);
	c.showMatrix(mask,"convolution mask");
	BufferedImage outp = c.doConvolve(f1.getImage());
	//listImage.listGray(outp,filename);
	ImagePanel p2 = new ImagePanel(outp,"smoothed");
	p2.setMag(mag);
	//p2.writeImage("smoothed.jpg");
	 ImageFrame f2 = new ImageFrame(p2);
	 f2.setLocation(140+f1.getWidth(),100);
	 f2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
    }
}


Maintained by John Loomis, updated Thu Mar 19 13:22:31 2020