java code 2
-
Upload
ashutoshtiwari10 -
Category
Documents
-
view
214 -
download
0
description
Transcript of java code 2
![Page 1: java code 2](https://reader035.fdocuments.us/reader035/viewer/2022081817/5695d0421a28ab9b0291b14c/html5/thumbnails/1.jpg)
// Mike Scott// 2d array manipulation examples
//importimport java.awt.Color;
public class FilterExample{ /* *pre: image != null, image.length > 1, image[0].length > 1 * image is a rectangular matrix, neighberhoodSize > 0 *post: return a smoothed version of image */ public Color[][] smooth(Color[][] image, int neighberhoodSize) { //check precondition assert image != null && image.length > 1 && image[0].length > 1 && ( neighberhoodSize > 0 ) && rectangularMatrix( image ) : "Violation of precondition: smooth";
Color[][] result = new Color[image.length][image[0].length];
for(int row = 0; row < image.length; row++) { for(int col = 0; col < image[0].length; col++) { result[row][col] = aveOfNeighbors(image, row, col, neighberhoodSize); } }
return result; }
// helper method that determines the average color of a neighberhood // around a particular cell. private Color aveOfNeighbors(Color[][] image, int row, int col, int neighberhoodSize) { int numNeighbors = 0; int red = 0; int green = 0; int blue = 0;
for(int r = row - neighberhoodSize; r <= row + neighberhoodSize;r++) { for(int c = col - neighberhoodSize; c <= col + neighberhoodSize; c++) { if( inBounds( image, r, c ) ) { numNeighbors++; red += image[r][c].getRed(); green += image[r][c].getGreen(); blue += image[r][c].getBlue(); } } }
assert numNeighbors > 0; return new Color( red / numNeighbors, green / numNeighbors, blue/ numNeighbors ); }
//helper method to determine if given coordinates are in bounds private boolean inBounds(Color[][] image, int row, int col) { return (row >= 0) && (row <= image.length) && (col >= 0)
![Page 2: java code 2](https://reader035.fdocuments.us/reader035/viewer/2022081817/5695d0421a28ab9b0291b14c/html5/thumbnails/2.jpg)
&& (col < image[0].length); }
//private method to ensure mat is rectangular private boolean rectangularMatrix( Color[][] mat ) { boolean isRectangular = true; int row = 1; final int COLUMNS = mat[0].length;
while( isRectangular && row < mat.length ) { isRectangular = ( mat[row].length == COLUMNS ); row++; }
return isRectangular; }}