A C++ graphics compositing library.
See docs.md for documentation
- Color
- Invert
- Histogram
- Read on histogram equalization for new techniques of adjustment
- Hue correct
- Tonal correction
- Color balance (lift, gamma, gain)
- Saturation
- Exposure
- Gamma
- HSV adjustments
- RGB curves
- Catmull-Rom spline
- Eyedropper for black, white, gray levels
- Tone map
- White balance
- Eyedropper
- False color
- Mixing options
- Alpha over
- Separate colors (RGBA channels)
- Combine colors (RGBA channels)
- Color ramp
- Constant
- Linear
- Bézier
- B-Spline
- Read on De Boor's for possible optimization
- Filtering
- Color reduce
- 3-bit color
- 3-bit Floyd-Steinberg error diffusion
- 8-bit color
- 8-bit Floyd-Steinberg error diffusion
- 16-bit color
- 16-bit Floyd-Steinberg error diffusion
- 8/16-bit color quantization
- Blur
- Box
- Gaussian
- Bokeh
- Anti-aliasing
- Masking
- Vignette
- Color matrix
- Color reduce
- Transform
- Rotate
- Scale
- Nearest
- Bilinear
- Bicubic
- Fourier
- Edge
- HQX
- Mipmap
- Translate
- Crop
- Flip
- Lens distortion
- Misc.
- Frame
- Text overlay
- Procedural texture generation
- White noise
- (Improved) Perlin noise
- Brick
- Gradient
- Musgrave
- Simplex noise
- Voronoi
- Wave
- Drawing
- Lines (unuseful)
- Rectangles
- Support percentage of image
- Ellipse
- Documentation (on-going)
- Color ramp linear and b-spline interpolation shows weird red when using monotone control points
- Replace interpolation in code with dedicated function from
Interpolation
class - Bilinear scaling (
Image::preview_color_ramp
then scale to a large image viaImage::f_scale
withTwoDimInterp::Biliea
as interpolation method - Refactor
Adjustment
,Color
andFont
fromimage.h
- Standardize
Color
class function design - Optimize memory for
Image::perlin_noise
(overuse of array memory for gradient vectors) - Different interpolation methods for each channel for RGB curves
- Show area instead of line in RGB curve preview
- Show control points in RGB curve preview
- Single channel image support for rgb curves
- Merge preview of RGB curves to one image
- Replace retrieving and setting data with dedicated get and set functions from
Image
class - Test
Color::apply_adj_rgb
thoroughly for hue, saturation, value, lift, gamma, gain - Support separated channel images in
Image::HSV
- Color class HSV integration
- Demo images in
README.md
- Ensure uniformity of logic when using data from another image (first channel vs. average grayscale vs. separated channel image)
- Unnecessary memory use/leaks
- Rename
enum
to generalize for 1-D and 2-D interpolation methods
- Clean up code in
Image::false_color
function - Use
uint_t
andsize_t
where necessary - Edge bleeding in edge detection via
Image::edge()
function due to Fast Fourier transform limitations - Sobel edge detection gradient for single channel images
- Make makefile build/run more efficient
- Refactor
src/
and move library files intosrc/lib/