Skip to content

eugene-khyst/artistassistapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

166 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArtistAssistApp

TypeScript React Ant Design Vite npm

ArtistAssistApp logo

Overview

ArtistAssistApp, also known as Artist Assist App, is a Progressive Web App (PWA) that helps artists to mix colors from photos, analyze tonal values, outline photos, draw with grids, paint with limited palettes, and more.

ArtistAssistApp offers the following features:

  • Match any color from your photo or learn how to accurately mix it
  • Mix any colors of any brands in any proportions
  • Generate a color mixing chart from any subset of your colors to plan mixes without wasting paint
  • Automatically build a palette from a photo with the best matching color mixtures
  • Save & access your favorite color mixes instantly
  • Convert your photos into clean outlines, then trace them your way: print at any size on your home printer, turn your tablet or laptop into a light box (no printer needed), or overlay directly onto canvas, walls, or any surface with AR.
  • Add a grid over your reference photo for accurate, proportional drawing.
  • Analyze tonal values to improve contrast
  • Simplify photos by smoothing details
  • Mix harmonious colors with limited palettes
  • Get inspired by applying artistic styles to your photos
  • Adjust white balance and colors of photos of your paintings
  • Adjust perspective and geometry of photos of your paintings, with automatic detection of the painting's corners
  • Easily remove backgrounds from photos of your paintings
  • Rank your photos using a pairwise comparison
  • Sync your color sets across devices
  • Install the app on your device for offline access

Try it now at ArtistAssistApp.com

Getting Started

Implementation details

ArtistAssistApp doesn't depend on any math or color library and includes the implementation of the following:

  • sRGB to Oklab (WebGL)
  • sRGB to spectral reflectance
  • subtractive color mixing using empirical model based on the Kubelka-Munk theory
  • color temperature estimation: warm and cool colors
  • matrix operations
  • matrix inversion using LU decomposition
  • solving a system of linear algebraic equations using forward and backward substitution
  • the average color of the circular area of the image
  • calculation of color similarity by comparing spectral reflections (weighted geometric mean of angular similarity (cosine) and Euclidean distance)
  • sampling point detection via Chamfer 3-4 distance transform (finds the optimal point per color region)
  • greedy merging of sampling points by Oklab chroma and ΔE to select minimal, perceptually distinct palette entries
  • vector operations
  • WebGL multi-pass rendering
  • two-pass one-dimensional Gaussian blur (WebGL)
  • Sobel operator for edge detection (WebGL)
  • separable grayscale dilation (max morphology) for edge thickening (WebGL)
  • threshold filter based on perceived lightness (WebGL)
  • Otsu's method for automatic threshold selection in Oklab lightness (CPU)
  • Kuwahara blur filter (WebGL)
  • color match filter using Oklab Euclidean distance (WebGL)
  • color quantization (over-quantize by recursive bucket splitting, then merge closest in Oklab)
  • blue noise ordered dithering with a precomputed threshold texture
  • image resampling via bilinear, bicubic and Lanczos interpolation (WebGL)
  • adjusting white balance using the percentile and reference methods (WebGL)
  • adjusting saturation (WebGL)
  • adjusting color levels (WebGL)
  • adjusting color temperature (WebGL)
  • invert colors filter with gamma correction (WebGL)
  • homography, perspective transform from quadrilateral to rectangle (WebGL)
  • automatic detection of painting corners via Sobel gradients on Oklab lightness (WebGL), per-boundary argmax scan with orientation-confidence weighting, and weighted PCA line fitting with iterative outlier rejection
  • ranking images using pairwise comparison and Elo rating system
  • and more

ArtistAssistApp uses Web Workers for parallel processing and Service Workers for offline access.

ArtistAssistApp uses an empirical model based on the Kubelka-Munk theory to simulate real color mixing, focusing on spectral reflectances instead of RGB or other color models. It calculates color similarity by comparing spectral reflectance curves and presents the similarity as a percentage.

For mediums that support physical mixing, such as watercolor, oil paint, acrylic or gouache, ArtistAssistApp will suggest the matching color mixture for any target color. For pastels and pencils, the app will suggest the closest matching color from your set. Watercolor, acrylic, oil paint, colored pencils and watercolor pencils also support optical mixing.

Screenshots

ArtistAssistApp Color picker

ArtistAssistApp Color picker

ArtistAssistApp Color mixing

ArtistAssistApp Color mixing

ArtistAssistApp Outline

ArtistAssistApp Grid

ArtistAssistApp Tonal values

ArtistAssistApp Background removal

ArtistAssistApp Spectral reflectance curve

ArtistAssistApp Spectral reflectance curve

About

ArtistAssistApp is a web app for artists to accurately mix any color from a photo, analyze tonal values, turn a photo into an outline, draw with the grid method, paint with a limited palette, simplify a photo, remove the background from an image, compare photos pairwise, and more.

Topics

Resources

License

AGPL-3.0, Unknown licenses found

Licenses found

AGPL-3.0
LICENSE
Unknown
license-header.js

Stars

Watchers

Forks

Sponsor this project

Contributors

Languages