bild

module
v0.0.0-...-358a119 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 25, 2020 License: MIT

README

bild

bild logo

MIT License GoDoc Build Status Go Report Card

A collection of parallel image processing algorithms in pure Go.

The aim of this project is simplicity in use and development over high performance, but most algorithms are designed to be efficient and make use of parallelism when available. It is based on standard Go packages to reduce dependency use and development abstractions.

Notice: This package is under heavy development and the API might change at any time until a 1.0 version is reached.

Documentation

http://godoc.org/github.com/anthonynsimon/bild

Install

bild requires Go version 1.4 or greater.

go get -u github.com/anthonynsimon/bild/...

Notice the '...' at the end, this is to signify that you want all the packages on the repo. In your code, simply import the specific package that you want to use (see example below).

Basic example:

package main

import (
	"github.com/anthonynsimon/bild/effect"
	"github.com/anthonynsimon/bild/imgio"
	"github.com/anthonynsimon/bild/transform"
)

func main() {
	img, err := imgio.Open("filename.jpg")
	if err != nil {
		panic(err)
	}

	inverted := effect.Invert(img)
	resized := transform.Resize(inverted, 800, 800, transform.Linear)
	rotated := transform.Rotate(resized, 45, nil)

	if err := imgio.Save("filename", rotated, imgio.PNG); err != nil {
		panic(err)
	}
}

Output examples

Adjustment

import "github.com/anthonynsimon/bild/adjust"
Brightness
result := adjust.Brightness(img, 0.25)

example

Contrast
result := adjust.Contrast(img, -0.5)

example

Gamma
result := adjust.Gamma(img, 2.2)

example

Hue
result := adjust.Hue(img, -42)

example

Saturation
result := adjust.Saturation(img, 0.5)

example

Blend modes

import "github.com/anthonynsimon/bild/blend"

result := blend.Multiply(bg, fg)
Add Color Burn Color Dodge
Darken Difference Divide
Exclusion Lighten Linear Burn
Linear Light Multiply Normal
Opacity Overlay Screen
Soft Light Subtract

Blur

import "github.com/anthonynsimon/bild/blur"
Box Blur
result := blur.Box(img, 3.0)

example

Gaussian Blur
result := blur.Gaussian(img, 3.0)

example

Channel

import "github.com/anthonynsimon/bild/channel"
Extract Channel
result := channel.Extract(img, channel.Alpha)

example

Effect

import "github.com/anthonynsimon/bild/effect"
Dilate
result := effect.Dilate(img, 3)

example

Edge Detection
result := effect.EdgeDetection(img, 1.0)

example

Emboss
result := effect.Emboss(img)

example

Erode
result := effect.Erode(img, 3)

example

Grayscale
result := effect.Grayscale(img)

example

Invert
result := effect.Invert(img)

example

Median
result := effect.Median(img, 10.0)

example

Sepia
result := effect.Sepia(img)

example

Sharpen
result := effect.Sharpen(img)

example

Sobel
result := effect.Sobel(img)

example

Unsharp Mask
result := effect.UnsharpMask(img, 0.6, 1.2)

example

Histogram

import "github.com/anthonynsimon/bild/histogram"
RGBA Histogram
hist := histogram.NewRGBAHistogram(img)
result := hist.Image()

example

Noise

import "github.com/anthonynsimon/bild/noise"
Uniform colored
result := noise.Generate(280, 280, &noise.Options{Monochrome: false, NoiseFn: noise.Uniform})

example

Binary monochrome
result := noise.Generate(280, 280, &noise.Options{Monochrome: true, NoiseFn: noise.Binary})

example

Gaussian monochrome
result := noise.Generate(280, 280, &noise.Options{Monochrome: true, NoiseFn: noise.Gaussian})

example

Paint

import "github.com/anthonynsimon/bild/paint"
Flood Fill
// Fuzz is the percentage of maximum color distance that is tolerated
result := paint.FloodFill(img, image.Point{240, 0}, color.RGBA{255, 0, 0, 255}, 15)

example

Segmentation

import "github.com/anthonynsimon/bild/segment"
Threshold
result := segment.Threshold(img, 128)

example

Transform

import "github.com/anthonynsimon/bild/transform"
Crop
// Source image is 280x280
result := transform.Crop(img, image.Rect(70,70,210,210))

example

FlipH
result := transform.FlipH(img)

example

FlipV
result := transform.FlipV(img)

example

Resize Resampling Filters
result := transform.Resize(img, 280, 280, transform.Linear)
Nearest Neighbor Linear Gaussian
Mitchell Netravali Catmull Rom Lanczos
Rotate
// Options set to nil will use defaults (ResizeBounds set to false, Pivot at center)
result := transform.Rotate(img, -45.0, nil)

example

// If ResizeBounds is set to true, the full rotation bounding area is used
result := transform.Rotate(img, -45.0, &transform.RotationOptions{ResizeBounds: true})

example

// Pivot coordinates are set from the top-left corner
// Notice ResizeBounds being set to default (false)
result := transform.Rotate(img, -45.0, &transform.RotationOptions{Pivot: &image.Point{0, 0}})

example

Shear Horizontal
result := transform.ShearH(img, 30)

example

Shear Vertical
result := transform.ShearV(img, 30)

example

Translate
result := transform.Translate(img, 80, 0)

example

License

This project is licensed under the MIT license. Please read the LICENSE file.

Contribute

Want to hack on the project? Any kind of contribution is welcome!
Simply follow the next steps:

  • Fork the project.
  • Create a new branch.
  • Make your changes and write tests when practical.
  • Commit your changes to the new branch.
  • Send a pull request, it will be reviewed shortly.

In case you want to add a feature, please create a new issue and briefly explain what the feature would consist of. For bugs or requests, before creating an issue please check if one has already been created for it.

Directories

Path Synopsis
Package adjust provides basic color correction functions.
Package adjust provides basic color correction functions.
Package blend provides common image blending modes.
Package blend provides common image blending modes.
Package blur provides image blurring functions.
Package blur provides image blurring functions.
Package channel provides image channel separation and manipulation functions.
Package channel provides image channel separation and manipulation functions.
Package clone provides image cloning function.
Package clone provides image cloning function.
Package convolution provides the functionality to create and apply a kernel to an image.
Package convolution provides the functionality to create and apply a kernel to an image.
Package effect provides the functionality to manipulate images to achieve various looks.
Package effect provides the functionality to manipulate images to achieve various looks.
Package fcolor provides a basic RGBAF64 color type.
Package fcolor provides a basic RGBAF64 color type.
Package histogram provides basic histogram types and functions to analyze RGBA images.
Package histogram provides basic histogram types and functions to analyze RGBA images.
Package imgio provides basic image file input/output.
Package imgio provides basic image file input/output.
math
f64
Package f64 provides helper functions for the float64 type.
Package f64 provides helper functions for the float64 type.
integer
Package integer provides helper functions for the integer type.
Package integer provides helper functions for the integer type.
Package noise provides functions to generate various types of image noise.
Package noise provides functions to generate various types of image noise.
Package paint provides functions to edit a group of pixels on an image.
Package paint provides functions to edit a group of pixels on an image.
Package parallel provides helper functions for the dispatching of parallel jobs.
Package parallel provides helper functions for the dispatching of parallel jobs.
Package segment provides basic image segmentation and clusterring methods.
Package segment provides basic image segmentation and clusterring methods.
Package transform provides basic image transformation functions, such as resizing, rotation and flipping.
Package transform provides basic image transformation functions, such as resizing, rotation and flipping.
Package util provides various helper functions for the package bild.
Package util provides various helper functions for the package bild.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL