{"id":20136832,"url":"https://github.com/notthestallion/image-compression-through-svd-factorization","last_synced_at":"2026-03-05T18:01:35.421Z","repository":{"id":154714859,"uuid":"623077834","full_name":"NotTheStallion/Image-Compression-through-SVD-Factorization","owner":"NotTheStallion","description":"The goal is to program an SVD-based image compression algorithm related to lossy compression methods like JPEG, which typically rely on the Discrete Cosine Transform (DCT), a transformation similar to discrete Fourier transform.","archived":false,"fork":false,"pushed_at":"2024-03-04T15:23:57.000Z","size":830,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-02T22:44:12.656Z","etag":null,"topics":["compression","compression-algorithm","image","image-processing"],"latest_commit_sha":null,"homepage":"","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NotTheStallion.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}},"created_at":"2023-04-03T16:43:36.000Z","updated_at":"2023-06-02T14:02:19.000Z","dependencies_parsed_at":"2024-03-04T17:32:52.540Z","dependency_job_id":null,"html_url":"https://github.com/NotTheStallion/Image-Compression-through-SVD-Factorization","commit_stats":null,"previous_names":["geekboy2/image-compression-through-svd-factorization","notthestallion/image-compression-through-svd-factorization"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NotTheStallion/Image-Compression-through-SVD-Factorization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotTheStallion%2FImage-Compression-through-SVD-Factorization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotTheStallion%2FImage-Compression-through-SVD-Factorization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotTheStallion%2FImage-Compression-through-SVD-Factorization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotTheStallion%2FImage-Compression-through-SVD-Factorization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NotTheStallion","download_url":"https://codeload.github.com/NotTheStallion/Image-Compression-through-SVD-Factorization/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotTheStallion%2FImage-Compression-through-SVD-Factorization/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30141278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T16:58:46.102Z","status":"ssl_error","status_checked_at":"2026-03-05T16:58:45.706Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["compression","compression-algorithm","image","image-processing"],"created_at":"2024-11-13T21:22:56.242Z","updated_at":"2026-03-05T18:01:35.213Z","avatar_url":"https://github.com/NotTheStallion.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dépôt Git IS104 (Projet n°3)\n\n## Organisation du dépôt\n\nLe code du projet se trouve dans le répertoire **src**. Pour chaque partie, il y a un code correspondant nommé au numéro de sa partie.\nPar exemple, le code de la partie 1 se trouve dans le fichier `part1.py`.\nOn y trouve aussi les différents fichiers de tests qui correspondent aux différentes parties.\nPar exemple, les tests pour la partie 1 sont dans le fichier `test1.py`. \n\nDans le répertoire **sections**, on peut trouver les différents fichiers latex correspondant aux différentes parties incluses dans le fichier `rapport.tex`.\n\n## Makefile\nLe **Makefile** dispose de plusieurs cibles, et permet en exécutant la commande `make test` de lancer des tests sur toutes les parties. \nLa commande `make` permet de générer le rapport, et pour obtenir des détails sur la compilation du rapport, il faut lancer la commande `make verbose`.\n\n## Partie 1 - Transformations de Householder\nEn exécutant `src/part1.py`, on effectue une comparaison du temps d'exécution de nos fonctions par rapport à des produits classiques de matrices classiques.\n\nLe fichier `src/test1.py` vérifie que ces fonctions donnent des résultats proches de ceux attendus, avec un écart `eps` réglable.\n\n## Partie 2 - Mise sous forme bidiagonale\nLe fichier `src/part2.py` dispose seulement de fonctions, et agit comme un module par rapport aux parties suivantes.\n\nPour les tests, sur le fichier `src/test2.py`, on teste notre fonction de bidiagonalisation sur des matrices variées, en vérifiant que le résultat est bien une matrice bidiagonale, et que le produit des matrices renvoyées est proche à la matrice de départ, avec un écart `eps` que l'on peut modifier.\n\n## Partie 3 - Transformations QR et SVD\nL'exécution du fichier `src/part3.py` entraîne la génération d'une figure montrant la vitesse de convergence de la méthode de diagonalisation de matrice à partir d'une matrice bidiagonale.\n\nEn exécutant `src/test3.py`, on effectue des vérifications sur cette méthode de diagonalisation, ainsi que notre décomposition QR et notre fonction de SVD. Pour chacun des cas, on vérifie que les matrices renvoyées ont bien les caractéristiques attendues (matrice orthogonale, triangulaire supérieure, diagonale, ...).\n\n## Partie 4 - Application de la SVD à la compression d'image\nCette partie utilise le fichier `res/part-4.png`, que l'on considère comme l'image _originale_. Exécuter ce fichier génère d'abord deux exemples de compression d'image utilisant la méthode SVD, en comparaison avec l'image originale.\nEnsuite, une figure montre les distances à l'image originale, avec une échelle logarithmique.\nEnfin, la dernière figure montre la taille du fichier en nombre de valeurs, par rapport au rang de la compression.\n\nEn ce qui concerne les tests, le fichier `src/test-4.py` vérifie que les images après compression sont bien proches des images compressées fournies.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotthestallion%2Fimage-compression-through-svd-factorization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotthestallion%2Fimage-compression-through-svd-factorization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotthestallion%2Fimage-compression-through-svd-factorization/lists"}