# Visual Cryptography and Bit-Plane Complexity Segmentation

### 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).

[Click image to view at full size]

Figure 2: (a) Venice, original image; (b) MSB; (c) 4th bit-plane; (d) LSB .

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-plane—just 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.

### More Insights

 To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.

# First C Compiler Now on Github

The earliest known C compiler by the legendary Dennis Ritchie has been published on the repository.

# HTML5 Mobile Development: Seven Good Ideas (and Three Bad Ones)

HTML5 Mobile Development: Seven Good Ideas (and Three Bad Ones)

# Building Bare Metal ARM Systems with GNU

All you need to know to get up and running... and programming on ARM

# Amazon's Vogels Challenges IT: Rethink App Dev

Amazon Web Services CTO says promised land of cloud computing requires a new generation of applications that follow different principles.

# How to Select a PaaS Partner

Eventually, the vast majority of Web applications will run on a platform-as-a-service, or PaaS, vendor's infrastructure. To help sort out the options, we sent out a matrix with more than 70 decision points to a variety of PaaS providers.

More "Best of the Web" >>