From 4bb2ea085ed74203062f04e19b6d7a571387f0cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Miko=C5=82ajczyk?= Date: Thu, 26 Sep 2024 17:12:44 +0200 Subject: [PATCH] Bring grayscale circuit from vimz --- circuit/grayscale_step.circom | 97 ++++++++++++++++++++ circuit/package.json | 9 ++ circuit/utils/pixels.circom | 153 ++++++++++++++++++++++++++++++++ circuit/utils/row_hasher.circom | 30 +++++++ 4 files changed, 289 insertions(+) create mode 100644 circuit/grayscale_step.circom create mode 100644 circuit/package.json create mode 100644 circuit/utils/pixels.circom create mode 100644 circuit/utils/row_hasher.circom 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