{"id":19362743,"url":"https://github.com/soumyasen1809/rustyimageprocessor","last_synced_at":"2026-06-17T19:02:25.920Z","repository":{"id":254611100,"uuid":"847015090","full_name":"soumyasen1809/RustyImageProcessor","owner":"soumyasen1809","description":"Basic Image Processing Library in Rust","archived":false,"fork":false,"pushed_at":"2024-09-20T08:51:21.000Z","size":188,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-16T19:20:44.630Z","etag":null,"topics":["asynchronous-programming","convolution","image-processing","parallel-processing","rayon","rust","tokio-rs"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/soumyasen1809.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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-08-24T15:52:59.000Z","updated_at":"2024-09-04T07:25:34.000Z","dependencies_parsed_at":"2025-01-08T07:16:08.317Z","dependency_job_id":null,"html_url":"https://github.com/soumyasen1809/RustyImageProcessor","commit_stats":null,"previous_names":["soumyasen1809/rustyimageprocessor"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/soumyasen1809/RustyImageProcessor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soumyasen1809%2FRustyImageProcessor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soumyasen1809%2FRustyImageProcessor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soumyasen1809%2FRustyImageProcessor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soumyasen1809%2FRustyImageProcessor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soumyasen1809","download_url":"https://codeload.github.com/soumyasen1809/RustyImageProcessor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soumyasen1809%2FRustyImageProcessor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34461618,"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-06-17T02:00:05.408Z","response_time":127,"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":["asynchronous-programming","convolution","image-processing","parallel-processing","rayon","rust","tokio-rs"],"created_at":"2024-11-10T07:30:24.264Z","updated_at":"2026-06-17T19:02:25.905Z","avatar_url":"https://github.com/soumyasen1809.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Image Processing Library\n\n## Overview\nImplementation of common image processing algorithms optimized for performance using the `Rayon` library.\nThe library focuses on modifying images, such as resizing, cropping, rotating, filtering, or applying effects.\nIt supports various image formats like JPEG, PNG.\nIt tries to follow a well-structured design that allows for easy extension and customization.\n\n```\n\nimage_processor/\n├── Cargo.toml\n├── src/\n│   ├── main.rs              // Entry point for the binary\n│   ├── lib.rs               // Main library file\n│   ├── core/\n│   │   ├── image.rs         // Image data structure\n│   │   ├── pixel.rs         // Pixel data structure\n│   │   └── \u003c...\u003e.rs         // Other modules\n│   ├── filters/\n│   │   ├── blur.rs          // Gaussian blur, etc.\n│   │   ├── sharpen.rs\n│   │   ├── edge_detection.rs // Outline, Sobel, etc.\n│   │   └── \u003c...\u003e.rs          // Other modules\n│   ├── transformations/\n│   │   ├── resize.rs\n│   │   ├── rotate.rs         // Flip operations\n│   │   ├── crop.rs\n│   │   └── \u003c...\u003e.rs          // Other modules\n│   └── utils/\n│       ├── color_space_converter.rs // RGB, HSV, etc.\n│       ├── image_io.rs         // File I/O\n│       ├── image_statistics.rs // Histogram, etc.\n│       └── \u003c...\u003e.rs            // Other modules\n└── tests/\n    ├── image_tests.rs          // Integration tests for images\n    ├── filter_tests.rs         // Integration tests for filters\n    └── transformation_tests.rs // Integration tests for transformations\n\n```\n\n## Explanation:\n\n- Cargo.toml: This file contains metadata about your project, including dependencies and version information.\n- src: This directory contains your source code.\n- image.rs: Defines the Image struct and related methods.\n- pixel.rs: Defines the Pixel struct.\n- filters: Contains modules for different filters.\n- transformations: Contains modules for different transformations.\n- utils: Contains utility functions and classes.\n- lib.rs: The main library file that defines the public API.\n- tests: Contains test cases for your library.\n\n*lib.rs*\n```rust\n\n// Inline Module Declarations\n\npub mod core {\n    pub mod image;\n    pub mod pixel;\n    pub mod ...\n}\n\npub mod filters {\n    pub mod blur;\n    pub mod edge_detection;\n    pub mod filtering_operations;\n    pub mod ...\n}\n\npub mod transformations {\n    pub mod crop;\n    pub mod transformation_operations;\n    pub mod ...\n}\n\npub mod utils {\n    pub mod color_space_converter;\n    pub mod image_io;\n    pub mod ...\n}\n\n\n```\n\n*main.rs*\n```rust\n\nuse image_processing_lib::Image;\n\nfn main() {\n    // Read an existing image\n    let image_read = image_reader(PATH);\n\n    // Apply image processing operations\n    let transform_operations = vec![\n        TransformationOperations::Rotate(RotatingOperations::RotateVertical),\n    ];\n    let flipped_image =\n        TransformationOperations::chain_operations(\u0026image_read.unwrap(), transform_operations);\n\n    // Save the modified image\n    let image_write = image_writer(\u0026OUT_PATH, \u0026flipped_image);\n}\n\n```\n\nThis project structure provides a solid foundation for your image processing library, allowing you to organize your code in a logical and maintainable way.\nWhen designing classes for an image processing library in Rust, it's essential to consider the core concepts and operations involved. Here's a suggested structure:\n\n### Fundamental Classes:\n- Pixel: Represents a single pixel in the image. It should contain fields for the red, green, blue, and alpha channels.\n- Image: Represents the entire image. It should contain a 2D array of pixels, dimensions (width and height), and potentially metadata.\n\n### Image Processing Operations:\n- Filters: Abstract class representing various filters.\n- BlurFilter: Implements a blurring filter.\n- SharpenFilter: Implements a sharpening filter.\n- EdgeDetectionFilter: Implements an edge detection filter.\n\n### Transformations: Abstract class representing various transformations.\n- ResizeTransformation: Implements image resizing.\n- RotateTransformation: Implements image rotation.\n- CropTransformation: Implements image cropping.\n\n### Utility Classes:\n- ColorSpaceConverter: Converts images between different color spaces (e.g., RGB, HSV, CMYK).\n- ImageIO: Handles reading and writing images to different formats.\n- ImageStatistics: Calculates various image statistics (e.g., mean, variance, histogram).\n\n#### Image Statistics: Histogram\nIn an image statistics histogram, we plot the distribution of pixel intensity values.\nHere’s what that typically involves:\n\n- X-Axis (Horizontal): Represents the range of pixel intensity values. For a color image, each channel (red, green, blue) will have its own histogram with the same range.\n- Y-Axis (Vertical): Represents the frequency or count of pixels for each intensity value. This shows how many pixels in the image have a particular intensity.\n\n*Example*:\n- Color Image: For a color image, you typically have three histograms, one for each color channel (red, green, blue).\n\nFor example, a distribution like:\n```\n\n5       █  [80]\n6       ████  [200]\n7       █████████  [370]\n8       ██████████████  [606]\n9       █████████████████████  [863]\n10      ███████████████████████████  [1112]\n11      ██████████████████████████████  [1240]\n12      ██████████████████████████████  [1228]\n13      ███████████████████████████████  [1274]\n14      █████████████████████████████  [1205]\n15      ██████████████████████████  [1095]\n16      ████████████████████  [839]\n17      ███████████████  [643]\n18      ███████████  [470]\n19      ████████  [346]\n20      ███████  [295]\n21      ██████  [248]\n22      █████  [238]\n23      ████  [180]\n\n```\nrepresents the number of pixels with that intensity\n\n## Observations:\nRecommended Transformations:\n```rust\n\nTransformationOperations::Rotate(RotatingOperations::\u003cAny of your choice\u003e),\nTransformationOperations::Resize(ResizingOperations::BilinearInterpolation(\u003cAny dimensions desired\u003e)),\nFilteringOperations::GrayScale(GrayScaleAlgorithms::Luminosity),\nFilteringOperations::Smoothing(SmoothingKernelChoices::Gaussian),\nCroppingOperations::SimpleCrop(\u003cAny dimensions desired\u003e),\nFilteringOperations::EdgeDetecting(EdgeDetectingKernelChoices::Emboss),\nFilteringOperations::Sharpening(SharpeningKernelChoices::EdgeEnhancement),\nFilteringOperations::Morphological(MorphologicalOperations::Erode(MorphologicalKernelChoices::CrossKernel)),\nFilteringOperations::Morphological(MorphologicalOperations::Dialate(MorphologicalKernelChoices::DiamondKernel)),\nGamma Correction with value 0.5\n\n```\n\n\n\u003c!-- Check: https://github.com/mbrlabs/pixl/tree/master/src/pixl --\u003e\n\u003c!-- https://medium.com/@lahiru.19/a-guide-to-image-processing-from-scratch-7a6a413fb682 --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoumyasen1809%2Frustyimageprocessor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoumyasen1809%2Frustyimageprocessor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoumyasen1809%2Frustyimageprocessor/lists"}