A method for converting an original image to a printable bitmap comprising the steps of:
- (a) defining a printer model (17a);
- (b) defining a perception model (17b);
- (c) defining a comparison model;
- (d) sampling said original image to form a sampled image (12);
- (e) constructing a plurality of parallel swaths (14) through said sampled image (12), each of said swaths (14) being a linear path of adjacent bits, each path having a width of n bits;
- (f) defining a linear array of columns of bits (16a, 16b, etc.) for each of said swaths (14), each of said columns of bits (16) being n bits wide, each of said columns of bits (16) for each of said swaths (14) being numbered consecutively;
- (g) choosing a configuration of values of a first column of bits (16a) of an ith swath (14i), said ith swath (14i) including a number p of said columns of bits (16) and q columns of non-image bits having preset bits (26);
- (h) determinig a first set of look-ahead bits (22a) adjacent to said first column of bits (16a) and within said ith swath (14i), said first set of look-ahead bits (22a) including a set of k consecutive columns of bits of said ith swath (14i), said first set of look-ahead bits having a configuration of values;
- (i) applying said printer model (17a) to a first neighborhood (20a) around said first column of bits (16a) to provide a printed image of said first neighborhood (20a);
- (j) applying said perception model (17b) to a second neighborhood (18a) within said printed image of said first neighborhood (20a) around said first column of bits (16a) to provide a perceived image of said second neighborhood (18a);
- (k) applying said comparison model to compare said perceived image of said second neighborhood (18a) with said sampled image (12) of said second neighborhood (18a) to arrive at a difference value for each bit of a subset of columns of bits of said ith swath (14i) lying within said second neighborhood (18);
- (l) calculating a combined difference value from said difference values;
- (m) storing said combined difference value along with said configuration of values of said first column of bits (16);
- (n) altering said configuration of values of said first column of bits (16) of said ith swath (14i);
- (o) repeating steps (i) through (n) 2.sup.n times until all of said configurations of values of said first column of bits (16) of said ith swath (14i) have been used;
- (p) determining which of said configurations of values of said first column of bits (16) provides a least combined difference value for said configuration of values of said first set of look-ahead bits (22), by comparing said stored combined difference values;
- (q) altering said configuration of values of said first set of look-ahead bits (22) of said ith swath (14i);
- (r) repeating steps (i) through (q) up to 2.sup.n+k times until all of said configurations of values of said first set of look-ahead bits (22) of said ith swath (14i) have been used;
- and
- (s) storing a configuration of values of said first column of bits (16) for each of said configuration of values of said first set of look-ahead bits (22), said stored configuration of values of said first column of bits (16) providing a least combined difference value for a respective configuration of values of said first set of look-ahead bits (22).