While I'm here, I thought I'd mention that a long exposure can introduce noise as well.
An advantage, that I've discovered, of the megapixel race is that as you go higher in MP, you do get more noise, but that noise becomes finer and finer. On my 7D the noise looks a bit more pleasing, and less like 'digital' noise.
Exposure is a huge contribution to noise. Shadow areas are already a problem, but underexposing will always highlight dark areas with noise. A way that can help is to overexpose, but without clipping the highlights - that is, shoot as bright as you can without losing information in the bright areas - and then pulling it back.
To understand everything, you have to understand what 'noise' is. I'm a scientist, so I deal with noisy data all the time. In regards to photography, I see it like this:
Each pixel on the sensor is considered a photosite - like a bucket that measures how much light hits it. Open the shutter, each pixel starts counting photons that hit it (conceptually). This counting is inherently imperfect.
This is fine for bright areas. Let's say for whatever setting a pixel is counting 1000 AU (arbitrary unit
). the adjacent pixel might count 990, and maybe the one on the other side is counting 1010. A difference of 1% - no big deal in the overall picture.
But in darker areas, let's say the pixels are counting in the region of 100. Adjacent pixels are counting 90 and 110. That's quite a difference, and this shows up a noise in the dark areas.
Now what is ISO? Iso isn't actually changing the hardwired sensitivity of the sensor - it's just gaining up. Think o fit like counting the pixels in a dark area and then multiplying it up. Those same pixels measuring 90, 100, and 110, scaled up to the brightness of the previous example (x10), and you're looking at 900, 1000, and 1100. Large errors, and hence more noise.
Of course this is all conceptual. I have no idea how sensors REALLY work - a hardwired gaining of sensor iso isn't just scaling up photon counts (which is more a software thing), but is similar.
The reason why digital noise is a lot more horrible than film grain, I don't know, but I'd hypothesise it has to do with the bayer filter over sensors. Each pixel on a sensor only records light. It doesn't know anything about colour inherently whatsoever. The bayer filter applies a colour filter over each pixel, either red, green, or blue, thus making each pixel only measure light of that colour. The camera reassembles the information to make a 8-bit 3-channel colour code known for image files from that information.
The chroma noise, I'm guessing, comes from the inherent sensitivity of sensors to green light, as the pixel arrangement in the bayer filter is 1red, 2 green, and 1 blue for every 4 pixels. So twice as much error goes into the green channel.
Just a guess though. I really am talking out of my butt here. Maybe some technical people can add to clarify.