image_to_mosaic: Create a 2D LEGO mosaic from an image array

Description Usage Arguments Value See Also Examples

View source: R/image-to-mosaic.R

Description

Generate brick mosaics from an image or matrix with customization options.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
image_to_mosaic(
  img,
  img_size = 48,
  color_table = NULL,
  method = "cie94",
  color_palette = c("universal", "generic", "special"),
  trans_bg = "White",
  dithering = FALSE,
  contrast = 1,
  use_bricks = NULL,
  brightness = 1,
  warhol = 1:3
)

Arguments

img

Image matrix to convert into mosaic. Usually from readJPEG or readPNG.

img_size

Size of output image in pixel, where one pixel = one 'brick'. Use a single value (e.g. 48) for a square image with 48 pixels on each side. Use an array of two values for a rectangular image c(width, height).

color_table

Defaults to lego_colors. Data frame of brick colors to map onto image. Must contain Name and R, G, B channels. See attached data lego_colors as examples.

method

The method to use for comparison. Options are 'euclidean', 'cie1976', 'cie94', 'cie2000', or 'cmc'. See compare_colour.

color_palette

Brick color rarity to use. Defaults to all colors: 'universal' (most common), 'generic', and 'special' (least common). This is useful when trying to build the mosaic out of real bricks. Use "bw" for only grayscale bricks. Ignored if a color_table is supplied.

trans_bg

If img is a png has a transparent background, name of color to replace the background.

dithering

Improves color of large, photo-realistic mosaics.

contrast

For theme = "bw". A value >1 will increase the contrast of the image while a positive value <1 will decrease the contrast.

use_bricks

Array of brick sizes to use in mosaic. Defaults to c('4x2', '2x2', '3x1', '2x1', '1x1')'.

brightness

A value >1 will increase the brightness of the image while a positive value <1 will decrease the brightness.

warhol

Array of values c(1, 2, 3) associated with R, G, B color channels. Swap values in array to swap color channels for a fun visual effect.

Value

A list with element Img_lego containing a data frame of the x- & y-coordinates, R, G, B channels, and mapped color of each brick (pixel).

See Also

Other Mosaics: build_mosaic()

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Import a jpeg or png
 demo_file <- system.file("extdata", "demo_img.jpg", 
                          package = "brickr", mustWork = TRUE)
 demo_image <- jpeg::readJPEG(demo_file)
 
 #Create a 24x24 mosaic
 
 demo_image %>% 
   image_to_mosaic(img_size = 24) %>% 
   build_mosaic()
 

 #Only use the two more common tiers of colors
 
 demo_image %>% 
  image_to_mosaic(img_size = 24, 
                  color_palette = c("universal", "generic")) %>% 
   build_mosaic()
 
 
 #Be more prescriptive with colors using 'color_table'.
 # Here, we prevent all blues from being used
 lego_colors_no_blue = lego_colors %>% 
    dplyr::filter(!grepl("[Bb]lue|[Aa]zur", Color))
 
 demo_image %>% 
  image_to_mosaic(img_size = 24, 
                  color_table = lego_colors_no_blue) %>% 
   build_mosaic()
 
 
 #Color matching is done with the 'farver' package. There are different method.
 # Change the method to euclidean (RGB distance matching)
 
 demo_image %>% 
  image_to_mosaic(img_size = 24, 
                  method = "euclidean") %>% 
   build_mosaic()
 
 
 #Change the default size of bricks to use.
 # In this extreme example, use 4x6s for the background, 1x1 everywhere else
 
 demo_image %>% 
  image_to_mosaic(img_size = 24, 
                  use_bricks = c("4x6")) %>% 
   build_mosaic()
 
 

brickr documentation built on Aug. 3, 2020, 1:07 a.m.