dither

package module
v0.0.0-...-7f9ddf5 Latest Latest
Warning

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

Go to latest
Published: Feb 15, 2021 License: MIT Imports: 9 Imported by: 5

README

dithergo

CI Go Reference license

Dithergo is a simple Go library implementing various dithering algorithm to produce halftone images. It supports color and monochrome image outputs.

The library implements the following dithering methods: Floyd Steinberg, Atkinson, Burkes, Stucki, Sierra-2, Sierra-3, Sierra-Lite. All of these algorithms have something in common: they diffuse the error in two dimensions, but they always push the error forward, never backward.

We can represent this with the following diagram:

         X   7   5 
 3   5   7   5   3
 1   3   5   3   1

       (1/48)

where X represent the current pixel processed. The fraction at the bottom represents the divisor for the error. Above is the the Floyd-Steinberg dithering algorithm which can be transposed into the following Go code:

ditherers = []dither.Dither{
	dither.Dither{
		"FloydSteinberg",
		dither.Settings{
			[][]float32{
				[]float32{ 0.0, 0.0, 0.0, 7.0 / 48.0, 5.0 / 48.0 },
				[]float32{ 3.0 / 48.0, 5.0 / 48.0, 7.0 / 48.0, 5.0 / 48.0, 3.0 / 48.0 },
				[]float32{ 1.0 / 48.0, 3.0 / 48.0, 5.0 / 48.0, 3.0 / 48.0, 1.0 / 48.0 },
			},
			float32(multiplier),
		},
	},
}

You can plug in any dithering algorithm, so the library can be further extended.

Installation

$ go get -u -v github.com/esimov/dithergo

Running

Type go run cmd/main.go --help to check all the supported commands. The library supports the following commands:

Usage of commands:
  -e string
    	Generates & exports the color and greyscale mode halftone images. 
	Options: 'all', 'color', 'mono' (default "all")
  -em float
    	Error multiplier (default 1.18)
  -o string
    	Output folder
  -t	Option to export the tresholded image (default true)

You can run all of the supported dithering algorithms at once, or you can run a specific one from the cmd directory.

Results:
Input

The below images are generated with the default options using Michelangelo's David statue as sample image.

Color Monochrome
Atkinson Atkinson
Burkes Burkes
Floyd-Steinberg Floyd-Steinberg
Sierra-2 Sierra-2
Sierra-3 Sierra-3
Sierra-Lite Sierra-Lite
Stucki Stucki

Author

License

Copyright © 2018 Endre Simo

This software is distributed under the MIT license found in the LICENSE file.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Process

func Process(ditherers []Dither)

Process parses the command line inputs and calls the defined dithering method

Types

type Dither

type Dither struct {
	Type string
	Settings
}

func (Dither) Color

func (dither Dither) Color(input image.Image, errorMultiplier float32) image.Image

func (Dither) Monochrome

func (dither Dither) Monochrome(input image.Image, errorMultiplier float32) image.Image

type Settings

type Settings struct {
	Filter [][]float32
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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