Takes an image and a depth map to render the image with depth of field (i.e. similar to "Portrait Mode" in an iPhone). User can specify a custom bokeh shape, or use one of the built-in bokeh types.
render_bokeh(
image,
depthmap,
focus = 0.5,
focallength = 100,
fstop = 4,
filename = NULL,
preview = TRUE,
preview_focus = FALSE,
bokehshape = "circle",
bokehintensity = 1,
bokehlimit = 0.8,
rotation = 0,
aberration = 0,
progress = interactive(),
...
)3-layer RGB/4-layer RGBA array, rayimg class, or filename of an image.
Depth map filename or 1d array.
Defaults 0.5. Depth in which to blur.
Default 100. Focal length of the virtual camera.
Default 4. F-stop of the virtual camera.
Default NULL. The filename of the image to be saved. If this is not given, the image will be plotted instead.
Default TRUE. If FALSE, it will not display the image and just return the RGB array.
Default FALSE. If TRUE, a red line will be drawn across the image
showing where the camera will be focused.
Default circle. Also built-in: hex. The shape of the bokeh. If the user
passes in a 2D matrix, that matrix will control the shape of the bokeh.
Default 1. Intensity of the bokeh when the pixel intensity is greater than bokehlimit.
Default 0.8. Limit after which the bokeh intensity is increased by bokehintensity.
Default 0. Number of degrees to rotate the hexagonal bokeh shape.
Default 0. Adds chromatic aberration to the image. Maximum of 1.
Default TRUE. Whether to display a progress bar.
Additional arguments to pass to plot_image() if preview = TRUE.
A rayimg RGBA array.
if(run_documentation()){
#Plot the dragon
plot_image(dragon)
}
if(run_documentation()){
#Plot the depth map
plot_image(dragondepth/1500)
}
#> Error in out[low] <- 12.92 * x[low]: NAs are not allowed in subscripted assignments
if(run_documentation()){
#Preview the focal plane:
render_bokeh(dragon, dragondepth, focus=950, preview_focus = TRUE)
}
#> Focal range: 847.644-1410.17
if(run_documentation()){
#Change the focal length:
render_bokeh(dragon, dragondepth, focus=950, focallength=300)
}
if(run_documentation()){
#Add chromatic aberration:
render_bokeh(dragon, dragondepth, focus=950, focallength=300, aberration = 0.5)
}
if(run_documentation()){
#Change the focal distance:
render_bokeh(dragon, dragondepth, focus=600, focallength=300)
render_bokeh(dragon, dragondepth, focus=1300, focallength=300)
}
if(run_documentation()){
#Change the bokeh shape to a hexagon:
render_bokeh(dragon, dragondepth, bokehshape = "hex",
focallength=300, focus=600)
}
if(run_documentation()){
#Change the bokeh intensity:
render_bokeh(dragon, dragondepth,
focallength=400, focus=900, bokehintensity = 1)
render_bokeh(dragon, dragondepth,
focallength=400, focus=900, bokehintensity = 3)
}
if(run_documentation()){
#Rotate the hexagonal shape:
render_bokeh(dragon, dragondepth, bokehshape = "hex", rotation=15, bokehintensity=3,
focallength=400, focus=800)
}