cv::Mat LBSP::padMat(const cv::Mat& input, int padding) { cv::Mat padded_input; padded_input.create(input.rows + 2 * padding, input.cols + 2 * padding, input.type()); padded_input.setTo(cv::Scalar::all(0)); input.copyTo(padded_input(cv::Rect(padding, padding, input.cols, input.rows))); return padded_input; }
void LBSP::displayPatchXY(cv::Mat in, int upper_leftX, int upper_leftY, int patchSize, bool disp) { cv::Mat padded_input = padMat(in); std::cout << padded_input(cv::Rect(upper_leftX, upper_leftY, patchSize, patchSize)) << std::endl; if (disp) { cv::namedWindow("patch", CV_WINDOW_AUTOSIZE); cv::imshow("patch", in(cv::Rect(upper_leftX, upper_leftY, patchSize, patchSize))); } }
void HashFunction::sha3_hash(const uint64_t *input, int uint64_count, sha3_block_type &sha3_block) { #ifdef SEAL_DEBUG if (input == nullptr) { throw invalid_argument("input cannot be null"); } if (uint64_count < 0) { throw invalid_argument("uint64_count cannot be negative"); } #endif // Padding int padded_uint64_count = sha3_rate_uint64_count * ((uint64_count / sha3_rate_uint64_count) + 1); Pointer padded_input(global_variables::global_memory_pool->get_for_uint64_count(padded_uint64_count)); memcpy(padded_input.get(), input, uint64_count * bytes_per_uint64); for (int i = uint64_count; i < padded_uint64_count; i++) { padded_input[i] = 0; if (i == uint64_count) { padded_input[i] |= 0x6ULL; } if (i == padded_uint64_count - 1) { padded_input[i] |= 0x1ULL << 63; } } // Absorb sha3_state_type state; memset(state, 0, sha3_state_uint64_count * bytes_per_uint64); for (int i = 0; i < padded_uint64_count; i += sha3_rate_uint64_count) { sponge_absorb(padded_input.get() + i, state); } sha3_block = sha3_zero_block; sponge_squeeze(state, sha3_block); }