{'fraction_non_alphanumeric': 0.01958955223880597, 'fraction_numerical': 0.008395522388059701, 'mean_word_length': 4.647368421052631, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Streamed hough transform and line reconstruction on FPGA

The Hough transform is implemented in parallel using a stream processing architecture. First, a Canny-like edge detector is used to detect edge pixels. Then a gradient Hough transform accumulates the votes for a narrow range of angles about the edge orientation. A separate processor and memory block is used for each angle to enable one edge pixel to be accumulated per clock cycle. During vertical blanking, peaks are detected in parallel while resetting the accumulators for the next frame. To enable parallel reconstruction of an unlimited number of lines as the following frame is streamed, a ‘peak flag’ is used in the parameter space to indicate identified peaks. As the frame is streamed, transformed pixel coordinates are used to check this ‘peak flag’ for all angles in parallel. If any flag on the potential trace is set, then it is back-projected placing the current pixel on a reconstructed line. The system is easily able to operate on a 1024×768 image at 60 frames per second using a Cyclone V FPGA.