Back to censor an image Back to uncensor an image

Web-Based Prototype

Our web-based prototype allows a user to censor an image and to hide this censored part in the uncensored part of the image. Using the hidden information, a uncencored version can be reconstructed. The general framework of the prototype is implemented using the scripting language PHP (about 1000 lines of code) and JavaScript. On user interaction, the prototype executes a C-program responsible for encoding and decoding a censored part and a Perl script which embeds or extracts the compressed bit stream corresponding the censored part into the cover image.

The start page of our prototype can be reached via browser under A user can censor as well as uncensor an image by following the respective links. Whenever a user enters one of the two pages, a new session is started. This allows different users to use the prototype at the same time. Each session timeouts after 15 minutes, provided the user does not use the prototype during this time. All user created data is then deleted.


By following the link "Censor!" the user can access the censoring web page. This page shows a color example image on the left side. The user can upload any other valid image to this web page. That means any common image format such as PNG, JPEG, PGM/PPM is possible. However, the file size is limited by 5 megabytes, and the image resolution has to be less or equal than 768 x 768 pixels and larger or equal than 32 x 32. For further processing, the prototype converts any format to the lossless portable pixmap format (PGM/PPM). Moreover, for showing the images in the browser, we convert any image to the PNG format. The images shown on the censoring page are scaled to a width of 350 pixels for visualization purposes. By clicking on any image, the user receives the image in its original size. Clicking on the image again leads the user back to the censoring page.

The user can censor the image by dragging the mouse over the desired region in the image. The size and the position of the created black rectangle can still be corrected afterwards using the corresponding mouse movements. By pressing the button "Start censoring *" our compression program is applied on the censored part of the image using a compression ratio so that it fits to the space provided by uncensored part of the image. Note that the reconstruction quality of the recovered censored region later on is depending on the used compression ratio, which depends again on the size of the selected area. The larger the selected area, the lower the quality of the reconstruction. Moreover, the censoring process will even fail when the size of the compressed censored part exceeds the space provided by the uncensored part of the image. If this is not the case, the server embeds the received bit stream as soon as encoding has finished.

During the censoring process, the hiding page reloads every second to prevent browser timeouts. Moreover, the user can abort the process by clicking on "Stop censoring!" if he/she wishes to do so. Otherwise, the user receives the censored image on the right side of the webpage. The user can now store the censored image. Alternatively one can load the obtained censored image immediately to the uncensoring page by following the link "Recover this censoring?" given below the censored image.

There are two additional options available for censoring. For security reasons, it is desirable to keep the amount of secret bits as small as possible. Hence, a user can choose between three different quality levels corresponding to different compression ratios, respectively. "High" uses the minimal possible compression ratio such that the coded image still fits in the available space. "Medium" uses twice the compression ratio and "low" even uses a ratio five times larger than the smallest possible ratio.

The second option is the possibility to specify an alpha-numeric password with a length of 0 to 32 characters, used by our embedding method to encrypt the encoded censored image part.


The uncensoring page allows to recover a censored part withing an image that was previously hidden by our steganography method. The censored image is depicted on the left side of the uncensoring web page. As long as the user does not upload a censored secret, a default example is depicted. It was previously censored using the password "showmelena" and the quality setting "low". To recover the censored area, one has to enter the password into the corresponding input field. Then the user has to decide between two possible approaches for recovering. Any of those first extracts the embedded bit stream, which contains the encoded secret. The button "Instant recovering (fast)" starts a fast implementation of the decoding process of our codec. In contrast, the button "Step by step recovering (slow)" shows step by step the evolution of the diffusion reconstruction process. This takes longer than the instant reconstruction but is visually much more appealing. During uncensoring, the page (as for censoring) is reloading every second. The user can abort the recovery process at any time. Finally the uncensored image appears on the web page.

As on the censoring page the user can click on images to get unscaled versions. This is also possible for the evolving image.
Back to censor an image Back to uncensor an image Back to MIA page
Imprint - Data protection