mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-11 19:00:00 +01:00
51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
var _ = require('lodash');
|
|
const pixelSetter = require('../../util/pixelSetter.js');
|
|
|
|
module.exports = exports = function(pixels, constantFactor, kernelValues, texMode) {
|
|
let kernel = kernelGenerator(constantFactor, kernelValues),
|
|
pixs = {
|
|
r: [],
|
|
g: [],
|
|
b: [],
|
|
};
|
|
|
|
for (let y = 0; y < pixels.shape[1]; y++){
|
|
pixs.r.push([]);
|
|
pixs.g.push([]);
|
|
pixs.b.push([]);
|
|
|
|
for (let x = 0; x < pixels.shape[0]; x++){
|
|
pixs.r[y].push(pixels.get(x, y, 0));
|
|
pixs.g[y].push(pixels.get(x, y, 1));
|
|
pixs.b[y].push(pixels.get(x, y, 2));
|
|
}
|
|
}
|
|
|
|
const convolve = require('../_nomodule/gpuUtils').convolve;
|
|
const conPix = convolve([pixs.r, pixs.g, pixs.b], kernel, (pixels.shape[0] * pixels.shape[1]) < 400000 ? true : false);
|
|
|
|
for (let y = 0; y < pixels.shape[1]; y++){
|
|
for (let x = 0; x < pixels.shape[0]; x++){
|
|
var value = [Math.max(0, Math.min(conPix[0][y][x], 255)), Math.max(0, Math.min(conPix[1][y][x], 255)), Math.max(0, Math.min(conPix[2][y][x], 255))];
|
|
pixelSetter(x, y, value, pixels);
|
|
}
|
|
}
|
|
|
|
return pixels;
|
|
};
|
|
function kernelGenerator(constantFactor, kernelValues) {
|
|
kernelValues = kernelValues.split(' ');
|
|
for (i = 0; i < 9; i++) {
|
|
kernelValues[i] = Number(kernelValues[i]) * constantFactor;
|
|
}
|
|
let k = 0;
|
|
let arr = [];
|
|
for (y = 0; y < 3; y++) {
|
|
arr.push([]);
|
|
for (x = 0; x < 3; x++) {
|
|
arr[y].push(kernelValues[k]);
|
|
k += 1;
|
|
}
|
|
}
|
|
return arr;
|
|
} |