Convolve2 – Image Smoothing

   

C:\ece538\impro3>java Convolve2

test3.png

  0  23  46  69  93 116 139 162 186 209 232
  0  23  46  69  93 116 139 162 186 209 232
  0  23  49 155 225 229 191 165 186 209 232
  0  23 145 232 232 232 232 201 186 209 232
  0  23 223 232 232 232 232 230 186 209 232
  0  23 223 232 232 232 232 230 186 209 232
  0  23 145 232 232 232 232 201 186 209 232
  0  23  49 155 225 229 191 165 186 209 232
  0  23  46  69  93 116 139 162 186 209 232
  0  23  46  69  93 116 139 162 186 209 232
  0  23  46  69  93 116 139 162 186 209 232

convolution mask

  1   2   1
  2   4   2
  1   2   1

test3.png

  5  23  46  69  92 116 139 162 185 209 226
  5  23  51  88 121 141 152 165 185 209 226
  5  29  80 142 185 196 187 180 188 209 226
  5  46 129 199 226 228 218 201 195 209 226
  5  62 165 224 232 232 229 215 200 209 226
  5  62 165 224 232 232 229 215 200 209 226
  5  46 129 199 226 228 218 201 195 209 226
  5  29  80 142 185 196 187 180 188 209 226
  5  23  51  88 121 141 152 165 185 209 226
  5  23  46  69  92 116 139 162 185 209 226
  5  23  46  69  92 116 139 162 185 209 226


Convolve2.java

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene; 
import javafx.scene.image.Image;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

import java.util.List;
import java.awt.image.*;
import java.io.*;


public class Convolve2 extends Application {
 
     @Override public void start(Stage stage) {

	String file1 = "test3.png";
	List<String> args = getParameters().getRaw();
	String filename =  args.size()>0? args.get(0): file1;

	BufferedImage img = ImageOp.readImage(filename);
	int mag = 16;
	 showImage show1 = new showImage(ImageOp.replicate(img,mag),filename);
	 show1.setStage(stage);
	 stage.setX(100);
	 stage.setY(100);

	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(img);
	listImage.listGray(outp,filename);
	 showImage show2 = new showImage(ImageOp.replicate(outp,mag),"bipolar");
	 Stage stage2 = new Stage();
	 show2.setStage(stage2);
	 stage2.setX(140+stage.getWidth());
	 stage2.setY(100);		
		
    }

     public static void main(String[] args) {
         Application.launch(args);
     }
}


Maintained by John Loomis, updated Sat Mar 10 18:37:31 2018