diff --git a/circuit/grayscale_step.circom b/circuit/grayscale_step.circom new file mode 100644 index 0000000..fc3bff6 --- /dev/null +++ b/circuit/grayscale_step.circom @@ -0,0 +1,97 @@ +pragma circom 2.0.0; + +include "utils/row_hasher.circom"; +include "utils/pixels.circom"; +include "node_modules/circomlib/circuits/bitify.circom"; + + +template GrayscaleChecker(n) { + signal input orig[n][3]; + signal input gray[n]; + + signal output n_check; + + component lt[n][2]; + + for (var i = 0; i < n; i++) { + var inter = 299 * orig[i][0] + 587 * orig[i][1] + 114 * orig[i][2]; + + lt[i][0] = LessEqThan(18); + lt[i][1] = LessEqThan(18); + + lt[i][0].in[1] <== 1000; + lt[i][0].in[0] <== inter - 1000 * gray[i]; + lt[i][0].out === 1; + + lt[i][1].in[1] <== 1000; + lt[i][1].in[0] <== 1000 * gray[i] - inter; + lt[i][1].out === 1; + } + n_check <== n; +} + +template GrayScale(width){ + + signal input original[width]; + signal input transformed[width]; + + component decompressor[width]; + component decompressor_grey[width]; + component greychecker[width]; + + for (var j=0; j