Here is a short script that creates circle patterns as a mask and composites it with the image or with a 2color b/w version of the image. It creates a set of 5 circles, then tiles that out to the size of the image, then compose multiply composite to make the result. You can try thresholding in place of -colors or any other way to get a b/w base image, if that is desirable. Or change the circle rad (size) or spacing between circles (dist). For the circle drawing, see
http://www.imagemagick.org/Usage/draw/#circles
convert sw.jpg -resize 50% sw2.jpg
infile="sw2.jpg"
inname=`convert $infile -format "%t" info:`
dim=`convert $infile -format "%wx%h" info:`
size=3
dist=14
dist2=`convert xc: -format "%[fx:$dist/2]" info:`
convert \( -size ${dist}x${dist} xc:white -fill black \
-draw "translate 0,0 circle 0,0 $size,0" \
-draw "translate $dist,0 circle 0,0 $size,0" \
-draw "translate $dist,$dist circle 0,0 $size,0" \
-draw "translate 0,$dist circle 0,0 $size,0" \
-draw "translate $dist2,$dist2 circle 0,0 $size,0" \
-write mpr:tile +delete \
-size $dim tile:mpr:tile \) \
\( $infile
+dither -colors 2 -auto-level \) \
+swap -compose multiply -composite \
${inname}_2colors_circles_r${size}_d${dist}.gif
infile="sw2.jpg"
inname=`convert $infile -format "%t" info:`
dim=`convert $infile -format "%wx%h" info:`
size=3
dist=14
dist2=`convert xc: -format "%[fx:$dist/2]" info:`
convert \( -size ${dist}x${dist} xc:white -fill black \
-draw "translate 0,0 circle 0,0 $size,0" \
-draw "translate $dist,0 circle 0,0 $size,0" \
-draw "translate $dist,$dist circle 0,0 $size,0" \
-draw "translate 0,$dist circle 0,0 $size,0" \
-draw "translate $dist2,$dist2 circle 0,0 $size,0" \
-write mpr:tile +delete \
-size $dim tile:mpr:tile \) \
$infile +swap -compose multiply -composite \
${inname}_circles_r${size}_d${dist}.gif
infile="sw2.jpg"
inname=`convert $infile -format "%t" info:`
dim=`convert $infile -format "%wx%h" info:`
size=3
dist=14
dist2=`convert xc: -format "%[fx:$dist/2]" info:`
convert \( -size ${dist}x${dist} xc:white -fill black \
-draw "translate 0,0 circle 0,0 $size,0" \
-draw "translate $dist,0 circle 0,0 $size,0" \
-draw "translate $dist,$dist circle 0,0 $size,0" \
-draw "translate 0,$dist circle 0,0 $size,0" \
-draw "translate $dist2,$dist2 circle 0,0 $size,0" \
-write mpr:tile +delete \
-size $dim tile:mpr:tile \) \
\( $infile
-monochrome \) \
+swap -compose multiply -composite \
${inname}_monochrome_circles_r${size}_d${dist}.gif
NOTE: this is not a dither pattern, just an overlay. It does not make the spacing between the circles closer where the base image is darker.