200 |
- |
1 |
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
2 |
<!DOCTYPE thresholds [
|
|
|
3 |
<!ELEMENT thresholds (threshold)+>
|
|
|
4 |
<!ATTLIST thresholds xmlns CDATA #FIXED ''>
|
|
|
5 |
<!ELEMENT threshold (description,levels)>
|
|
|
6 |
<!ATTLIST threshold xmlns CDATA #FIXED '' alias NMTOKEN #IMPLIED
|
|
|
7 |
map NMTOKEN #REQUIRED>
|
|
|
8 |
<!ELEMENT description (#PCDATA)>
|
|
|
9 |
<!ATTLIST description xmlns CDATA #FIXED ''>
|
|
|
10 |
<!ELEMENT levels (#PCDATA)>
|
|
|
11 |
<!ATTLIST levels xmlns CDATA #FIXED '' divisor CDATA #REQUIRED
|
|
|
12 |
height CDATA #REQUIRED width CDATA #REQUIRED>
|
|
|
13 |
]>
|
|
|
14 |
<!--
|
|
|
15 |
Threshold Maps for Ordered Posterized Dither
|
|
|
16 |
|
|
|
17 |
Each "<threshold>" element defines the map name, description, and an array
|
|
|
18 |
of "levels" used to provide the threshold map for ordered dithering and
|
|
|
19 |
digital halftoning.
|
|
|
20 |
|
|
|
21 |
The "alias" attribute provides a backward compatible name for this threshold
|
|
|
22 |
map (pre-dating IM v6.2.9-6), and are deprecated.
|
|
|
23 |
|
|
|
24 |
The description is a english description of what the threshold map achieves
|
|
|
25 |
and is only used for 'listing' the maps.
|
|
|
26 |
|
|
|
27 |
The map itself is a rectangular array of integers or threshold "levels"
|
|
|
28 |
of the given "width" and "height" declared within the enclosing <levels>
|
|
|
29 |
element. That is "width*height" integers or "levels" *must* be provided
|
|
|
30 |
within each map.
|
|
|
31 |
|
|
|
32 |
Each of the "levels" integer values (each value representing the threshold
|
|
|
33 |
intensity "level/divisor" at which that pixel is turned on. The "levels"
|
|
|
34 |
integers given can be any postive integers between "0" and the "divisor",
|
|
|
35 |
excluding those limits.
|
|
|
36 |
|
|
|
37 |
The "divisor" not only defines the upper limit and threshold divisor for each
|
|
|
38 |
"level" but also the total number of pseudo-levels the threshold mapping
|
|
|
39 |
creates and fills with a dither pattern. That is a ordered bitmap dither
|
|
|
40 |
of a pure greyscale gradient will use a maximum of "divisor" ordered bitmap
|
|
|
41 |
patterns, including the patterns with all the pixels 'on' and all the pixel
|
|
|
42 |
'off'. It may define less patterns than that, but the color channels will
|
|
|
43 |
be thresholded in units based on "divisor".
|
|
|
44 |
|
|
|
45 |
Alternatively for a multi-level posterization, ImageMagick inserts
|
|
|
46 |
"divisor-2" dither patterns (as defined by the threshold map) between each of
|
|
|
47 |
channel color level produced.
|
|
|
48 |
|
|
|
49 |
For example the map "o2x2" has a divisor of 5, which will define 3 bitmap
|
|
|
50 |
patterns plus the patterns with all pixels 'on' and 'off'. A greyscale
|
|
|
51 |
gradient will thus have 5 distinct areas.
|
|
|
52 |
-->
|
|
|
53 |
<thresholds>
|
|
|
54 |
|
|
|
55 |
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
56 |
Minimal Dither and Non-Dither Threshold Maps
|
|
|
57 |
-->
|
|
|
58 |
<threshold map="threshold" alias="1x1">
|
|
|
59 |
<description>Threshold 1x1 (non-dither)</description>
|
|
|
60 |
<levels width="1" height="1" divisor="2">
|
|
|
61 |
1
|
|
|
62 |
</levels>
|
|
|
63 |
</threshold>
|
|
|
64 |
|
|
|
65 |
<threshold map="checks" alias="2x1">
|
|
|
66 |
<description>Checkerboard 2x1 (dither)</description>
|
|
|
67 |
<levels width="2" height="2" divisor="3">
|
|
|
68 |
1 2
|
|
|
69 |
2 1
|
|
|
70 |
</levels>
|
|
|
71 |
</threshold>
|
|
|
72 |
|
|
|
73 |
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
74 |
(dispersed) Ordered Dither Patterns
|
|
|
75 |
-->
|
|
|
76 |
<threshold map="o2x2" alias="2x2">
|
|
|
77 |
<description>Ordered 2x2 (dispersed)</description>
|
|
|
78 |
<levels width="2" height="2" divisor="5">
|
|
|
79 |
1 3
|
|
|
80 |
4 2
|
|
|
81 |
</levels>
|
|
|
82 |
</threshold>
|
|
|
83 |
|
|
|
84 |
<threshold map="o3x3" alias="3x3">
|
|
|
85 |
<description>Ordered 3x3 (dispersed)</description>
|
|
|
86 |
<levels width="3" height="3" divisor="10">
|
|
|
87 |
3 7 4
|
|
|
88 |
6 1 9
|
|
|
89 |
2 8 5
|
|
|
90 |
</levels>
|
|
|
91 |
</threshold>
|
|
|
92 |
|
|
|
93 |
<threshold map="o4x4" alias="4x4">
|
|
|
94 |
<!--
|
|
|
95 |
From "Dithering Algorithms"
|
|
|
96 |
http://www.efg2.com/Lab/Library/ImageProcessing/DHALF.TXT
|
|
|
97 |
-->
|
|
|
98 |
<description>Ordered 4x4 (dispersed)</description>
|
|
|
99 |
<levels width="4" height="4" divisor="17">
|
|
|
100 |
1 9 3 11
|
|
|
101 |
13 5 15 7
|
|
|
102 |
4 12 2 10
|
|
|
103 |
16 8 14 6
|
|
|
104 |
</levels>
|
|
|
105 |
</threshold>
|
|
|
106 |
|
|
|
107 |
<threshold map="o8x8" alias="8x8">
|
|
|
108 |
<!-- Extracted from original 'OrderedDither()' Function -->
|
|
|
109 |
<description>Ordered 8x8 (dispersed)</description>
|
|
|
110 |
<levels width="8" height="8" divisor="65">
|
|
|
111 |
1 49 13 61 4 52 16 64
|
|
|
112 |
33 17 45 29 36 20 48 32
|
|
|
113 |
9 57 5 53 12 60 8 56
|
|
|
114 |
41 25 37 21 44 28 40 24
|
|
|
115 |
3 51 15 63 2 50 14 62
|
|
|
116 |
35 19 47 31 34 18 46 30
|
|
|
117 |
11 59 7 55 10 58 6 54
|
|
|
118 |
43 27 39 23 42 26 38 22
|
|
|
119 |
</levels>
|
|
|
120 |
</threshold>
|
|
|
121 |
|
|
|
122 |
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
123 |
Halftones - Angled 45 degrees
|
|
|
124 |
|
|
|
125 |
Initially added to ImageMagick by Glenn Randers-Pehrson, IM v6.2.8-6,
|
|
|
126 |
modified to be more symmetrical with intensity by Anthony, IM v6.2.9-7
|
|
|
127 |
|
|
|
128 |
These patterns initially start as circles, but then form diamonds
|
|
|
129 |
pattern at the 50% threshold level, before forming negated circles,
|
|
|
130 |
as it approached the other threshold extereme.
|
|
|
131 |
-->
|
|
|
132 |
<threshold map="h4x4a" alias="4x1">
|
|
|
133 |
<description>Halftone 4x4 (angled)</description>
|
|
|
134 |
<levels width="4" height="4" divisor="9">
|
|
|
135 |
4 2 7 5
|
|
|
136 |
3 1 8 6
|
|
|
137 |
7 5 4 2
|
|
|
138 |
8 6 3 1
|
|
|
139 |
</levels>
|
|
|
140 |
</threshold>
|
|
|
141 |
|
|
|
142 |
<threshold map="h6x6a" alias="6x1">
|
|
|
143 |
<description>Halftone 6x6 (angled)</description>
|
|
|
144 |
<levels width="6" height="6" divisor="19">
|
|
|
145 |
14 13 10 8 2 3
|
|
|
146 |
16 18 12 7 1 4
|
|
|
147 |
15 17 11 9 6 5
|
|
|
148 |
8 2 3 14 13 10
|
|
|
149 |
7 1 4 16 18 12
|
|
|
150 |
9 6 5 15 17 11
|
|
|
151 |
</levels>
|
|
|
152 |
</threshold>
|
|
|
153 |
|
|
|
154 |
<threshold map="h8x8a" alias="8x1">
|
|
|
155 |
<description>Halftone 8x8 (angled)</description>
|
|
|
156 |
<levels width="8" height="8" divisor="33">
|
|
|
157 |
13 7 8 14 17 21 22 18
|
|
|
158 |
6 1 3 9 28 31 29 23
|
|
|
159 |
5 2 4 10 27 32 30 24
|
|
|
160 |
16 12 11 15 20 26 25 19
|
|
|
161 |
17 21 22 18 13 7 8 14
|
|
|
162 |
28 31 29 23 6 1 3 9
|
|
|
163 |
27 32 30 24 5 2 4 10
|
|
|
164 |
20 26 25 19 16 12 11 15
|
|
|
165 |
</levels>
|
|
|
166 |
</threshold>
|
|
|
167 |
|
|
|
168 |
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
169 |
Halftones - Orthogonally Aligned, or Un-angled
|
|
|
170 |
|
|
|
171 |
Initially added by Anthony Thyssen, IM v6.2.9-5 using techniques from
|
|
|
172 |
"Dithering & Halftoning" by Gernot Haffmann
|
|
|
173 |
http://www.fho-emden.de/~hoffmann/hilb010101.pdf
|
|
|
174 |
|
|
|
175 |
These patterns initially start as circles, but then form square
|
|
|
176 |
pattern at the 50% threshold level, before forming negated circles,
|
|
|
177 |
as it approached the other threshold extereme.
|
|
|
178 |
-->
|
|
|
179 |
<threshold map="h4x4o">
|
|
|
180 |
<description>Halftone 4x4 (orthogonal)</description>
|
|
|
181 |
<levels width="4" height="4" divisor="17">
|
|
|
182 |
7 13 11 4
|
|
|
183 |
12 16 14 8
|
|
|
184 |
10 15 6 2
|
|
|
185 |
5 9 3 1
|
|
|
186 |
</levels>
|
|
|
187 |
</threshold>
|
|
|
188 |
|
|
|
189 |
<threshold map="h6x6o">
|
|
|
190 |
<description>Halftone 6x6 (orthogonal)</description>
|
|
|
191 |
<levels width="6" height="6" divisor="37">
|
|
|
192 |
7 17 27 14 9 4
|
|
|
193 |
21 29 33 31 18 11
|
|
|
194 |
24 32 36 34 25 22
|
|
|
195 |
19 30 35 28 20 10
|
|
|
196 |
8 15 26 16 6 2
|
|
|
197 |
5 13 23 12 3 1
|
|
|
198 |
</levels>
|
|
|
199 |
</threshold>
|
|
|
200 |
|
|
|
201 |
<threshold map="h8x8o">
|
|
|
202 |
<description>Halftone 8x8 (orthogonal)</description>
|
|
|
203 |
<levels width="8" height="8" divisor="65">
|
|
|
204 |
7 21 33 43 36 19 9 4
|
|
|
205 |
16 27 51 55 49 29 14 11
|
|
|
206 |
31 47 57 61 59 45 35 23
|
|
|
207 |
41 53 60 64 62 52 40 38
|
|
|
208 |
37 44 58 63 56 46 30 22
|
|
|
209 |
15 28 48 54 50 26 17 10
|
|
|
210 |
8 18 34 42 32 20 6 2
|
|
|
211 |
5 13 25 39 24 12 3 1
|
|
|
212 |
</levels>
|
|
|
213 |
</threshold>
|
|
|
214 |
|
|
|
215 |
<threshold map="h16x16o">
|
|
|
216 |
<!--
|
|
|
217 |
Direct extract from "Dithering & Halftoning" by Gernot Haffmann.
|
|
|
218 |
This may need some fine tuning for symmetry of the halftone dots,
|
|
|
219 |
as it was a mathematically formulated pattern.
|
|
|
220 |
-->
|
|
|
221 |
<description>Halftone 16x16 (orthogonal)</description>
|
|
|
222 |
<levels width="16" height="16" divisor="257">
|
|
|
223 |
4 12 24 44 72 100 136 152 150 134 98 70 42 23 11 3
|
|
|
224 |
7 16 32 52 76 104 144 160 158 142 102 74 50 31 15 6
|
|
|
225 |
19 27 40 60 92 132 168 180 178 166 130 90 58 39 26 18
|
|
|
226 |
36 48 56 80 124 176 188 204 203 187 175 122 79 55 47 35
|
|
|
227 |
64 68 84 116 164 200 212 224 223 211 199 162 114 83 67 63
|
|
|
228 |
88 96 112 156 192 216 232 240 239 231 214 190 154 111 95 87
|
|
|
229 |
108 120 148 184 208 228 244 252 251 243 226 206 182 147 119 107
|
|
|
230 |
128 140 172 196 219 235 247 256 255 246 234 218 194 171 139 127
|
|
|
231 |
126 138 170 195 220 236 248 253 254 245 233 217 193 169 137 125
|
|
|
232 |
106 118 146 183 207 227 242 249 250 241 225 205 181 145 117 105
|
|
|
233 |
86 94 110 155 191 215 229 238 237 230 213 189 153 109 93 85
|
|
|
234 |
62 66 82 115 163 198 210 221 222 209 197 161 113 81 65 61
|
|
|
235 |
34 46 54 78 123 174 186 202 201 185 173 121 77 53 45 33
|
|
|
236 |
20 28 37 59 91 131 167 179 177 165 129 89 57 38 25 17
|
|
|
237 |
8 13 29 51 75 103 143 159 157 141 101 73 49 30 14 5
|
|
|
238 |
1 9 21 43 71 99 135 151 149 133 97 69 41 22 10 2
|
|
|
239 |
</levels>
|
|
|
240 |
</threshold>
|
|
|
241 |
|
|
|
242 |
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
243 |
Halftones - Orthogonally Expanding Circle Patterns
|
|
|
244 |
|
|
|
245 |
Added by Glenn Randers-Pehrson, 4 Nov 2010, ImageMagick 6.6.5-6
|
|
|
246 |
|
|
|
247 |
Rather than producing a diamond 50% threshold pattern, these
|
|
|
248 |
continue to generate larger (overlapping) circles. They are
|
|
|
249 |
more like a true halftone pattern formed by covering a surface
|
|
|
250 |
with either pure white or pure black circular dots.
|
|
|
251 |
|
|
|
252 |
WARNING: true halftone patterns only use true circles even in
|
|
|
253 |
areas of highly varying intensity. Threshold dither patterns
|
|
|
254 |
can generate distorted circles in such areas.
|
|
|
255 |
-->
|
|
|
256 |
|
|
|
257 |
<threshold map="c5x5b" alias="c5x5">
|
|
|
258 |
<description>Circles 5x5 (black)</description>
|
|
|
259 |
<levels width="5" height="5" divisor="26">
|
|
|
260 |
1 21 16 15 4
|
|
|
261 |
5 17 20 19 14
|
|
|
262 |
6 21 25 24 12
|
|
|
263 |
7 18 22 23 11
|
|
|
264 |
2 8 9 10 3
|
|
|
265 |
</levels>
|
|
|
266 |
</threshold>
|
|
|
267 |
|
|
|
268 |
|
|
|
269 |
<threshold map="c5x5w">
|
|
|
270 |
<description>Circles 5x5 (white)</description>
|
|
|
271 |
<levels width="5" height="5" divisor="26">
|
|
|
272 |
25 21 10 11 22
|
|
|
273 |
20 9 6 7 12
|
|
|
274 |
19 5 1 2 13
|
|
|
275 |
18 8 4 3 14
|
|
|
276 |
24 17 16 15 23
|
|
|
277 |
</levels>
|
|
|
278 |
</threshold>
|
|
|
279 |
|
|
|
280 |
<threshold map="c6x6b" alias="c6x6">
|
|
|
281 |
<description>Circles 6x6 (black)</description>
|
|
|
282 |
<levels width="6" height="6" divisor="37">
|
|
|
283 |
1 5 14 13 12 4
|
|
|
284 |
6 22 28 27 21 11
|
|
|
285 |
15 29 35 34 26 20
|
|
|
286 |
16 30 36 33 25 19
|
|
|
287 |
7 23 31 32 24 10
|
|
|
288 |
2 8 17 18 9 3
|
|
|
289 |
</levels>
|
|
|
290 |
</threshold>
|
|
|
291 |
|
|
|
292 |
<threshold map="c6x6w">
|
|
|
293 |
<description>Circles 6x6 (white)</description>
|
|
|
294 |
<levels width="6" height="6" divisor="37">
|
|
|
295 |
36 32 23 24 25 33
|
|
|
296 |
31 15 9 10 16 26
|
|
|
297 |
22 8 2 3 11 17
|
|
|
298 |
21 7 1 4 12 18
|
|
|
299 |
30 14 6 5 13 27
|
|
|
300 |
35 29 20 19 28 34
|
|
|
301 |
</levels>
|
|
|
302 |
</threshold>
|
|
|
303 |
|
|
|
304 |
<threshold map="c7x7b" alias="c7x7">
|
|
|
305 |
<description>Circles 7x7 (black)</description>
|
|
|
306 |
<levels width="7" height="7" divisor="50">
|
|
|
307 |
3 9 18 28 17 8 2
|
|
|
308 |
10 24 33 39 32 23 7
|
|
|
309 |
19 34 44 48 43 31 16
|
|
|
310 |
25 40 45 49 47 38 27
|
|
|
311 |
20 35 41 46 42 29 15
|
|
|
312 |
11 21 36 37 28 22 6
|
|
|
313 |
4 12 13 26 14 5 1
|
|
|
314 |
</levels>
|
|
|
315 |
</threshold>
|
|
|
316 |
|
|
|
317 |
|
|
|
318 |
<threshold map="c7x7w">
|
|
|
319 |
<description>Circles 7x7 (white)</description>
|
|
|
320 |
<levels width="7" height="7" divisor="50">
|
|
|
321 |
47 41 32 22 33 42 48
|
|
|
322 |
40 26 17 11 18 27 43
|
|
|
323 |
31 16 6 2 7 19 34
|
|
|
324 |
25 10 5 1 3 12 23
|
|
|
325 |
30 15 9 4 8 20 35
|
|
|
326 |
39 29 14 13 21 28 44
|
|
|
327 |
46 38 37 24 36 45 49
|
|
|
328 |
</levels>
|
|
|
329 |
</threshold>
|
|
|
330 |
|
|
|
331 |
|
|
|
332 |
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
333 |
Special Purpose Dithers
|
|
|
334 |
-->
|
|
|
335 |
|
|
|
336 |
</thresholds>
|