diff --git a/src/App.svelte b/src/App.svelte
index cc252b4..0e0412e 100644
--- a/src/App.svelte
+++ b/src/App.svelte
@@ -7,6 +7,7 @@
let kernelWidth = 3;
let kernelHeight = 3;
let padding = 0;
+ let addPadding = true;
$: matrix =
matrixHeight > 0 && matrixWidth > 0
@@ -22,7 +23,7 @@
.map(() => Array(kernelWidth).fill(1))
: [[]];
- $: result = conv_2d(kernel, matrix, padding);
+ $: result = conv_2d(kernel, matrix, addPadding, padding);
function uniform_array(len, value) {
let arr = new Array(len);
@@ -31,7 +32,7 @@
return arr;
}
- function conv_2d(kernel, array, padding = 0) {
+ function conv_2d(kernel, array, addPadding, padding = 0) {
// source: https://stackoverflow.com/questions/64669531/2d-convolution-for-javascript-arrays
let result = uniform_array(array.length, uniform_array(array[0].length, 0));
let kRows = kernel.length;
@@ -59,6 +60,15 @@
}
}
}
+
+ if (!addPadding && kCenterX > 0 && kCenterY > 0)
+ result =
+ kRows >= rows || kCols >= cols
+ ? [[]]
+ : result
+ .slice(kCenterY, -kCenterY)
+ .map((r) => r.slice(kCenterX, -kCenterX));
+
return result;
}
@@ -84,7 +94,10 @@