so unlike a normal photograph additional image is made up of pixels small
individual locations of certain color or a certain level of greyscale intensity
and restore my memory as a basically a very long list and along with other
information about the width and the height of the image we can then access
those pixels and determine what color they are and what we can do other things
like applying filters or compile them into some other video or something like
that
so to keep it simple to begin with for demonstration will talk only about
uncompressed images already loaded into memory so we'll have been a specific
file format light like a GIF file or BMP file
we'll talk about that some other time we'll talk just about uncompressed
images in memory how they are stored and how we use them usually a memory is a
contiguous block so it's one long line and so it's very helpful to us to
represent two-dimensional images as actually a very long line of of data so
we usually start with an image is some kind of header and that will tell us
what the image file format is how wide it is how tall it is and if there's any
other information like exif data walking a camera calibration data that sort of
thing will be included in there and then we essentially have a very very long
list of pixels so we start here and this point here will be our first row of our
image and we will have a pixel here we call picture 1 and then we'll have
another pixel here
pixel - and how long each of these pictures in memory will depend on the
type of image we're looking at
so if we doing let's say a 2 by 2 image then our image will look a bit like this
when it's finished
picture 1 2 3 & 4
so this is our image it's two pixels high and two pixels wide and so in
actual memory we have our header and then we have the first picture on a
second pixel
that's right one and then we might have some padding data that we won't worry
too much about that depends on the file format and then we'll just go on
straight on to our second row so we have pixel three and pixel for and that is
essentially our image stored in memory and then because we know how wide and
how high the images we can index these directly so we can say that if this is
our stride which is 1 plus 2 plus P then we can go one stride along to get to the
next row and then two strikes long to get to the next row and so on and we can
the image like that so that's what the image looks like on a very basic level
each of these pixels represent some amount of memory how much that is
depends on the type of image that we're looking at so if it's a grayscale image
generally speaking there be less than were used for me if it's an RGB image
RGB images are by far the most common most you know most images that we
capture RGB
oh geez red green yellow red green and blue and they represent the primary
colors that we detect in our eyes so that's that's why it's helpful to think
of more than a couple of extra properties of our marriage that we look
at is the bit depth and that is how many bits how many thoughts and ones
represent each individual element of color or gray and a number of channels
per pixel so that in an RGB image that might be three or more before his an RGB
alpha image is what absolute transparency so a pixel will have a
number of channels so let's say see in this case is 3 so for r g and b i'm in a
bit depth is usually eight you can get bit depths ranging from one which was
just an order one set of pixels I've also off up to 60 may be 32
that's very high just like with normal binary encoding the more bits you use
per pixel and / color channel
the more information you can hold so 8 is a maximum level of 255 for a bite
and so in this case we have free channels r g and b each of which can be
somewhere from north to 255 what with those numbers represents a 0 will be
what black yet so we'll be none of that color tool and 255 will be the most of
that color but the camera seen baby mine but some people posting would have taken
place because I so things like this and then so only do when you increase in a
bit
death is giving more different includes images relaxing yes that's exactly why
it's unlikely that you would use it to show even blighted because usually 255
would mean as as red as you could get
let's say so you would just have a fine of range of colors in between the most
general purpose use a bit depth of eight is is perfectly adequate because you've
got three different color channels doing that so that's that's perfectly ample so
and i'm a common file format would be an eight bits per pixel grayscale image so
if you go to image processing package and you take your color image and
convert it to grayscale what it usually does is some averaging of the three
color channels and then
a much more memory efficient way of storing that would be to represent it is
great
so in that case we have our header information and then we literally have
pics of one which will just be a grayscale value from not to 255 so we'll
have a bite here which pics a one and A by here which is pixel -
and by here which is pixel three and each of those only takes up one bite
rather than three or four for a normal RGB image and that's why RGB image is
generally much larger so alpha is very common when you're doing
image editing because it might be useful for sort of combination of layers above
the layers and things like this
it's obviously not very common in normal photographs because camera ,
transparency that wouldn't make much sense but in general 32-bit images that
is four channels per pixel is very common even when we're not using the
Alpha so you might find that your digital camera produces a 32-bit per
pixel 4-channel image even though he doesn't actually output transparency and
that alpha is just held as a padding bite and that way we can let we can
indirectly to our pixels in integer terms it makes it much more
not much simpler to do the mathematics of getting to a certain pixel and doing
something with it
if this is our header and this is our color image here then what in fact p 1
is is a low of RGB and then met possibly an alpha channel possibly something that
doesn't do anything
so we'd have the red here the green blue and this X here which may be an alpha
channel may not be in each of these in AP image will be eight bits long
so that's one bite so this is eight bits long this is eight to date and this is a
here and then some the total size of this pixel is 32 bits and that's what
32-bit images now 32 happens to be a lot of computer architecture slides with
integer or at least if it isn't you can get a 32-bit integer very easily and
that allows us to jump to a specific pixel somewhere in our image
so the height of our image is useful for knowing when we're going to go off the
end of the images into some other memory but in terms of indexing pixels we don't
use it
what we use is something called stride which is the width of a row of an image
bearing in mind any padding and that
depends on the file format so so so would you be fair to say that the
highest energies have many stripes of god that's exactly what yes but of
course you're looking at a single block of memory and if you're operating system
isn't being careful you want to make sure you don't go off the end if we know
what our stride is here and that will be some within bites of our image including
any padding and then we know we have a variable X and available why that tell
us which picture we want then where we want to go to is the very beginning of
our average plus a certain number of rows based on our y plus a certain
number of pixels based on always so the actual formula is the picture we want is
why x astride plus X and that will take us through a certain amount of loads of
data and straight to the way we want and then to the picture we want
and so this formula we can use to jump straight to the picture we want and they
were using some slightly more advanced programming and bit shifting we can
obtain the actual RGB data out of that integer and then we can do things to it
we could average them to make it a grayscale image or we could blur them or
we could add an alpha channel if we were doing some kind of more complicated
image editing something like that
I'll see you on i'm using image manipulation to make these computers are
videos all the time
it's fine selecting a pixel in Photoshop and decided to change my this is what's
going on this is that he was going on behind the scenes here so it will if you
select an individual pixel little OBX my location you will know how about images
stored in a big row in memory and it will index that location and alter the
RGB values for you which makes it a lot easier if we want to turn these into
pixels
all we need to do is look by the nearby pixels that have the color were looking
for an interplay that value
so in this case we don't have a green value here but we know what the screen
value is and we know what this great value ways