Image Based Stegnography Using LSB Technique
Image Based Stegnography Using LSB Technique
On
BACHELOR OF TECHNOLOGY
In
N.BALA GANGADHAR
08X25A0404
E.MALLIKHARJUN RAO
07X21A0418
D.VENKATA GANESH
07X21A0414
Mr.
Assistant Professor
2011
CERTIFICATE
N.BALA GANGADHAR
08X25A0404
E.MALLIKHARJUN RAO
07X21A0418
D.VENKATA GANESH
07X21A0414
Internal Guide
External Guide
H.O.D
ACKNOWLEDGEMENT
I would like to express my gratitude to all the people behind the screen who
helped me to transform an idea into a real application.
I would also like to thank my external guide for her technical guidance and
support in carrying out my project at M.L.TELE SERVICES.LTD.
The satisfaction and euphoria that accompany the successful completion of the task
would be great but incomplete without the mention of the people who made it
possible with their constant guidance and encouragement crowns all the efforts with
success. In this context, I would like thank all the other staff members, both teaching
and non-teaching, which have extended their timely help and eased my task.
N.BALA GANGADHAR
E.MALLIKHARJUNA RAO
07X21A0418
D.VENKATA GANESH
07X21A0414
CONTENTS
Abstract
08X25A0404
List of figures
List of tables
List of screens
Symbols & Abbreviations
1. INTRODUCTION
1.1 Motivation
1.2 Problem definition
1.3 Objective of Project
1.4 Limitations of Project
1.5 Organization of Documentation
2. LITERATURE SURVEY
2.1 Introduction
2.2 Existing System
2.3 Disadvantages of Existing system
2.4 Proposed System
2.5 Conclusion
3. ANALYSIS
3.1 Introduction
3.2 Software Requirement Specification
3.2.1 User requirement
3.2.2 Software requirement
3.2.3 Hardware requirement
3.3 Content diagram of Project
3.4 Algorithms ad Flowcharts
3.5 Conclusion
4. DESIGN
4.1 Introduction
INDEX
S.NO
TOPIC NAME
PAGE NUMBERS
1)
ABSTRACT
3-4
2)
INTRODUCTION
5-6
3)
BACKGROUND HISTORY
7-9
4)
10-17
5)
18-22
6)
23-24
7)
APPLICATIONS OF STEGANOGRAPHY
25-29
8)
30-45
9)
INTRODUCTION TO MATLAB
46-51
10)
RESULT
52-53
11)
CONCLUSION
54-55
12)
FUTURE SCOPE
56-57
13)
REFERENCES
58-59
ABSTRACT
ABSTRACT
INTRODUCTION
INTRODUCTION:
which
stands
for
Bit-
Plane
Complexity
Segmentation
BACKGROUND HISTORY
BACKGROUND HISTORY:
The first recorded uses of steganography can be traced back to 440 BC
when Herodotus mentions two examples of steganography in The Histories of
Herodotus. Demaratus sent a warning about a forthcoming attack to Greece by writing
it directly on the wooden backing of a wax tablet before applying its beeswax
surface. Wax tablets were in common use then as reusable writing surfaces,
sometimes used for shorthand. Another ancient example is that of Histiaeus, who
shaved the head of his most trusted slave and tattooed a message on it. After his hair
had grown the message was hidden. The purpose was to instigate a revolt against
the Persians.
Other examples:
Ancient Greeks covered tablets with wax and used them to write on. The
tablets were composed of wooden slabs. A layer of melted wax was poured over the
wood and allowed to harden as it dried. Hidden messages could be carved into the
wood prior to covering the slab. When the melted wax was poured over the slab, the
now concealed message was later revealed by the recipient when they re-melted the
wax and poured it from the tablet.
From the 1st century through World War II invisible inks were often used
to conceal hidden messages. At first, the inks were organic substances that oxidized
when heated. The heat reaction revealed the hidden message. As time passed,
compounds and substances were chosen based on desirable chemical reactions. When
the recipient mixed the compounds used to write the invisible message with a reactive
agent, the resulting chemical reaction revealed the hidden data. Today, some
commonly used compounds are visible when placed under an ultraviolet light.
In another form, while Paris was under siege in 1870, messages were sent
by carrier pigeon. A Parisian photographer used a microfilm technique to enable each
THEORY:
Steganography is the art and science of writing hidden messages in such a way
that no one, apart from the sender and intended recipient, suspects the existence of the
message, a form of security through obscurity. The word steganography is
of Greek origin
and
means
"concealed
writing"
from
the
Greek
words steganos meaning "covered or protected", and graphein meaning "to write".
Generally, messages will appear to be something else: images, articles, shopping lists,
or some other covertext and, classically, the hidden message may be in invisible
ink between the visible lines of a private letter.
In digital
steganography, electronic
communications
may include
steganographic coding inside of a transport layer, such as a document file, image file,
program or protocol. Media files are ideal for steganographic transmission because of
their large size. As a simple example, a sender might start with an innocuous image
file and adjust the color of every 100th pixel to correspond to a letter in the alphabet, a
change so subtle that someone not specifically looking for it is unlikely to notice it.
Steganography today is a computer technique to make confidential
information imperceptible to human eyes by embedding it in some innocent looking
"vessel" data (aka "carrier", "cover" or "dummy" data) such as a digital image or a
speech sound. A typical vessel is a color image having Red, Green, and Blue color
components in a multi-bit data structure. The embedded information can only be
extracted by using a special extracting program and a key, the technique of
steganography we are talking here is definitely different from what is called a "file
deception" or "file camouflage" technique.
JPEG, MPEG3, or Word file allows any "extra" data to be added to the end of a
regular file. Even if such extra data (which can be encrypted) are added, the JPEG,
MPEG3, or Word file looks (sounds) like the original image, sound, or document on
the computer. Some people might have misunderstood that such a trick is a type of
steganography.
However, such tricked files may have an extra-lengthy file sizes, and they
can be easily detected by most computer engineers. So, file deception is definitely
different from steganographic technique we are discussing here.
exposed. This type of information may be very crucial to people such as unscrupulous
business competitors or securities dealers or even those malicious group of organized
crime figures, who may be keeping the sender or receiver under surveillance.
.
In the stego-only method the steganalyst only has available the stego
medium or the finished stego product. This is by far the most difficult attack approach
since there is no starting point from which to start extracting the hidden message. So
typically the steganalyst will scan by steganalysis algorithm type first. For example, if
the LSB (least significant bit) pattern for every pixel byte shows a recurring pattern, it
may be deduced that the hidden message is a watermark.
When the original cover data and the stego message are both available this
is called the known-cover attack. This data can be manipulated to find the
difference in bit pattern between both sets of data. At this stage in this type of attack,
the steganalyst may be left with a bit pattern which represents ASCII cleartext (nonencrypted ASCII text), in which case the attack was completely successful in
recovering the message. If the message was encrypted prior to the stego process the
extracted message would need to be run through cryptanalysis tools to be deciphered.
The known message attack assumes either a part of or the entire hidden
message is available to the steganalyst. An efficient approach is to begin in parallel an
effort to decrypt the message and an effort to detect other hidden messages based on
the signature of the known message. The chosen stego attack asserts the
steganography algorithm and the cover data are known. In this case the key, if the
message is encrypted and the hidden message are unknown. Again, in this case the
original cover data is known which allows the steganalyst to generate the data
delta(difference) between the stego message and the original cover data and run the
resulting data through the stego decoder in case the message is cleartext.
Chosen message attack refers to the steganalysts knowledge of the
hidden message with the goal of effectively detecting stego messages. This attack
assumes the hidden message is known but a community has no knowledge of which
container is hiding it. In this effort the steganalyst will generate various stego
messages using various stego algorithms in an attempt to find consistent patterns and
improve detection of the hidden message.
The objective of steganalysis is to find out a stego-file among the given files. It is a
technique to detect a suspicious image/sound file that is embedded with crime-related
information. So, it is a topic to make a "sniffer-dog program" to break steganography.
However, it is very difficult to make such program that really works.
This is the purpose of a steganographic system where an attacker who does
not possess the name of a file or the stego-key for accessing it definitely will not be
able to determine whether the file is even present. In an efficient steganographic
system, a normal cover medium should not be distinguishable from a stego-object.
In steganography you will have two types of data. One is the secret data
itself that is very valuable to you. The other one is a type of media data called
"vessel", "carrier", or "dummy" data. Such vessel data is essential, but is not so
valuable. It is the data in which the valuable data is "embedded." An "already
embedded" vessel data is called "stego data." When you want to recover the valuable
(or secret) data, you can "extract" it from the stego data. For both embedding and
extracting you need a special program and a key.
A typical vessel is an image data with Red, Green, and Blue color components
in a 24 bits pixel structure. The illustration below shows a general scheme of
steganography.
It is also important that the embedding capacity is large. The larger the better.
For image steganography we are confident that BPCS method is the best of all
currently available steganographic methods.
There are basically three types of steganographic protocols used. They are
Pure Steganography, Secret Key Steganography and Public Key Steganography.
Pure Steganography is defined as a steganographic system that does not require
the exchange of a cipher such as a stego-key. This method of Steganography is the
least secure means by which to communicate secretly because the sender and receiver
can rely only upon the presumption that no other parties are aware of this secret
message. Using open systems such as the Internet, we know this is not the case at all.
the process and read the secret message. Unlike Pure Steganography where a
perceived invisible communication channel is present, Secret Key Steganography
exchanges a stego-key, which makes it more susceptible to interception. The benefit
to Secret Key Steganography is even if it is intercepted, only parties who know the
secret key can extract the secret message.
Public Key Steganography takes the concepts from Public Key Cryptography as
explained below. Public Key Steganography is defined as a steganographic system
that uses a public key and a private key to secure the communication between the
parties wanting to communicate secretly. The sender will use the public key during
the encoding process and only the private key, which has a direct mathematical
relationship with the public key, can decipher the secret message. Public Key
Steganography provides a more robust way of implementing a steganographic system
because it can utilize a much more robust and researched technology in Public Key
Cryptography. It also has multiple levels of security in that unwanted parties must first
suspect the use of steganography and then they would have to find a way to crack the
algorithm used by the public key system before they could intercept the secret
message.
DIFFERENT KINDS OF
STEGANOGRAPHY
TYPES OF STEGANOGRAPHY
Secrets can be hidden inside all sorts of cover information: text, images,
audio, video and more. Most steganographic utilities nowadays, hide information
inside images, as this is relatively easy to implement. There are following ways to
implement steganography using images These are Processing Image Pixels ,
processing image pixels and creating spotlights ,processing image pixels in image and
controlling the contrast and brightness, controlling the color, intensity, color filter,
color inversion and performing convolution in images. However, there are tools
available to store secrets inside almost any type of cover source. It is also possible to
hide information inside texts, sounds and video films. The most important property of
a cover source is the amount of data that can be stored inside it, without changing the
noticeable properties of the cover. When an image is distorted or a piece of music
sounds different than the original, the cover source will be suspicious and may be
checked more thoroughly.
1)Encoding Secret Messages in Text
Encoding secret messages in text can be a very challenging task. This is because text
files have a very small amount of redundant data to replace with a secret message.
Since everyone can read, encoding text in natural sentences is doubtfully effective.
Another drawback is the ease of which text based Steganography can be altered by an
unwanted parties by just changing the text itself or reformatting the text to some other
form (from .TXT to .PDF, etc.). There are numerous methods by which to accomplish
text based Steganography. They are
Line-shift encoding involves actually shifting each line of text vertically up or
down by as little as 3 centimeters. Depending on whether the line was up or down
from the stationary line would equate to a value that would or could be encoded into a
secret message.
Word-shift encoding works in much the same way that line-shift encoding works,
only we use the horizontal spaces between words to equate a value for the hidden
message. This method of encoding is less visible than line-shift encoding but requires
that the text format support variable spacing.
Feature specific encoding involves encoding secret messages into formatted text
by changing certain text attributes such as vertical/horizontal length of letters such as
b, d, T, etc. This is by far the hardest text encoding method to intercept as each type of
formatted text has a large amount of features that can be used for encoding the secret
message.
B)Encoding Secret Messages in Images
Hiding information inside images is a popular technique nowadays. An image with a
secret message inside can easily be spread over the World Wide Web or in
newsgroups. The use of steganography in newsgroups has been researched by German
steganographic expert Niels Provos, who created a scanning cluster, which detects the
presence of hidden messages inside images that were posted on the net. However,
after checking one million images, no hidden messages were found, so the practical
use of steganography still seems to be limited. To hide a message inside an image
without changing its visible properties, the cover source can be altered in "noisy"
areas with many color variations, so less attention will be drawn to the modifications.
The most common methods to make these alterations involve the usage of the leastsignificant bit (LSB), masking, filtering and transformations on the cover image.
These techniques can be used with varying degrees of success on different types of
image files.
Least significant bit (LSB) encoding is by far the most popular of the coding
techniques used for digital images. By using the LSB of each byte (8 bits) in an image
for a secret message, you can store 3 bits of data in each pixel for 24-bit images and 1
bit in each pixel for 8-bit images. As you can see, much more information can be
stored in a 24-bit image file. Depending on the color palette used for the cover image
(i.e., all gray), it is possible to take 2 LSB's from one byte without the human visual
system (HVS) being able to tell the difference. The only problem with this technique
is that it is very vulnerable to attacks such as image changes and formatting (i.e.,
changing from .GIF to .JPEG).
Masking and filtering techniques for digital image encoding such as Digital
Watermarking (i.e.- integrating a companies logo on there web content) are more
popular with lossy compression techniques such as (.JPEG). Masking and filtering
techniques, usually restricted to 24 bits or grayscale images, take a different approach
to hiding a message. This technique actually extends an image data by masking the
secret data over the original data as opposed to hiding information inside of the data.
Some experts argue that this is definitely a form of Information Hiding, but not
technically Steganography. The beauty of Masking and Filtering techniques are that
they are immune to image manipulation which makes there possible uses very robust.
While masking does change the visible properties of an image, it can be done in such
a way that the human eye will not notice the anomalies. Since masking uses visible
aspects of the image, it is more robust than LSB modification with respect to
compression, cropping and different kinds of image processing. The information is
not hidden at the noise level but is inside the visible part of the image, which makes it
more suitable than LSB modifications in case a lossy compression algorithm like
JPEG is being used.
A more complex way of hiding a secret inside an image comes with the use and
modifications of discrete cosine transformations. Discrete cosine transformations
(DCT) are used by the JPEG compression algorithm to transform successive 8 x 8
pixel blocks of the image, into 64 DCT coefficients each. A simple pseudo-code
algorithm to hide a message inside a JPEG image could look like this:
Input: message, cover image
Output: steganographic image containing message
while data left to embed do
get next DCT coefficient from cover image
if DCT 0 and DCT 1 then
get next LSB from message
replace DCT LSB with message bit
end if
1101001 11001000)
APPLICATIONS OF STEGANOGRAPHY
APPLICATIONS OF STEGANOGRAPHY
Steganography is applicable to, but not limited to, the following areas.
1) Confidential communication and secret data storing
2) Protection of data alteration
3) Access control system for digital content distribution
4) Media Database systems
5) Alleged use by terrorists
6) Alleged use by intelligence services
The area differs in what feature of the steganography is utilized in each system.
cryptography). In this case you need a "key negotiation" before you start
communication.
In this application area of steganography secrecy is not important, but unifying two
types of data into one is the most important.
Media data (photo picture, movie, music, etc.) have some association with other
information. A photo picture, for instance, may have the following.
(1) The title of the picture and some physical object information.
(2) The date and the time when the picture was taken.
(3) The camera and the photographer's information.
5) Alleged use by terrorists:
When one considers that messages could be encrypted steganographically in email messages, particularly e-mail spam, the notion of junk e-mail takes on a whole
new light. Coupled with the "chaffing and winnowing" technique, a sender could get
messages out and cover their tracks all at once.
In 2010, the Federal Bureau of Investigation revealed that the Russian foreign
intelligence service uses customized steganography software for embedding encrypted
text messages inside image files for certain communications with "illegal agents"
(agents under non-diplomatic cover) stationed abroad.
Color image:
It can be represented by three functions, R (xylem) for red, G (xylem) for
green and B (xylem) for blue.
An image may be continuous with respect to the x and y coordinates and
also in amplitude. Converting such an image to digital form requires that the
coordinates as well as the amplitude to be digitized. Digitizing the coordinates values
is called sampling. Digitizing the amplitude values is called quantization.
Coordinate convention:
The result of sampling and quantization is a matrix of real numbers. We use two
principal ways to represent digital images. Assume that an image f(x, y) is sampled so
that the resulting image has M rows and N columns. We say that the image is of size
M X N. The values of the coordinates (xylem) are discrete quantities. For notational
clarity and convenience, we use integer values for these discrete coordinates. In many
image processing books, the image origin is defined to be at (xylem)=(0,0).The next
coordinate values along the first row of the image are (xylem)=(0,1).It is important to
keep in mind that the notation (0,1) is used to signify the second sample along the
first row. It does not mean that these are the actual values of physical coordinates
when the image was sampled. Following figure shows the coordinate convention.
Note that x ranges from 0 to M-1 and y from 0 to N-1 in integer increments.
The coordinate convention used in the toolbox to denote arrays is different from
the preceding paragraph in two minor ways. First, instead of using (xylem) the
toolbox uses the notation (race) to indicate rows and columns. Note, however, that the
order of coordinates is the same as the order discussed in the previous paragraph, in
the sense that the first element of a coordinate topples, (alb), refers to a row and the
second to a column. The other difference is that the origin of the coordinate system is
at (r, c) = (1, 1); thus, r ranges from 1 to M and c from 1 to N in integer increments.
IPT documentation refers to the coordinates. Less frequently the toolbox also employs
Image as Matrices:
The preceding discussion leads to the following representation for a digitized
image function:
f (0,0)
f(0,1)
..
f(0,N-1)
f(1,0)
f(1,1)
f(1,N-1)
f(xylem)=
.
.
f(2,2) .. f(2,N)
.
f=
.
.
.
.
Reading Images:
Images are read into the MATLAB environment using function imread whose
syntax is
imread(filename)
Format name
TIFF
Description
recognized extension
.tif, .tiff
JPEG
.jpg, .jpeg
GIF
.gif
BMP
Windows Bitmap
.bmp
PNG
XWD
X Window Dump
.png
.xwd
size
1024*1024
Bytes
Class
1048576
unit8 array
Displays as black all values less than or equal to low and as white all
values greater than or equal to high. The values in between are displayed as
intermediate intensity values using the default number of levels .Finally the syntax
Imshow(f,[ ])
Sets variable low to the minimum value of array f and high to its
maximum value. This form of imshow is useful for displaying images that have a low
dynamic range or that have positive and negative values.
Function pixval is used frequently to display the intensity values of individual
pixels interactively. This function displays a cursor overlaid on an image. As the
cursor is moved over the image with the mouse the coordinates of the cursor position
and the corresponding intensity values are shown on a display that appears below the
figure window .When working with color images, the coordinates as well as the red,
green and blue components are displayed. If the left button on the mouse is clicked
and then held pressed, pixval displays the Euclidean distance between the initial and
current cursor locations.
The syntax form of interest here is Pixval which shows the cursor on the last
image displayed. Clicking the X button on the cursor window turns it off.
The following statements read from disk an image called rose_512.tif extract
basic information about the image and display it using imshow :
>>f=imread(rose_512.tif);
>>whos f
Name
F
Size
512*512
Bytes
Class
262144
unit8 array
image in the screen with the new image. To keep the first image and output a second
image, we use function figure as follows:
>>figure ,imshow(g)
Using the statement
>>imshow(f),figure ,imshow(g) displays both images.
Note that more than one command can be written on a line ,as long as different
commands are properly delimited by commas or semicolons. As mentioned earlier, a
semicolon is used whenever it is desired to suppress screen outputs from a command
line.
Suppose that we have just read an image h and find that using imshow produces
the image. It is clear that this image has a low dynamic range, which can be remedied
for display purposes by using the statement.
>>imshow(h,[ ])
Writing Images:
Images are written to disk using function imwrite, which has the following basic
syntax:
Imwrite (f,filename)
With this syntax, the string contained in filename must include a recognized file
format extension .Alternatively, the desired format can be specified explicitly with a
third input argument. >>imwrite(f,patient10_run1,tif)
Or alternatively
For example the following command writes f to a TIFF file named patient10_run1:
>>imwrite(f,patient10_run1.tif)
If filename contains no path information, then imwrite saves the file in the
current working directory.
The imwrite function can have other parameters depending on e file format
selected. Most of the work in the following deals either with JPEG or TIFF images ,so
we focus attention here on these two formats.
More general imwrite syntax applicable only to JPEG images is
imwrite(f,filename.jpg,,quality,q)
where q is an integer between 0 and 100(the lower number the higher the degradation
due to JPEG compression).
For example, for q=25 the applicable syntax is
>> imwrite(f,bubbles25.jpg,quality,25)
The image for q=15 has false contouring that is barely visible, but this effect
becomes quite pronounced for q=5 and q=0.Thus, an expectable solution with some
margin for error is to compress the images with q=25.In order to get an idea of the
compression achieved and to obtain other image file details, we can use function
imfinfo which has syntax.
Imfinfo filename
Here filename is the complete file name of the image stored in disk.
For example,
>> imfinfo bubbles25.jpg
outputs the following information(note that some fields contain no information in this
case):
Filename: bubbles25.jpg
FileModDate: 04-jan-2003 12:31:26
FileSize:
Format:
13849
jpg
Format Version:
Width:
714
Height:
682
Bit Depth:
{}
Where file size is in bytes. The number of bytes in the original image is
corrupted simply by multiplying width by height by bit depth and dividing the result
by 8. The result is 486948.Dividing this file size gives the compression ratio:
(486948/13849)=35.16.This compression ratio was achieved. While maintaining
image quality consistent with the requirements of the appearance. In addition to the
obvious advantages in storage space, this reduction allows the transmission of
approximately 35 times the amount of un compressed data per unit time.
The information fields displayed by imfinfo can be captured in to a so called
structure variable that can be for subsequent computations. Using the receding an
example and assigning the name K to the structure variable.
We use the syntax
>>K=imfinfo(bubbles25.jpg);
Where its argument to the nearest integer. It function round rounds is important
to note that the number of pixels was not changed by these commands. Only the scale
of the image changed. The original 450*450 image at 200 dpi is of size 2.25*2.25
inches. The new 300_dpi image is identical, except that is 450*450 pixels are
distributed over a 1.5*1.5_inch area. Processes such as this are useful for controlling
the size of an image in a printed document with out sacrificing resolution.
Often it is necessary to export images to disk the way they appear on the
MATLAB desktop. This is especially true with plots .The contents of a figure window
can be exported to disk in two ways. The first is to use the file pull-down menu is in
the figure window and then choose export. With this option the user can select a
location, filename, and format. More control over export parameters is obtained by
using print command:
Print-fno-dfileformat-rresno filename
Where no refers to the figure number in the figure window interest, file
format refers one of the file formats in table above. resno is the resolution in dpi, and
filename is the name we wish to assign the file.
If we simply type print at the prompt, MATLAB prints (to the default printer)
the contents of the last figure window displayed. It is possible also to specify other
options with print, such as specific printing device.
Data Classes:
Although we work with integers coordinates the values of pixels themselves are
not restricted to be integers in MATLAB. Table above list various data classes
supported by MATLAB and IPT are representing pixels values. The first eight entries
in the table are refers to as numeric data classes. The ninth entry is the char class and,
as shown, the last entry is referred to as logical data class.
All numeric computations in MATLAB are done in double quantities, so this is
also a frequent data class encounter in image processing applications. Class unit 8
also is encountered frequently, especially when reading data from storages devices, as
8 bit images are most common representations found in practice. These two data
classes, classes logical, and, to a lesser degree, class unit 16 constitute the primary
data classes on which we focus. Many ipt functions however support all the data
classes listed in table. Data class double requires 8 bytes to represent a number uint8
and int 8 require one byte each, uint16 and int16 requires 2bytes and unit 32.
Name
Description
Double
Uint8
unsigned
8_bit
integers
in
the
range
[0,255]
(1byte
per
Element).
Uint16
Uint 32
element). Int8
element)
Int 16
element).
Int 32
per element).
Single
Logical
int 32 and single, required 4 bytes each. The char data class holds characters in
Unicode representation. A character string is merely a 1*n array of characters logical
array contains only the values 0 to 1,with each element being stored in memory using
function logical or by using relational operators.
Image Types:
The toolbox supports four types of images:
1 .Intensity images;
2. Binary images;
3. Indexed images;
4. R G B images.
Most monochrome image processing operations are carried out using binary or
intensity images, so our initial focus is on these two image types. Indexed and RGB
color images.
Intensity Images:
An intensity image is a data matrix whose values have been scaled to represent
intentions. When the elements of an intensity image are of class unit8, or class unit
16, they have integer values in the range [0,255] and [0, 65535], respectively. If the
image is of class double, the values are floating _point numbers. Values of scaled,
double intensity images are in the range [0, 1] by convention.
Binary Images:
Binary images have a very specific meaning in MATLAB.A binary image is a logical
array 0s and1s.Thus, an array of 0s and 1s whose values are of data class, say unit8, is
not considered as a binary image in MATLAB .A numeric array is converted to binary
using function logical. Thus, if A is a numeric array consisting of 0s and 1s, we create
an array B using the statement.
B=logical (A)
If A contains elements other than 0s and 1s.Use of the logical function converts all
nonzero quantities to logical 1s and all entries with value 0 to logical 0s.
Using relational and logical operators also creates logical arrays.
To test if an array is logical we use the I logical function:
islogical(c).
If c is a logical array, this function returns a 1.Otherwise returns a 0. Logical array can
be converted to numeric arrays using the data class conversion functions.
Indexed Images:
An indexed image has two components:
A data matrix integer, x.
A color map matrix, map.
Matrix map is an m*3 arrays of class double containing floating_ point values in
the range [0, 1].The length m of the map are equal to the number of colors it defines.
Each row of map specifies the red, green and blue components of a single color. An
indexed images uses direct mapping of pixel intensity values color map values. The
color of each pixel is determined by using the corresponding value the integer matrix
x as a pointer in to map. If x is of class double ,then all of its components with values
less than or equal to 1 point to the first row in map, all components with value 2 point
to the second row and so on. If x is of class units or unit 16, then all components value
0 point to the first row in map, all components with value 1 point to the second and so
on.
RGB Image:
An RGB color image is an M*N*3 array of color pixels where each color pixel
is triplet corresponding to the red, green and blue components of an RGB image, at a
specific spatial location. An RGB image may be viewed as stack of three gray scale
images that when fed in to the red, green and blue inputs of a color monitor
Produce a color image on the screen. Convention the three images forming an
RGB color image are referred to as the red, green and blue components images. The
data class of the components images determines their range of values. If an RGB
image is of class double the range of values is [0, 1].
Similarly the range of values is [0,255] or [0, 65535].For RGB images of class
units or unit 16 respectively. The number of bits use to represents the pixel values of
the component images determines the bit depth of an RGB image. For example, if
each component image is an 8bit image, the corresponding RGB image is said to be
24 bits deep.
Generally, the number of bits in all component images is the same. In this case
the number of possible color in an RGB image is (2^b) ^3, where b is a number of bits
in each component image. For the 8bit case the number is 16,777,216 colors
INTRODUCTION TO MATLAB
INTRODUCTION TO MATLAB
What Is MATLAB?
MATLAB is a high-performance language for technical computing. It integrates
computation, visualization, and programming in an easy-to-use environment where
problems and solutions are expressed in familiar mathematical notation.
Typical uses include: Math and computation,
Algorithm development
Data acquisition
Modeling, simulation, and prototyping
Data analysis, exploration, and visualization
Scientific and engineering graphics
Application development, including graphical user interface building.
MATLAB is an interactive system whose basic data element is an array that does not
require dimensioning. This allows you to solve many technical computing problems,
especially those with matrix and vector formulations, in a fraction of the time it would
take to write a program in a scalar non interactive language such as C or FORTRAN.
The name MATLAB stands for matrix laboratory. MATLAB was originally
written to provide easy access to matrix software developed by the LINPACK and
EISPACK projects. Today, MATLAB engines incorporate the LAPACK and BLAS
libraries, embedding the state of the art in software for matrix computation.
MATLAB has evolved over a period of years with input from many users. In
university environments, it is the standard instructional tool for introductory and
advanced courses in mathematics, engineering, and science. In industry, MATLAB is
the tool of choice for high-productivity research, development, and analysis.
MATLAB features a family of add-on application-specific solutions called
toolboxes. Very important to most users of MATLAB, toolboxes allow you to learn
and apply specialized technology. Toolboxes are comprehensive collections of
MATLAB functions (M-files) that extend the MATLAB environment to solve
particular classes of problems. Areas in which toolboxes are available include signal
processing, control systems, neural networks, fuzzy logic, wavelets, simulation, and
many others.
The MATLAB System:
The MATLAB system consists of five main parts:
Development Environment:
This is the set of tools and facilities that help you use MATLAB functions and
files. Many of these tools are graphical user interfaces. It includes the MATLAB
desktop and Command Window, a command history, an editor and debugger, and
browsers for viewing help, the workspace, files, and the search path.
The MATLAB Mathematical Function:
This is a vast collection of computational algorithms ranging from elementary
functions like sum, sine, cosine, and complex arithmetic, to more sophisticated
functions like matrix inverse, matrix eigen values, Bessel functions, and fast Fourier
transforms.
The MATLAB Language:
This is a high-level matrix/array language with control flow statements, functions,
data structures, input/output, and object-oriented programming features. It allows both
"programming in the small" to rapidly create quick and dirty throw-away programs,
and "programming in the large" to create complete large and complex application
programs.
Graphics:
MATLAB has extensive facilities for displaying vectors and matrices as graphs, as
well as annotating and printing these graphs. It includes high-level functions for twodimensional and three-dimensional data visualization, image processing, animation,
and presentation graphics. It also includes low-level functions that allow you to fully
customize the appearance of graphics as well as to build complete graphical user
interfaces on your MATLAB applications.
The MATLAB Application Program Interface (API):
This is a library that allows you to write C and Fortran programs that interact with
MATLAB. It includes facilities for calling routines from MATLAB (dynamic linking),
calling MATLAB as a computational engine, and for reading and writing MAT-files.
MATLAB WORKING ENVIRONMENT:
MATLAB DESKTOP:Matlab Desktop is the main Matlab application window. The desktop contains five
sub windows, the command window, the workspace browser, the current directory
window, the command history window, and one or more figure windows, which are
shown only when the user displays a graphic.
The command window is where the user types MATLAB commands and expressions
at the prompt (>>) and where the output of those commands is displayed. MATLAB
defines the workspace as the set of variables that the user creates in a work session.
The workspace browser shows these variables and some information about them.
Double clicking on a variable in the workspace browser launches the Array Editor,
which can be used to obtain information and income instances edit certain properties
of the variable.
The current Directory tab above the workspace tab shows the contents of the
current directory, whose path is shown in the current directory window. For example,
in the windows operating system the path might be as follows: C:\MATLAB\Work,
indicating that directory work is a subdirectory of the main directory MATLAB;
WHICH IS INSTALLED IN DRIVE C. clicking on the arrow in the current directory
window shows a list of recently used paths. Clicking on the button to the right of the
window allows the user to change the current directory.
MATLAB uses a search path to find M-files and other MATLAB related files,
which are organize in directories in the computer file system. Any file run in
MATLAB must reside in the current directory or in a directory that is on search path.
By default, the files supplied with MATLAB and math works toolboxes are included
in the search path. The easiest way to see which directories are on the search path.
The easiest way to see which directories are soon the search paths, or to add or
modify a search path, is to select set path from the File menu the desktop, and then
use the set path dialog box. It is good practice to add any commonly used directories
to the search path to avoid repeatedly having the change the current directory.
The Command History Window contains a record of the commands a user has
entered in the command window, including both current and previous MATLAB
sessions. Previously entered MATLAB commands can be selected and re-executed
from the command history window by right clicking on a command or sequence of
commands. This action launches a menu from which to select various options in
addition to executing the commands. This is useful to select various options in
addition to executing the commands. This is a useful feature when experimenting with
various commands in a work session.
Using the MATLAB Editor to create M-Files:
The MATLAB editor is both a text editor specialized for creating M-files and a
graphical MATLAB debugger. The editor can appear in a window by itself, or it can
be a sub window in the desktop. M-files are denoted by the extension .m, as in
pixelup.m. The MATLAB editor window has numerous pull-down menus for tasks
such as saving, viewing, and debugging files. Because it performs some simple
checks and also uses color to differentiate between various elements of code, this text
editor is recommended as the tool of choice for writing and editing M-functions. To
open the editor, type edit at the prompt opens the M-file filename.m in an editor
window, ready for editing. As noted earlier, the file must be in the current directory, or
in a directory in the search path.
Getting Help:
The principal way to get help online is to use the MATLAB help browser,
opened as a separate window either by clicking on the question mark symbol (?) on
the desktop toolbar, or by typing help browser at the prompt in the command window.
The help Browser is a web browser integrated into the MATLAB desktop that
displays a Hypertext Markup Language (HTML) documents. The Help Browser
consists of two panes, the help navigator pane, used to find information, and the
display pane, used to view the information. Self-explanatory tabs other than navigator
pane are used to perform a search.
RESULT
RESULTS:
CONCLUSION
CONCLUSION:
This project describes a technique to successfully embed data in an color
image. Additional features that could be added to this project include support for file
types other than bitmap, and implementation of other steganographic methods.
However, this research work and software package provide a good starting point for
anyone interested in learning about steganography. The data extracted from the cover
image also depends on the pixel values of the image. The system can be further
developed to hide secret image in cover image.
FUTURE SCOPE
FUTURE SCOPE:
REFERENCES
REFERENCE
[1] B.Schneier, Terrorists and Steganography, 24 Sep. 2001, available:
http://www.zdnet.com/zdnn/stories/comment/0,5859,2814256,00.html.
[2] Y. Linde, A. Buzo, and R. M. Gray, An Algorithm for Vector Quantizer Design,
IEEE Transactions on Communications, pp. 84-95, January 1989.
[3] Andersen, R.J., Petitcolas, F.A.P., On the limits of steganography. IEEE Journal of
Selected Areas in Communications, Special Issue on Copyright and Privacy
Protection 16 No.4 (1998) 474481.
[4] Johnson, Neil F. and Jajodia, Sushil. Steganography: Seeing the Unseen. IEEE
Computer, February 1998, pp.2634.
[5] William Stallings; Cryptography and Network Security: Principals and Practice,
Prentice Hall international, Inc.; 2002.[2]
[6] Eric Cole,"Hiding in Plain Sight: Steganography and the Art of Covert
Communication"
[7] Gregory Kipper,"Investigator's Guide to Steganography "
[8] Stefan Katzenbeisser and Fabien, A.P. Petitcolas ," Information Hiding Techniques
for Steganography and Digital Watermarking "
[9] Hiding secrets in computer files: steganography is the new invisible ink, as codes
stow away on images-An article from: The Futurist by Patrick Tucker.
[10] Ismail Avcbas, Member, IEEE, Nasir Memon,Member, IEEE, and Blent
Sankur, Member, "Steganalysis Using Image Quality Metrics," IEEE Transactions on
Image Processing, Vol 12, No. 2,February 2003..
[11] Niels Provos and Peter Honeyman, University of Michigan, "Hide and Seek: An
Introduction to Steganography" IEEE Computer Society IEEE Security &Privacy.
[12] R. Chandramouli and Nasir Memon, "Analysis of LSB Based Image
Steganography Techniques", IEEE 2001.