Lecture 10 Grey Level & Colour Enhancement (2) TK3813 Dr. Masri Ayob.

Slides:



Advertisements
Similar presentations
Point Processing Histograms. Histogram Equalization Histogram equalization is a powerful point processing enhancement technique that seeks to optimize.
Advertisements

Lecture 9 Grey Level & Colour Enhancement TK3813 Dr. Masri Ayob.
Digital Image Processing
Grey Level Enhancement Contrast stretching Linear mapping Non-linear mapping Efficient implementation of mapping algorithms Design of classes to support.
Image Processing Lecture 4
Chapter 3 Image Enhancement in the Spatial Domain.
Chapter - 2 IMAGE ENHANCEMENT
Image Histograms Cumulative histogram
Digital Image Processing Lecture11: Histogram Processing.
Intensity Transformations (Chapter 3)
EE4H, M.Sc Computer Vision Dr. Mike Spann
EE663 Image Processing Histogram Equalization Dr. Samir H. Abdul-Jauwad Electrical Engineering Department King Fahd University of Petroleum & Minerals.
Digital Image Processing
Histogram Processing The histogram of a digital image with gray levels from 0 to L-1 is a discrete function h(rk)=nk, where: rk is the kth gray level nk.
ECE 472/572 - Digital Image Processing
Image Enhancement in the Spatial Domain
Intensity Transformations
What's a histogram? The Histogram shows the total tonal distribution in the image – global quality. It's a bar-chart of the count of pixels of every tone.
Chapter 4: Image Enhancement
BYST Eh-1 DIP - WS2002: Enhancement in the Spatial Domain Digital Image Processing Bundit Thipakorn, Ph.D. Computer Engineering Department Image Enhancement.
E.G.M. PetrakisFiltering1 Linear Systems Many image processing (filtering) operations are modeled as a linear system Linear System δ(x,y) h(x,y)
Lecture 4 Digital Image Enhancement
Digital Image Processing In The Name Of God Digital Image Processing Lecture3: Image enhancement M. Ghelich Oghli By: M. Ghelich Oghli
Multimedia Data Introduction to Image Processing Dr Mike Spann Electronic, Electrical and Computer.
Image Enhancement To process an image so that the result is more suitable than the original image for a specific application. Spatial domain methods and.
EEE 498/591- Real-Time DSP1 What is image processing? x(t 1,t 2 ) : ANALOG SIGNAL x : real value (t 1,t 2 ) : pair of real continuous space (time) variables.
6/9/2015Digital Image Processing1. 2 Example Histogram.
Lecture 11 Neighbourhood Operations (1)
Multimedia Data Introduction to Image Processing Dr Mike Spann Electronic, Electrical and Computer.
Digital Image Processing
Image Enhancement.
Image Analysis Preprocessing Arithmetic and Logic Operations Spatial Filters Image Quantization.
Spectral contrast enhancement
Lecture 4 Digital Image Enhancement
CS 376b Introduction to Computer Vision 02 / 26 / 2008 Instructor: Michael Eckmann.
Machine Vision ENT 273 Image Filters Hema C.R. Lecture 5.
University of Ioannina - Department of Computer Science Intensity Transformations (Point Processing) Christophoros Nikou Digital Image.
The Digital Image Dr. John Ryan.
Image Processing Image Histogram Lecture
Multimedia Data Introduction to Image Processing Dr Sandra I. Woolley Electronic, Electrical.
Point Operations – Chapter 5. Definition Some of the things we do to an image involve performing the same operation on each and every pixel (point) –We.
DIGITAL IMAGE PROCESSING
Digital Image Processing Lecture 4: Image Enhancement: Point Processing Prof. Charlene Tsai.
CIS 601 Image ENHANCEMENT in the SPATIAL DOMAIN Dr. Rolf Lakaemper.
EE663 Image Processing Dr. Samir H. Abdul-Jauwad Electrical Engineering Department King Fahd University of Petroleum & Minerals.
CS654: Digital Image Analysis Lecture 18: Image Enhancement in Spatial Domain (Histogram)
Intensity Transformations (Histogram Processing)
Digital Image Processing Image Enhancement in the Spatial Domain.
Digital Image Processing, 2nd ed. © 2002 R. C. Gonzalez & R. E. Woods  Process an image so that the result will be more suitable.
Machine Vision ENT 273 Image Filters Hema C.R. Lecture 5.
Ch5 Image Restoration CS446 Instructor: Nada ALZaben.
Image Subtraction Mask mode radiography h(x,y) is the mask.
CSSE463: Image Recognition Day 5 Lab 2 due Wednesday, 1:30. Lab 2 due Wednesday, 1:30. Tip: by Tues 1:30  + 1 late day to use on: Tip: by Tues 1:30 
Intelligent Vision Systems ENT 496 Image Filtering and Enhancement Hema C.R. Lecture 4.
More digital reading explaining LUT RT 244 Perry Sprawls, Ph.D. Professor Emeritus Department of Radiology Emory University School of.
Digital Image Processing Part 2 Contrast processing.
Machine Vision Edge Detection Techniques ENT 273 Lecture 6 Hema C.R.
Lecture Reading  3.1 Background  3.2 Some Basic Gray Level Transformations Some Basic Gray Level Transformations  Image Negatives  Log.
More digital 244 wk 12 Perry Sprawls, Ph.D. Professor Emeritus Department of Radiology Emory University School of Medicine Atlanta, GA,
Digital Image Processing Lecture 4: Image Enhancement: Point Processing January 13, 2004 Prof. Charlene Tsai.
Digital Image Processing Image Enhancement in Spatial Domain
Instructor: Mircea Nicolescu Lecture 5 CS 485 / 685 Computer Vision.
Image Enhancement in the Spatial Domain.
Digital Image Processing
Histogram Histogram is a graph that shows frequency of anything. Histograms usually have bars that represent frequency of occuring of data. Histogram has.
Image Enhancement in the Spatial Domain
CSC 381/481 Quarter: Fall 03/04 Daniela Stan Raicu
Digital Image Procesing Introduction to Image Enhancement Histogram Processing DR TANIA STATHAKI READER (ASSOCIATE PROFFESOR) IN SIGNAL PROCESSING IMPERIAL.
Image Enhancement in the Spatial Domain
Presentation transcript:

Lecture 10 Grey Level & Colour Enhancement (2) TK3813 Dr. Masri Ayob

2 Image Histogram The histogram of an image is a table containing (for every gray level K) the probability of level K actually occurring in the image The histogram could also be viewed as a frequency distribution of gray level within the image. Calculation of an image histogram: Create an array histogram with 2 b elements For all grey levels, I, do histogram[i]=0 End for For all pixel coordinates, x and y, do increment histogram[f(x,y)] by 1 End for Calculation of an image histogram: Create an array histogram with 2 b elements For all grey levels, I, do histogram[i]=0 End for For all pixel coordinates, x and y, do increment histogram[f(x,y)] by 1 End for

3 Image Histogram Example

4 Image Histograms The histogram on the left is representative of an “under- exposed” image. It has very few “bright” pixels and doesn’t make good use of the full dynamic range available. The histogram on the left is representative of an “over- exposed” image. It has very few “dark” pixels and doesn’t make good use of the full dynamic range available. The histogram on the left is representative of an “poor contrast” image. It has very few “dark” and very few “light” pixels. It doesn’t make good use of the full dynamic range available. Contrast : Amount of difference between average gray level of an object and that of surroundings

5 Image Histogram- Dark Image

6 Image Histogram Added 150 to all pixels. If sum >255 at a pixel, gray level for that pixel is clipped to 255.

7 Image Histograms The histogram on the left is representative of an image with good contrast. It makes good use of the full dynamic range available. You can’t tell if an image is “good” just by looking at the histogram…but the histogram may give you a “tingly feeling” that something isn’t quite right. Brightness span of an image’s gray scale

8 Image Histogram The histogram seems “uneven” but the image has good contrast. It just happens to be a naturally “bright” image.

9 Image Histogram The histogram seems “squeezed” and it does indicate (in this case) that the image has poor contrast.

10 Low contrast & low dynamic range

11 Higher contrast & dynamic range

12 Test Your Knowladge A: Both have the same histogram. Q: The image on the right was obtained by swapping the top and bottom halves of the image on the left. What is the relationship of the histograms of the two images?

13 Cumulative Distribution Function The CDF of an image is a table containing (for every gray level K) the probability of a pixel of level K OR LESS actually occurring in the image The CDF can be computed from the histogram as:

14 Cumulative Distribution Function The CDF of represents a monotonically increasing function. The derivative (slope) of the CDF is steep where there are lots of pixels and low where there are few pixels Image histogramImage CDF A function which is either entirely nonincreasing or nondecreasing. A function is monotonic if its first derivative (which need not be continuous) does not change sign.

15 Cumulative Distribution Function The CDF of an image having uniformly distributed pixel levels is a straight-line with slope 1 (using normalized gray levels). The derivative of the CDF is constant. Image histogram Image CDF Image histogram Image CDF

16 Histogram Processing Histogram of a digital image with gray levels in the range [0,L-1] is a discrete function h(r k ) = n k Where r k : the k th gray level n k : the number of pixels in the image having gray level r k h(r k ) : histogram of a digital image with gray levels r k

17 Histogram Processing Basic for numerous spatial domain processing techniques Used effectively for image enhancement Information inherent in histograms also is useful in image compression and segmentation

18 Normalized Histogram The probability of occurrence of gray level in an image is approximated by The discrete version of transformation

19 Histogram Equalization r k s k Thus, an output image is obtained by mapping each pixel with level r k in the input image into a corresponding pixel with level s k in the output image In discrete space, it cannot be proved in general that this discrete transformation will produce the discrete equivalent of a uniform probability density function, which would be a uniform histogram

20 Histogram Equalization As the low-contrast image’s histogram is narrow and centered toward the middle of the gray scale, if we distribute the histogram to a wider range the quality of the image will be improved. We can do it by adjusting the probability density function of the original histogram of the image so that the probability spread equally

21 Histogram Equalization Used to automatically distribute pixel values evenly throughout the image each gray level should appear with identical probability in the image Often enhances an image, but not always

22 Histogram Equalization

23 Histogram Equalization E.g., consider equalizing the following 4-bit image using the above formula:

24 Histogram Equalization Before After

25 Before After Resulting image has increased dynamic range. Resulting histogram almost, but not completely, flat. Appears jagged and some gray levels unoccupied since finite number of gray levels are available.

26 Histogram Equalization Example Source: Institue of Biotechnology, University of Helsinki, Mouse embryo 13 d pc, tissue section from molar tooth

27 Example beforeafterHistogram equalization

28 Example x4 image Gray scale = [0,9] histogram No. of pixels Gray level

29 Gray Level(j) No. of pixels / / / 16 / 16 / 16 / 16 / 16 / 16 s x 3 6.1 6 8.4 

30 Example Output image Gray scale = [0,9] Histogram equalization No. of pixels Gray level Input image

31 Note It is clearly seen that Histogram equalization distributes the gray level to reach the maximum gray level (white) because the cumulative distribution function equals 1 when 0  r  L-1 If the cumulative numbers of gray levels are slightly different, they will be mapped to little different or same gray levels as we may have to approximate the processed gray level of the output image to integer number Thus the discrete transformation function can’t guarantee the one to one mapping relationship

32 Note Histogram processing methods are global processing, in the sense that pixels are modified by a transformation function based on the gray-level content of an entire image. Sometimes, we may need to enhance details over small areas in an image, which is called a local enhancement.

33 Local Enhancement define a square or rectangular neighbourhood and move the center of this area from pixel to pixel. at each location, the histogram of the points in the neighborhood is computed and histogram equalization transformation function is obtained. another approach used to reduce computation is to utilize nonoverlapping regions, but it usually produces an undesirable checkerboard effect. a)Original image (slightly blurred to reduce noise) b)global histogram equalization (enhance noise & slightly increase contrast but the construction is not changed) c)local histogram equalization using 7x7 neighborhood (reveals the small squares inside larger ones of the original image. (a) (b)(c)

34 Explain the result in c) Basically, the original image consists of many small squares inside the larger dark ones. However, the small squares were too close in gray level to the larger ones, and their sizes were too small to influence global histogram equalization significantly. So, when we use the local enhancement technique, it reveals the small areas. Note also the finer noise texture is resulted by the local processing using relatively small neighborhoods.

35 Implementation Take a look at the built-in BuffereImageOp interface Method Summary BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) Creates a zeroed destination image with the correct size and number of bands. BufferedImage filter(BufferedImage src, BufferedImage dest) Performs a single-input/single-output operation on a BufferedImage. Rectangle2D getBounds2D(BufferedImage src) Returns the bounding box of the filtered destination image. Point2D getPoint2D(Point2D srcPt, Point2D dstPt) Returns the location of the corresponding destination point given a point in the source image. RenderingHints getRenderingHints() Returns the rendering hints for this operation.

36 Implementation public class StandardGreyOp implements BufferedImageOp { public BufferedImage filter(BufferedImage src, BufferedImage dest) { checkImage(src); if (dest == null) dest = createCompatibleDestImage(src, null); WritableRaster raster = dest.getRaster(); src.copyData(raster); return dest; } public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destModel) { if (destModel == null) destModel = src.getColorModel(); int width = src.getWidth(); int height = src.getHeight(); BufferedImage image = new BufferedImage(destModel, destModel.createCompatibleWritableRaster(width, height), destModel.isAlphaPremultiplied(), null); return image; } // other methods here /// } public class StandardGreyOp implements BufferedImageOp { public BufferedImage filter(BufferedImage src, BufferedImage dest) { checkImage(src); if (dest == null) dest = createCompatibleDestImage(src, null); WritableRaster raster = dest.getRaster(); src.copyData(raster); return dest; } public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destModel) { if (destModel == null) destModel = src.getColorModel(); int width = src.getWidth(); int height = src.getHeight(); BufferedImage image = new BufferedImage(destModel, destModel.createCompatibleWritableRaster(width, height), destModel.isAlphaPremultiplied(), null); return image; } // other methods here /// }

37 Implementation public class StandardGreyOp implements BufferedImageOp { // other methods here public Rectangle2D getBounds2D(BufferedImage src) { return src.getRaster().getBounds(); } public Point2D getPoint2D(Point2D srcPoint, Point2D destPoint) { if (destPoint == null) destPoint = new Point2D.Float(); destPoint.setLocation(srcPoint.getX(), srcPoint.getY()); return destPoint; } public RenderingHints getRenderingHints() { return null; } public void checkImage(BufferedImage src) { if (src.getType() != BufferedImage.TYPE_BYTE_GRAY) throw new ImagingOpException("operation requires an 8-bit grey image"); } public class StandardGreyOp implements BufferedImageOp { // other methods here public Rectangle2D getBounds2D(BufferedImage src) { return src.getRaster().getBounds(); } public Point2D getPoint2D(Point2D srcPoint, Point2D destPoint) { if (destPoint == null) destPoint = new Point2D.Float(); destPoint.setLocation(srcPoint.getX(), srcPoint.getY()); return destPoint; } public RenderingHints getRenderingHints() { return null; } public void checkImage(BufferedImage src) { if (src.getType() != BufferedImage.TYPE_BYTE_GRAY) throw new ImagingOpException("operation requires an 8-bit grey image"); }

38 Implementation public abstract class GreyMapOp extends StandardGrayOp { protected byte[] table = new byte[256]; // lookup table public abstract void computeMapping(int low, int high); public int getTableEntry(int i) { if (table[i] < 0) return (int) table[i]; else return (int) table[i]; } protected void setTableEntry(int i, int value) { if (value < 0) table[i] = (byte) 0; else if (value > 255) table[i] = (byte) 255; else table[i] = (byte) value; } public void computeMapping() { computeMapping(0, 255); } public BufferedImage filter(BufferedImage src, BufferedImage dest) { checkImage(src); if (dest == null) dest = createCompatibleDestImage(src, null); LookupOp operation = new LookupOp(new ByteLookupTable(0, table), null); operation.filter(src, dest); return dest; } public abstract class GreyMapOp extends StandardGrayOp { protected byte[] table = new byte[256]; // lookup table public abstract void computeMapping(int low, int high); public int getTableEntry(int i) { if (table[i] < 0) return (int) table[i]; else return (int) table[i]; } protected void setTableEntry(int i, int value) { if (value < 0) table[i] = (byte) 0; else if (value > 255) table[i] = (byte) 255; else table[i] = (byte) value; } public void computeMapping() { computeMapping(0, 255); } public BufferedImage filter(BufferedImage src, BufferedImage dest) { checkImage(src); if (dest == null) dest = createCompatibleDestImage(src, null); LookupOp operation = new LookupOp(new ByteLookupTable(0, table), null); operation.filter(src, dest); return dest; }

39 Implementation public class SquareRootOp extends GreyMapOp { public SquareRootOp() { computeMapping(); } public SquareRootOp(int low, int high) { computeMapping(low, high); } public void computeMapping(int low, int high) { if (low 255 || low >= high) throw new java.awt.image.ImagingOpException("invalid mapping limits"); double a = Math.sqrt(low); double b = Math.sqrt(high); double scaling = / (b - a); for (int i = 0; i < 256; ++i) { int value = (int) Math.round(scaling*(Math.sqrt(i) - a)); setTableEntry(i, value); } public class SquareRootOp extends GreyMapOp { public SquareRootOp() { computeMapping(); } public SquareRootOp(int low, int high) { computeMapping(low, high); } public void computeMapping(int low, int high) { if (low 255 || low >= high) throw new java.awt.image.ImagingOpException("invalid mapping limits"); double a = Math.sqrt(low); double b = Math.sqrt(high); double scaling = / (b - a); for (int i = 0; i < 256; ++i) { int value = (int) Math.round(scaling*(Math.sqrt(i) - a)); setTableEntry(i, value); }

40 Implementation public class EqualiseOp extends GreyMapOp { public EqualiseOp(Histogram hist) throws HistogramException { float scale = 255.0f / hist.getNumSamples(); for (int i = 0; i < 256; ++i) table[i] = (byte) Math.round(scale*hist.getCumulativeFrequency(i)); } public void computeMapping(int low, int high) { // Does nothing - limits are meaningless in histogram equalisation } public class EqualiseOp extends GreyMapOp { public EqualiseOp(Histogram hist) throws HistogramException { float scale = 255.0f / hist.getNumSamples(); for (int i = 0; i < 256; ++i) table[i] = (byte) Math.round(scale*hist.getCumulativeFrequency(i)); } public void computeMapping(int low, int high) { // Does nothing - limits are meaningless in histogram equalisation }

41 Implementation public final class Histogram implements Cloneable { public Histogram(); public Histogram(Reader reader); public Histogram(BufferedImage image) throws HistogramException; public void computeHistogram(BufferedImage image) throws HistogramException; private void accumulateFrequencies(BufferedImage image) throws HistogramException { if (image.getType() == BufferedImage.TYPE_BYTE_BINARY || image.getType() == BufferedImage.TYPE_USHORT_GRAY) throw new HistogramException("invalid image type"); Raster raster = image.getRaster(); if (image.getType() == BufferedImage.TYPE_BYTE_GRAY) { for (int y = 0; y < image.getHeight(); ++y) for (int x = 0; x < image.getWidth(); ++x) ++freq[0][raster.getSample(x, y, 0)]; } else { int[] value = new int[3]; for (int y = 0; y < image.getHeight(); ++y) for (int x = 0; x < image.getWidth(); ++x) { raster.getPixel(x, y, value); ++freq[0][value[0]]; ++freq[1][value[1]]; ++freq[2][value[2]]; } public final class Histogram implements Cloneable { public Histogram(); public Histogram(Reader reader); public Histogram(BufferedImage image) throws HistogramException; public void computeHistogram(BufferedImage image) throws HistogramException; private void accumulateFrequencies(BufferedImage image) throws HistogramException { if (image.getType() == BufferedImage.TYPE_BYTE_BINARY || image.getType() == BufferedImage.TYPE_USHORT_GRAY) throw new HistogramException("invalid image type"); Raster raster = image.getRaster(); if (image.getType() == BufferedImage.TYPE_BYTE_GRAY) { for (int y = 0; y < image.getHeight(); ++y) for (int x = 0; x < image.getWidth(); ++x) ++freq[0][raster.getSample(x, y, 0)]; } else { int[] value = new int[3]; for (int y = 0; y < image.getHeight(); ++y) for (int x = 0; x < image.getWidth(); ++x) { raster.getPixel(x, y, value); ++freq[0][value[0]]; ++freq[1][value[1]]; ++freq[2][value[2]]; }

42 PsuedoColoring Artifical coloring (PsuedoColoring) can often enhance the presentation of image information Replaces the gray-scale levels by an arbitrarily selected palette or color bar

43 PsuedoColoring Color Tables are arbitrarily selected Palettes of colors. There are ways to automatically compute interesting palettes. Tables below were generated using offset sinusoidal waves in each of the RGB bands

44 PsuedoColoring The color tables below were generated by using offset sinusoids into each of the RGB bands.

45 Psuedo Coloring Example Weather satellite image. Note the way the colorized image brings out certain details that are difficult to distinguish in the original.

46 Psuedo Coloring Example Source: Institue of Biotechnology, University of Helsinki, Mouse embryo 13 d pc, tissue section from molar tooth The above tissue sample is colorized using two different color tables. Take your pick!

47 Image Averaging consider a noisy image g(x,y) formed by the addition of noise (x,y) to an original image f(x,y) g(x,y) = f(x,y) + (x,y)

48 Image Averaging if noise has zero mean and be uncorrelated then it can be shown that if = image formed by averaging K different noisy images

49 Image Averaging Note: the images g i (x,y) (noisy images) must be registered (aligned) in order to avoid the introduction of blurring and other artifacts in the output image.

50 Example a) original image b) image corrupted by additive Gaussian noise with zero mean and a standard deviation of 64 gray levels. c). -f). results of averaging K = 8, 16, 64 and 128 noisy images ab cd ef

51 Image Subtraction g(x,y) = f(x,y) – h(x,y) Enhancement of the differences between images.

52 Image Substraction

53 Image Substraction

54