{"id":18851950,"url":"https://github.com/colasgael/photo2drawing","last_synced_at":"2025-04-14T09:53:36.808Z","repository":{"id":94114419,"uuid":"170249804","full_name":"ColasGael/photo2drawing","owner":"ColasGael","description":" Automatic generation of pencil drawings from photos","archived":false,"fork":false,"pushed_at":"2019-06-11T21:11:34.000Z","size":134375,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T23:11:55.058Z","etag":null,"topics":["clustering","edge-detection","image-processing","image-to-image-translation"],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ColasGael.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}},"created_at":"2019-02-12T04:07:20.000Z","updated_at":"2022-10-22T21:52:06.000Z","dependencies_parsed_at":"2023-03-07T00:15:15.615Z","dependency_job_id":null,"html_url":"https://github.com/ColasGael/photo2drawing","commit_stats":{"total_commits":40,"total_committers":3,"mean_commits":"13.333333333333334","dds":0.55,"last_synced_commit":"9c918c73e1cbae00121f9fbb62b208be8a0f135a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ColasGael%2Fphoto2drawing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ColasGael%2Fphoto2drawing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ColasGael%2Fphoto2drawing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ColasGael%2Fphoto2drawing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ColasGael","download_url":"https://codeload.github.com/ColasGael/photo2drawing/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248860359,"owners_count":21173339,"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","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":["clustering","edge-detection","image-processing","image-to-image-translation"],"created_at":"2024-11-08T03:37:21.089Z","updated_at":"2025-04-14T09:53:36.774Z","avatar_url":"https://github.com/ColasGael.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# photo2drawing\nby Gael Colas, Hubert Teo and Andrew Deng, graduate students from Stanford University.\n\nThis is our final project for the EE368: \"Digital Image Processing\" class at Stanford (2019).\n\nGoal : Automatic generation of pencil color drawings from color photos.\n\nTo achieve this image translation task with build a pipeline. The pipeline is composed of 3 components: get a line sketch, get a colorization and blend/ apply the colors over the line sketch.\nTo get more details about our 'photo2drawing' pipeline, please refer to our final report 'ee368_final-report' located at the root.\n\n## Code structure\nFolder 'saliency-mask': experiment on using saliency maps to select regions of interest.\n\nFolder 'line-integral-convolution': Python code to compute Line Integral Convolution.\n - line_integral_convolution.m: Matlab implementation of LIC\n - lic.py: Python/OpenCV/Scipy implementation of LIC which is much faster than Matlab\n\nFolder 'baseline': gathers code for our 'baseline' pipeline.\n - line sketch generation: Canny Edge Detector\n - color generation: Clustering in the LAB-space\n \nFolder 'segment': modification of our baseline to select colors based on Region Segmentation.\n - line sketch generation: Canny Edge Detector\n - color generation: mean colors of extracted regions (Region Segmentation)\n\nFolder 'final-model': final 'photo2drawing' pipeline.\n - line sketch generation: Line Integral COnvolution\n - color generation: mean colors of extracted regions (Region Segmentation)\n\nFor these 3 pipelines, you can find the core code (.m files). \nWe also provided interactive notebooks that shows intermediate outputs of the pipelines.\n \nFolder 'images': gathers our different method's output result on our test set\n - subfolder 'raw': our test set images (sample data)\n - subfolder 'baseline': outputs of the 'baseline' pipeline. \n - subfolder 'segment': outputs of the 'segment' pipeline.\n - subfolder 'saliency-map': saliency map outputs on the test images.\n - subfolder 'lic': line integral convolution on the test images.\n - subfolder 'final-model': outputs of the 'final-model' pipeline.\n - subfolder 'ps_\u003cfilter_name\u003e': outputs of applying Adobe Photoshop filter \u003cfilter_name\u003e on the test images. (To allow for quality comparison)\n\n## Run code\n\nFor an image imported in Matlab as an RGB image: 'im\\_rgb = im2double(imread('\u003cim_path\u003e'))'\n\nFor each of the 3 pipelines (see overhead description), you can run the pipeline on it in 2 different ways:\n - apply pipeline with tuned hyperparameters\nSyntax: '\u003cpipeline_name\u003e\\_hp(im_rgb)'\n - launch a GUI for real-time customization along predefined modification axes\nSyntax: 'gui_\u003cpipeline_name\u003e(im_path)'\n \n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolasgael%2Fphoto2drawing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcolasgael%2Fphoto2drawing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolasgael%2Fphoto2drawing/lists"}