Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void convolve(int[] pixels, int offset, int stride, int x, int y, int width, int height, int[][] matrix, int parts) {
- int index = offset + x + (y*stride);
- for (int j = 0; j < height; j++, index += stride) {
- for (int k = 0; k < width; k++) {
- int pos = index + k;
- pixels[pos] = convolve(pixels,stride,pos, matrix, parts);
- }
- }
- }
- private static int crimp(int color) {
- return (color >= 0xFF) ? 0xFF : (color < 0) ? 0 : color;
- }
- private static int convolve(int[] pixels, int stride, int index, int[][] matrix, int parts) {
- int redSum = 0;
- int greenSum = 0;
- int blueSum = 0;
- int pixel, factor;
- for (int j = 0, m = matrix.length; j < m; j++, index+=stride) {
- for (int k = 0, n = matrix[j].length; k < n; k++) {
- pixel = pixels[index + k];
- factor = matrix[j][k];
- redSum += factor * ((pixel >> 16) & 0xFF);
- greenSum += factor * ((pixel >> 8) & 0xFF);
- blueSum += factor * ((pixel) & 0xFF);
- }
- }
- return 0xFF000000 | ((crimp(redSum / parts) << 16) | (crimp(greenSum / parts) << 8) | (crimp(blueSum / parts)));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement