{"id":16646469,"url":"https://github.com/mr2011/cauzin-softstrip-decoder","last_synced_at":"2025-08-18T08:05:34.330Z","repository":{"id":94211047,"uuid":"161038880","full_name":"MR2011/Cauzin-Softstrip-Decoder","owner":"MR2011","description":"Software decoder for the two-dimensional Softstrip bar code.","archived":false,"fork":false,"pushed_at":"2022-03-13T13:10:25.000Z","size":40743,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-08T02:40:15.578Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MR2011.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-09T12:50:15.000Z","updated_at":"2024-12-30T02:27:49.000Z","dependencies_parsed_at":"2023-07-27T06:15:17.174Z","dependency_job_id":null,"html_url":"https://github.com/MR2011/Cauzin-Softstrip-Decoder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MR2011/Cauzin-Softstrip-Decoder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MR2011%2FCauzin-Softstrip-Decoder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MR2011%2FCauzin-Softstrip-Decoder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MR2011%2FCauzin-Softstrip-Decoder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MR2011%2FCauzin-Softstrip-Decoder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MR2011","download_url":"https://codeload.github.com/MR2011/Cauzin-Softstrip-Decoder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MR2011%2FCauzin-Softstrip-Decoder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270962391,"owners_count":24675965,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T08:27:47.189Z","updated_at":"2025-08-18T08:05:34.303Z","avatar_url":"https://github.com/MR2011.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cauzin Softstrip Decoder\nThe Cauzin Softstrip is a two-dimensional bar code developed by Cauzin Systems. It was used to encode all kind of digital data such as software, text files or graphics. Unfortunately, the Cauzin Softstrip was not as successful as anticipated and disappeared a few years later after its release. \nIt is already difficult to obtain a working Softstrip Reader and it will probably be impossible in a few years. Therefore, a digital Softstrip decoder was created so people without access to an optical reader can decode the Cauzin Softstrip.\nFor a more detailed description about this project, please refer to my master's [thesis](https://stl.htwsaar.de/tr/STL-TR-2018-03.pdf).\n\n### Installation\n\nThis project requires [Python](https://www.python.org/) 3.6 to run.\n\nInstall the dependencies:\n\n```sh\n$ pip install -r requirements.txt\n```\nThe GUI can be started with:\n```sh\n$ python QtGui.py\n```\nHowever, it is recommended to extract Softstrips with an image manipulation program such as [Gimp](https://www.gimp.org/) and start the decoding with the command line:\n\n```sh\n$ python SoftstripDecoder.py Softstrips/icons/glyphicons-social-9-tumblr.png\n```\n### Configuration\n\nThe following configuration options exist\n\n| Option | Description |\n| ------ | ------ |\n| row_decoder | Choose 0 for the algorithmic row decoding approach and 1 for the CNN approach. |\n| row_extractor | Choose 0 for the algorithmic row decoding approach and 1 for the CNN approach. |\n| timeout | The decoding process will be stopped after N minutes. |\n\nIt is recommended to use the algorithmic row extractor and the CNN approach for the row decoding.\n**Important: the CNN row extractor does ONLY work with the CNN row decoder**\n\n## Training \n### Dataset\nThe generated Softstrips from DS1 are available [here](https://drive.google.com/file/d/1XY1yUkq9JUykQ-Iu2egdXcUK-MCb_8vb/view?usp=sharing)\n### Row Decoding\nIn order to generate training data for the row decoder CNN first run:\n```sh\n$ python nn/generate_trainings_data.py\n```\nThis will generate the rows with labeled dibits. Please inspect following files to see how the input data is structured:\n- textfiles/qwiksort1_reduced.txt\n- textfiles/qwiksort1_gray_rows.txt\n\nThe *reduced* file contains all rows as a simple text file. Each color is as a binary value represented. A black pixel is noted as **1** and a white pixels as **0**. The *gray_rows* file contains each row as an array with one byte **grayscale** values.\n\nIn the next step, the dibits can be extracted from the labeled rows:\n```sh\n$ python nn/extract_blocks.py\n```\n**Important: Please set the correct paths for the input and output data in both files.**\n\nOnce the training data is generated, the CNN can be trained:\n```sh\n$ python nn/train_cauzin_model.py\n```\n**Important: Please set the correct paths for the input and output data.**\n\n### Row Extraction\nThe training data can be generated with:\n```sh\n$ python nn/generate_coordinate_train_data.py\n```\n**Important: Please set the correct paths for the input and output data.**\nPlease inspect following files to see how the input data is structured:\n- textfiles/qwiksort1_rows_by_hand.txt\n- textfiles/qwiksort1_gray_matrix.txt\n\nThe file *qwiksort_rows_by_hand* contains the binary values of each row. Rows are separated from eatch other with an empty line. The file *qwiksort1_gray_matrix* contains the corresponding grayscale values.\n\nOnce the training data is generated, the CNN can be trained:\nThe training data can be generated with:\n```sh\n$ python nn/train_cauzin_row_model.py\n```\n**Important: Please set the correct paths for the input and output data.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmr2011%2Fcauzin-softstrip-decoder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmr2011%2Fcauzin-softstrip-decoder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmr2011%2Fcauzin-softstrip-decoder/lists"}