summary refs log tree commit diff
path: root/pbmnoise.html
blob: 1f88927d7a713e20bdf080fe9bf1b65ac6b08a41 (plain) (blame)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
<html><head><title>Pbmnoise User Manual</title></head>
<body>
<h1>pgmnoise</h1>
Updated: 18 December 2021
<br>
<a href="#index">Table Of Contents</a>

<h2>NAME</h2>
pbmnoise - create a PBM image made up of white noise

<h2 id="synopsis">SYNOPSIS</h2>

<b>pbmnoise</b> <i>width</i> <i>height</i>

[<b>-ratio=</b><i>M</i><b>/</b><i>N</i>]
[<b>-pack</b>]
[<b>-randomseed=</b><i>integer</i>]
[<b>-endian=</b>]{<b>big</b>|<b>little</b>|<b>native</b>|<b>swap</b>}] 

<p>Minimum unique abbreviations of option are acceptable.  You may use double
hyphens instead of single hyphen to denote options.  You may use white space
in place of the equals sign to separate an option name from its value.

<h2 id="description">DESCRIPTION</h2>

<p>This program is part of <a href="index.html">Netpbm</a>.

<p><b>pbmnoise</b> creates a PBM image with random pixels.  You specify the
probability each pixel will be black or white (essentially, the proportion of
black to white pixels in the image).

<p>You specify the dimensions of the image with the <i>width</i> and
<i>height</i> arguments.


<h2 id="options">OPTIONS</h2>

<p>In addition to the options common to all programs based on libnetpbm (most
notably <b>-quiet</b>, see <a href="index.html#commonoptions"> Common
Options</a>), <b>pbmnoise</b> recognizes the following command line options:

<dl>
<dt><b>-ratio=</b><i>M</i><b>/</b><i>N</i>
<dd>The proportion of black pixels in the generated image.

<p>To be precise, this is the probability that any given pixel will be black.
By the law of large numbers, we can expect the proportion of black pixels in a
reasonably large image to be close to this fraction.

<p>The option value is a fraction.  The denominator must be 1 or an integer
power of 2 up to 65536.  the numerator must be 0 or a positive integer not
exceeding denominator.

<p>The default is 1/2, meaning the output image has essentially the same
number of black and white pixels.

<p>If the ratio is 0 the output image is entirely white.  If 1, the output is
entirely black.

<dt><b>-pack</b>
<dd>
The program generates pixels in 32-bit units discarding any fractional pixels
at row ends by default.  When this option is specified, the unused pixels are
carried over to the next row, eliminating waste in exchange for some overhead
cost.

<p>Using this option improves performance when the image width is small.

<dt><b>-randomseed=</b><i>integer</i>
<dd>
This is the seed for the random number generator that generates the pixels.

<p>Use this to ensure you get the same image on separate invocations.

<p>By default, <b>pbmnoise</b> uses a seed derived from the time of day and
process ID, which gives you fairly uncorrelated results in multiple
invocations.

<dt><b>-endian=</b><i>mode</i>
<dd>
<b>pbmnoise</b> internally generates random 32-bit integers and uses the
machine's binary encoding of those integers as strings of pixels.  Because the
integers are random, it doesn't normally matter what binaary encoding is used
for them, but if you need consistent results between machines using the same
random number generator, it matters.  For that reason (mainly for testing the
program), this option lets you control that encoding, between big-endian and
little-endian.

<p><i>mode</i> is one of the following:

<dl compact>
<dt><b>big</b>
<dd>
Force big-endian output by rearranging bytes on little-endian machines.  No
effect on big-endian machines.

<dt><b>little</b>
<dd>
Likewise, force little-endian output.

<dt><b>native</b>

<dd>
Do not rearrange anything.  This is the default.

<dt><b>swap</b>
<dd>
Always swap regardless of system endianness.
</dl>
</dl>


<h2 id="examples">EXAMPLES</h2>

<p>This generates a random PBM image with roughly one-third of pixels colored
black:
<pre><code>
  pbmnoise -ratio=11/32 1200 1200 > random.pbm
</code></pre>

<p>The following is an alternate method for generating a random PBM image
which uses <b>pgmnoise</b> and <b>pgmtopbm</b> instead of <b>pbmnoise</b>.  It
is less efficient.
<pre><code>
  pgmnoise -maxval=100 1200 1200 | \
    pgmtopbm -threshold -value=0.333 > random.pbm
</code></pre>

<p>This generates a random PPM image, maxval 1:
<pre><code>
  pbmnoise 600 400 > red.pbm
  pbmnoise 600 400 > green.pbm
  pbmnoise 600 400 > blue.pbm
  rgb3topbm red.pbm green.pbm blue.pbm > random.ppm
</code></pre>


<h2 id="seealso">SEE ALSO</h2>

<a href="pbm.html">pbm</a>
<a href="pgmnoise.html">pgmnoise</a>
<a href="pgmnoise.html">pgmtopbm</a>

<h2 id="history">HISTORY</h2>

<p><b>pbmnoise</b> was new in Netpbm 10.97 (December 2021).

<p>In Netpbm before that, you can use <b>pgmnoise</b>.

  
<h2 id="author">AUTHOR</h2>
<p>
Akira F Urushibata wrote this program and contributed it to the public domain
in December 2021.

<hr>
<h2 id="index">Table Of Contents</h2>
<ul>
<li><a href="#synopsis">SYNOPSIS</a>
<li><a href="#description">DESCRIPTION</a>
<li><a href="#options">OPTIONS</a>
<li><a href="#examples">EXAMPLES</a>
<li><a href="#seealso">SEE ALSO</a>
<li><a href="#author">AUTHOR</a>
</ul>
</body>
</html>