1 / 9

Painterly Rendering with Curved Brush Strokes of Multiple Sizes

Painterly Rendering with Curved Brush Strokes of Multiple Sizes. Aaron Hertzmann Siggraph98. 資工所碩一 R93922131 蔡銘宏. Detail of At The Seashore. Function paint. function paint(sourceImage, R 1 ... R n ) {

Download Presentation

Painterly Rendering with Curved Brush Strokes of Multiple Sizes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Painterly Rendering with Curved Brush Strokes of Multiple Sizes Aaron Hertzmann Siggraph98 資工所碩一 R93922131 蔡銘宏

  2. Detail of At The Seashore

  3. Function paint • function paint(sourceImage,R1 ... Rn) • { • canvas := a new constant color image • // paint the canvas • for each brush radius Ri, • from largest to smallest do • { • // apply Gaussian blur • referenceImage = sourceImage * G(fs Ri) • // paint a layer • paintLayer(canvas, referenceImage, Ri) • } • return canvas • }

  4. PaintLayer(1) • procedure paintLayer(canvas,referenceImage, R) • { • S := a new set of strokes, initially empty • // create a pointwise difference image • D := difference(canvas,referenceImage) • grid := fg R • for x=0 to imageWidth stepsize grid do • for y=0 to imageHeight stepsize grid do • { • // sum the error near (x,y) • M := the region (x-grid/2..x+grid/2, • y-grid/2..y+grid/2) • areaError := i j M , Î å Di,j / grid2

  5. PaintLayer(2) • if (areaError > T) then • { • // find the largest error point • (x1,y1) := arg max i j M , Î Di,j • s :=makeStroke(R,x1,y1,referenceImage) • add s to S • }} • paint all strokes in S on the canvas, • in random order • }

  6. A circular brush of radius 8

  7. long, curvedstrokes

  8. Parameters • · “Impressionist” — A normal painting style, with no • curvature filter, and no random color. T = 100, R=(8,4,2), • fc=1, fs=.5, a=1, fg=1, minLength=4, maxLength=16 • · “Expressionist” — Elongated brush strokes. Jitter is • added to color value. T = 50, R=(8,4,2), fc=.25, fs=.5, a=.7, • fg=1, minLength=10, maxLength=16, jv=.5 • · “Colorist Wash” — Loose, semi-transparent brush • strokes. Random jitter is added to R, G, and B color • components. T = 200, R=(8,4,2), fc=1, fs=.5, a=.5, fg=1, • minLength=4, maxLength=16, jr=jg=jb=.3 • · “Pointillist” — Densely-placed circles with random • hue and saturation. T = 100, R=(4,2), fc=1, fs=.5, a=1, • fg=.5, minLength=0, maxLength=0, jv=1, jh=.3.

  9. Based on C++ document/view framework,MFC • Parameters input • ?

More Related