{"id":22802965,"url":"https://github.com/salamnocap/go-img-kernel","last_synced_at":"2025-04-30T21:54:00.747Z","repository":{"id":257826765,"uuid":"872316034","full_name":"salamnocap/go-img-kernel","owner":"salamnocap","description":"Go library for image processing","archived":false,"fork":false,"pushed_at":"2025-02-26T05:31:58.000Z","size":4306,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-30T21:53:56.895Z","etag":null,"topics":["convolution","image-processing","kernel"],"latest_commit_sha":null,"homepage":"","language":"Go","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/salamnocap.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":"2024-10-14T08:21:50.000Z","updated_at":"2025-02-26T05:32:01.000Z","dependencies_parsed_at":"2024-10-15T05:12:44.285Z","dependency_job_id":"2bd7ea92-9de2-48bf-9c56-08228b21ae67","html_url":"https://github.com/salamnocap/go-img-kernel","commit_stats":null,"previous_names":["salamnocap/go-img-kernel"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salamnocap%2Fgo-img-kernel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salamnocap%2Fgo-img-kernel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salamnocap%2Fgo-img-kernel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salamnocap%2Fgo-img-kernel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/salamnocap","download_url":"https://codeload.github.com/salamnocap/go-img-kernel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251789578,"owners_count":21644082,"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":["convolution","image-processing","kernel"],"created_at":"2024-12-12T09:07:57.214Z","updated_at":"2025-04-30T21:54:00.719Z","avatar_url":"https://github.com/salamnocap.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GO-IMG-KERNEL - [![Godoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://pkg.go.dev/github.com/salamnocap/go-img-kernel)\n**GO-IMG-KERNEL** is a Go library for image processing, \nleveraging convolutional operations to perform various transformations such as blurring, \nedge detection, binarization, and more. \n\nThis library aims to provide simple-to-use functions for handling images,\nwhether in RGB or grayscale formats.\n\n## Features\n\n- Image loading and saving in various formats (JPEG, PNG).\n- Support for RGB and grayscale images.\n- Common image transformations:\n  - Gaussian blur\n  - Edge detection\n  - Binarization\n  - Image rotation and reflection\n  - Horizontal transformation\n  - Sharpening\n\n## Installation\n    \n```bash\ngo get github.com/salamnocap/go-img-kernel\n```\n\n## Run Tests\n\n```bash\ngo test -v ./test\n```\n\n## Usage\n    \n```go\nimport (\n  \"github.com/salamnocap/go-img-kernel/utils\"\n  \"github.com/salamnocap/go-img-kernel/transformation\"\n)\n\nrgbImage, err := utils.LoadRGBImage(\n    \"../examples/input/castle_rgb.jpg\",\n) // Load RGB image\nif err != nil {\n    panic(err)\n}\nnewImage := transformation.BoxBlurRGB(rgbImage, 0, 3) // Apply box blur (0 - padding, 3 -stride)\nerr = utils.SaveImage(\n    newImage,\n    \"../examples/output/blurred.jpg\",\n    false,\n) // Save image\nif err != nil {\n    panic(err)\n}\n```\n\n## Custom Kernel\n\n```go\nimport (\n\t\"github.com/salamnocap/go-img-kernel/kernel\"\n    \"github.com/salamnocap/go-img-kernel/utils\"\n)\n\n// Custom kernel\ncustomKernel := kernel.NewKernel(\n\t3, // Kernel size\n    [][]float64{\n        {0, -1, 0},\n        {-1, 4, -1},\n        {0, -1, 0},\n    },\n)\n\ninputImage, err := utils.LoadRGBImage(\n    \"../examples/input/castle_rgb.jpg\",\n) // Load RGB image\nif err != nil {\n    panic(err)\n}\n\noutputImage := kernel.Convolve3D(inputImage, customKernel, 0, 1) // Apply custom kernel (0 - padding, 1 - stride)\nerr = utils.SaveImage(\n    newImage,\n    \"../examples/output/new_image.jpg\",\n    false, // if false, save as RGB image\n) // Save image\nif err != nil {\n\tpanic(err)\n}\n```\n\n## Examples\n\n| Transformation            |                                                                              Kernel Matrix                                                                               | Input Image                                             |                         Output Image                          |\n|:--------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------:|:-------------------------------------------------------------:|\n| Box Blur                  |     $`\\begin{bmatrix} \\frac{1}{9} \u0026 \\frac{1}{9} \u0026 \\frac{1}{9} \\\\ \\frac{1}{9} \u0026 \\frac{1}{9} \u0026 \\frac{1}{9} \\\\ \\frac{1}{9} \u0026 \\frac{1}{9} \u0026 \\frac{1}{9} \\end{bmatrix}`$      | ![castle_rgb.jpg](examples/input/castle_rgb.jpg)         |          ![blurred.jpg](examples/output/blurred.jpg)          |\n| Gaussian Blur             | $`\\begin{bmatrix} \\frac{1}{16} \u0026 \\frac{2}{16} \u0026 \\frac{1}{16} \\\\ \\frac{2}{16} \u0026 \\frac{4}{16} \u0026 \\frac{2}{16} \\\\ \\frac{1}{16} \u0026 \\frac{2}{16} \u0026 \\frac{1}{16} \\end{bmatrix}`$ | ![castle_rgb.jpg](examples/input/castle_rgb.jpg) | ![gaussian_blurred.jpg](examples/output/gaussian_blurred.jpg) |\n| Edge Detection            |                                                $`\\begin{bmatrix} 0 \u0026 -1 \u0026 0 \\\\ -1 \u0026 4 \u0026 -1 \\\\ 0 \u0026 -1 \u0026 0 \\end{bmatrix}`$                                                 | ![castle_rgb.jpg](examples/input/castle_rgb.jpg)         |        ![edge_detected.jpg](examples/output/edge.jpg)         |\n| Diagonal Edge Detection   |                                                 $`\\begin{bmatrix} 1 \u0026 0 \u0026 -1 \\\\ 0 \u0026 0 \u0026 0 \\\\ -1 \u0026 0 \u0026 1 \\end{bmatrix}`$                                                  | ![castle_rgb.jpg](examples/input/castle_rgb.jpg)         |        ![edge_detected.jpg](examples/output/edge.jpg)         |\n| Binarization              |                                                $`\\begin{bmatrix} 0 \u0026 -1 \u0026 0 \\\\ -1 \u0026 4 \u0026 -1 \\\\ 0 \u0026 -1 \u0026 0 \\end{bmatrix}`$                                                 | ![castle_rgb.jpg](examples/input/castle_rgb.jpg)         |         ![binarized.jpg](examples/output/binary.jpg)          |\n| Image Rotation (45°)      |                                                                                  $$-$$                                                                                   | ![castle_rgb.jpg](examples/input/castle_rgb.jpg) |         ![rotated.jpg](examples/output/rotation.jpg)          |\n| Image Reflection          |                                                  $`\\begin{bmatrix} -1 \u0026 0 \u0026 0 \\\\ 0 \u0026 1 \u0026 0 \\\\ 0 \u0026 0 \u0026 1 \\end{bmatrix}`$                                                  | ![castle_rgb.jpg](examples/input/castle_rgb.jpg)         |       ![reflected.jpg](examples/output/reflection.jpg)        |\n| Horizontal Transformation |                                            $`\\begin{bmatrix} -10 \u0026 10 \u0026 -10 \\\\ 10 \u0026 10 \u0026 10 \\\\ -10 \u0026 10 \u0026 -10 \\end{bmatrix}`$                                            | ![castle_rgb.jpg](examples/input/castle_rgb.jpg)         | ![horizontal_transformed.jpg](examples/output/horizontal.jpg) |\n| Ridge Detection           |                                              $`\\begin{bmatrix} -1 \u0026 -1 \u0026 -1 \\\\ -1 \u0026 8 \u0026 -1 \\\\ -1 \u0026 -1 \u0026 -1 \\end{bmatrix}`$                                               | ![castle_rgb.jpg](examples/input/castle_rgb.jpg)         |            ![ridge.jpg](examples/output/ridge.jpg)            |\n| Sharpening                |                                                $`\\begin{bmatrix} 0 \u0026 -1 \u0026 0 \\\\ -1 \u0026 5 \u0026 -1 \\\\ 0 \u0026 -1 \u0026 0 \\end{bmatrix}`$                                                 | ![castle_rgb.jpg](examples/input/castle_rgb.jpg)         |        ![sharpened.jpg](examples/output/sharpened.jpg)        |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalamnocap%2Fgo-img-kernel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsalamnocap%2Fgo-img-kernel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalamnocap%2Fgo-img-kernel/lists"}