{"id":20703491,"url":"https://github.com/frederickroman/signature_verifier","last_synced_at":"2026-07-15T06:32:15.503Z","repository":{"id":112471950,"uuid":"195475965","full_name":"FrederickRoman/signature_verifier","owner":"FrederickRoman","description":"Signature verifier. It uses DCT to extract  the signature's features and then classifies them using SVM.","archived":false,"fork":false,"pushed_at":"2019-07-06T03:35:29.000Z","size":3883,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-30T19:40:39.776Z","etag":null,"topics":["dct","image-classification","image-processing","matlab","signal-processing","signature-verification","spectrogram","svm","svm-classifier"],"latest_commit_sha":null,"homepage":"","language":"MATLAB","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FrederickRoman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-07-05T23:07:10.000Z","updated_at":"2023-03-22T09:21:21.000Z","dependencies_parsed_at":"2023-05-15T06:30:14.441Z","dependency_job_id":null,"html_url":"https://github.com/FrederickRoman/signature_verifier","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/FrederickRoman/signature_verifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrederickRoman%2Fsignature_verifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrederickRoman%2Fsignature_verifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrederickRoman%2Fsignature_verifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrederickRoman%2Fsignature_verifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FrederickRoman","download_url":"https://codeload.github.com/FrederickRoman/signature_verifier/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrederickRoman%2Fsignature_verifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35494971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"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":["dct","image-classification","image-processing","matlab","signal-processing","signature-verification","spectrogram","svm","svm-classifier"],"created_at":"2024-11-17T01:08:12.381Z","updated_at":"2026-07-15T06:32:15.484Z","avatar_url":"https://github.com/FrederickRoman.png","language":"MATLAB","funding_links":[],"categories":[],"sub_categories":[],"readme":"# signature_verifier\nAccompanying code for signature verifier paper https://drive.google.com/open?id=1Wwn6fvrIwcTcaHXqtMNBB-nsAil3S00q\n\n## A few notes\n\nHandwriting is an important form of personal\nauthentication and authorization, and is used to certify\nimportant documents, including but not limited to:\npassports, visas, paychecks, etc. \n\nTherefore, this computer tool was developed to learn a\npersonís signature from sample pictures, and then classify\nfuture examples as either authentic or forged.\n\n## Prerequisites\n- MATLAB Version 7.10.0.499 (R2010a)  (Though any version from 2010 onwards will probably work)\n- SVM light Version: 6.02 \n\n## Instructions to run the code:\n\n1) Open in Matlab and navigate to parent folder of this document\n2) Include the entire project in the path \n\t- Right click on Signature_Verification_Project -\u003e Add to path -\u003e Selected Folders and Subfolders\n3) Open the Util folder\n4) Drag svm_classify.exe and svm_learn.exe to the Util folder\n5) All you need to do to run the code is to open one of the \"Main\" script and press the run button.\n    - Main_SVM.m - runs linear hard SVM with the best model found\n    - Main_knn_neighbor.m - runs knn using nearest neighbor for classification\n    - Main_knn_centroid.m - runs knn using centroid for classification\n(Optional) If you want to change the feature space from the default (pHash) to percetual Hash (average hash)\n              comment line 47 (the pHash line) and\n              uncomment line 46 (the perceptual hash line)\n           If later on you want to reverse this all you need to is to comment 46 and uncomment 47.\n\n## Results:\n\u003cdiv\u003e\n\t\u003cdiv style=\"display:flex; flex-direction:column;\"\u003e\n\t\u003cimg width=100% height=100% src=\"https://github.com/FrederickRoman/signature_verifier/blob/master/Real_Will_p4_im7.png\"\u003e\n\t\t\u003cdiv\u003eReal Signature from training data set\u003c/div\u003e\n\t\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdiv style=\"display:flex; flex-direction:row;\"\u003e\n\t\u003cimg width=\"100%\" height=\"100%\" src=\"https://github.com/FrederickRoman/signature_verifier/blob/master/DFFT%20heat%20map.JPG\"\u003e\n\tDCT (Discrete Cosine Transform) on a typical signature. The image energy scale of signatures shows greater frequency content in the lowest frequencies (top left corner), even more so than a typical image.\n\t\u003cdiv style=\"display:flex; flex-direction:column;\" \u003e \n\t\t\u003cimg  width=100% height=100% src=\"https://github.com/FrederickRoman/signature_verifier/blob/master/Reconstructed%20grayscale%20without%20pure%20DC%20using%20128%20freqs.png\"\u003e\n\t\t\u003cdiv \u003eReconstructed grayscale after filtering out less energetic frequencies \u003c/div\u003e\n\t\u003c/div\u003e\t\n\t\n\u003c/div\u003e\n\n\u003cdiv\u003e\n\t\u003cimg  width=\"100%\" height=\"100%\" src=\"https://github.com/FrederickRoman/signature_verifier/blob/master/signature%20verifier%20results.JPG\"\u003e\n\tSignature verifier results\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrederickroman%2Fsignature_verifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrederickroman%2Fsignature_verifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrederickroman%2Fsignature_verifier/lists"}