Bit-Plane Complexity Segmentation
Bit-Plane Complexity Segmentation (BPCS) relies on the fact that the human visual system is sensitive to patterns, but unable to identify random white noise. Therefore, if you want to implement a BCPS algorithm, you divide the image into regions and calculate the complexity of these regions. Any region with complexity above a certain threshold can be replaced with embedded data. This technique works on 24-bit true-color or 8-bit grayscale images. It doesn't work on paletted images; small changes in a pixel value might have drastic effects on the color of the pixel in the paletted image.
Kawaguchy and Eason (citeseer.ist.psu.edu/kawaguchi98principle.html) suggest that the bit-planes of natural images display monotonic increasing complexity from the Most Significant Bit-plane (MSB) to the Least Significant Bit-plane (LSB). Most of the LSBs just look like random noise (Figure 2).
![](http://twimgs.com/ddj/images/article/2007/0709/070901ds01_f2.gif)
Following the separation of the image in bit-planes, every bit-plane is decomposed in 8x8 square regions and the complexity of the regions is calculated. There is no general definition for the complexity of a binary image. Nevertheless, there's a simple way to calculate the complexity of a region in the bit-planejust count the number of color changes in every row and column of the region. To define a coherent scale of complexities, you normalize this figure such that one plain color has a complexity of 0 and the checkerboard pattern (the most complex possible region) has a complexity of 1.
Any region in any bit-plane with a complexity above a chosen threshold is considered random noise and replaced by 8 bytes of data.