Cryptography Reference
In-Depth Information
in W b because
E[y 2 (i;j)jw(i;j) = 1;x 1 (i;j)]
= E[y 1 (i;j)jx 1 (i;j)]
= 255 P[y 1 (i;j) = 255jx 1 (i;j)] + 0 P[y 1 (i;j) = 0jx 1 (i;j)]
= 255 P[y 1 (i;j) = 255jx 1 (i;j)]
= 255 [x 1 (i;j)=255]
= x 1 (i;j)
(13.14)
E[y 2 (i;j)jw(i;j) = 0;x 1 (i;j)]
= E[y 1 (i;j)jx 1 (i;j)]
= 0 P[y 1 (i;j) = 255jx 1 (i;j)] + 255 P[y 1 (i;j) = 0jx 1 (i;j)]
= 255 [1 P[y 1 (i;j) = 255jx(i;j)]]
= 255 x 1 (i;j)
(13.15)
But Y 2 should resemble X 2 instead of X 1 and thus this naive method does
not work. Even if X 1 and X 2 are the same image, this naive method does not
work in W b as Y 2 should resemble X 1 instead of the negative of X 1 .
Although this naive method does not work, DHCED follows a similar logic
except that it favors, instead of forces, Y 2 to take on the values in (13.13). In
other words, it treats the value in (13.13) as the favored value of y2(i, 2 (i;j).
Consider Figure 13.8 and any location (i;j) 2 W b . Basically, DHCED
applies error diffusion on x2(i, 2 (i;j) including (13.1) to calculate a 2 (i;j), (13.2)
to calculate u2(i, 2 (i;j) and, in the rst Q() block, (13.3) to calculate the trial
halftone value y2(i, 2 (i;j). In the N() block, the trial value is compared with the
favored value that is obtained by XNOR of w(i;j) and y 1 (i;j). If they are
equal, no change needs to be done to x2(i, 2 (i;j) and u 2 (i;j) such that u 0 2 (i;j) =
u 2 (i;j). If they are not equal, DHCED considers the possibility of forcing
trial y2(i, 2 (i;j) to toggle to achieve the favored value. Recognizing that forced
toggling is equivalent to applying a distortion to x2(i, 2 (i;j) followed by regular
error diffusion, DHCED will execute the forced toggling only if the required
distortion is not excessive.
Here are the details. Note that forcing the trial halftone value to toggle
is equivalent to adding an oset value u(i;j) to u 2 (i;j). If the trial value
should be toggled from 0 to 255, then u2(i, 2 (i;j) < 128 initially and we need
an oset u(i;j) such that the resulting value, which we called u 0 2 (i;j), is
u 0 2 (i;j) u 2 (i;j) + u(i;j) 128. Thus, there is a lower bound for u(i;j):
u(i;j) 128 u 2 (i;j) > 0.
Likewise, if we want to toggle from 255 to 0, then u2(i, 2 (i;j) 128 initially
and we need an oset u(i;j) such that u 0 2 (i;j) u 2 (i;j) + u(i;j) 127.
There is thus an upper bound for u(i;j): u(i;j) 127 u 2 (i;j) < 0.
The smallest u(i;j) (in terms of magnitude) needed to achieve toggling
is
 
Search WWH ::




Custom Search