Neighborhood Processing Image Enhancement

Neighborhood
Processing

• Introduction
• Filters (LPF, HPF, Gaussian Filter, …)
• Region of interest processing

Basic Image Processing
Operations
• Neighborhood processing

• process the pixel with its neighbors

• Point operations
• process according to the pixel’s value alone.

Point Operations

Point Processing
Original
Original


Invert
Invert

Darken
Darken

Lighten
Lighten

Lower
LowerContrast
Contrast

Nonlinear
NonlinearRaise
Raise
Contrast
Contrast


Raise
RaiseContrast
Contrast

Nonlinear
NonlinearLower
Lower
Contrast
Contrast

Point Processing
Original
Original

Darken
Darken

x

x - 128


Invert
Invert

255 - x

Lighten
Lighten

x + 128

Lower
LowerContrast
Contrast

x / 2

Raise
RaiseContrast
Contrast


x * 2

Nonlinear
NonlinearRaise
Raise
Contrast
Contrast

((x / 255.0) ^ 0.33) * 255.0

Nonlinear
NonlinearLower
Lower
Contrast
Contrast

((x / 255.0) ^2) * 255.0

Neighborhood Operations


Neighborhood operations

Image

Edge detection

Blur

• Deteksi tepi ( Edge detection ) adalah operasi yang dijalankan untuk
mendeteksi garis tepi (edges) yang membatasi dua wilayah citra
homogen yang memiliki tingkat kecerahan yang berbeda
• Tujuannya adalah untuk mengubah citra 2D menjadi bentuk kurva
.

Neighborhood Processing

3x3 Mask

Output derives from multiplying all elements in the mask

by corresponding elements in the neighborhood and
adding together all these products.

Filter
• A rule or procedure for processing an image
• Combination of mask and function
• Goal: separating/attenuating a desired component of an
observed image
• Type:
• Linear (function), Nonlinear (function)
• Low-pass filter (LPF), High-pass filter (HPF), Band-pass filter (BPF)

Steps of Linear Spatial
Filtering

• Position the mask over the current pixel.
• Form all products of filter elements with the corresponding
elements of the neighborhood.
• Add all products.
• Other names for mask:

filter, filter mask, kernel, template or window, etc.

Linear Spatial Filter: Example
(1)
1/9 1/9

1/9

1/9 1/9 1/9
2

15

10

20

10

0


0

10

15

10

5

20

10

10

15

1/9 1/9 1/9


Average Filter

Find the output intensity of the blue pixel.

Linear Spatial Filter: Example
(2)
15
1/9

10
1/9

20
1/9

0 1/9

101/9


15 1/9

1/9

1/9
10

1/9

20

10

Multiply the number in the filter’s element with the
corresponding pixel’s intensity.

Linear Spatial Filter: Example
(3)
15/9


10/9

20/9

0/9

10/9

15/9

20/9

10/9

10/9

15/9 + 10/9 + 20/9 +
0/9 + 10/9 + 15/9 +
20/9 + 10/9 + 10/9
= 12.22
Output intensity of blue pixel
= 12.22

Add all products for output.
Spatial filtering is spatial convolution.

Correlation and
Convolution
of Digital Image

Correlation
• Sum of the product of mask and intensity on each point.



g output [n]   f input [k ]h function [k  n]
k 

Example: Correlation (1)
1

2

3

10

20

10

15

5

2

3

4

5

10

15

10

0

3

4

5

20

10

20

15

5

10

5

0

0

10

10

20

15

0

10

Kernel

Example: Correlation (2)
10

15

10

1

2

3

10 2

20 3

15 4

3

4

5

5

0

0

Multiply and sum all products.

101 +152 +103
+102 +203
+154 +53 +04
+05
= 225

Exercise: Correlation
1

2

3

0

0

0

0

0

2

3

4

0

0

0

0

0

3

4

5

0

0

1

0

0

0

0

0

0

0

0

0

0

0

10

Kernel

Find the correlation of the green kernel to the above image.

Convolution
• Sum of the response on each point



g output [n]   f input [k ]h function [n  k ]
k 

Example: Convolution (1)
5

4

3

10

20

10

15

5

4

3

2

5

10

15

10

0

3

2

1

20

10

20

15

5

10

5

0

0

10

10

20

15

0

10

Reverse Kernel!!

1

2

3

2

3

4

3

4

5

Kernel

Example: Convolution (2)
10

15

10

5

4

3

10 4

20 3

15 2

3

2

1

5

0

0

Multiply and sum all products.

105 +154 +103
+104 +203
+152 +53 +02
+01
= 285

Exercise: Convolution
1

2

3

0

0

0

0

0

2

3

4

0

0

0

0

0

3

4

5

0

0

1

0

0

0

0

0

0

0

0

0

0

0

10

Kernel

Find the convolution of the green kernel to the above image.

Filtering the Image

Example: HPF
10

20

10

15

5

5

10

15

10

0

20

10

20

15

5

10

5

0

0

10

10

20

15

0

10

Input image

1

-2

1

-2

4

-2

1

-2

1

Kernel

Example: HPF (2)
10

20

10

15

5

5

0

20

-10

0

20

-40

25

15

5

10

5

-35

0

10

10

20

15

0

10

Filtered Image

Edges of The Image
• A linear filter is represented as a matrix, e.g., the 3 x 3 averaging
filter.

1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9

• Edges of the Image
• There are a number of different approaches to dealing with this problem.
• Ignore the edges: The mask is applied to all pixels except the edges and
results in an output image that is smaller than the original. If the mask is very
large, a significant amount of information may be lost.
• Pad with zeros: We assume that all necessary values outside the image are
zero. It will return an output image of the same size as the original, but may
have the effect of introducing unwanted artifacts, e.g., edges, around the
image.

Edges of The Image
Batas atau tepi citra (edges of the image)
•hal yang harus diselesaikan dalam operasi filtering
•misalnya, bagaimana jika sebagian “mask” berada di luar
citra.

Edges of The Image (1)
Tidak mempedulikan batas atau tepi citra
•“mask” hanya diaplikasikan pada piksel-piksel citra dimana
seluruh “mask” berada dalam citra.
•Pendekatan ini menghasilkan citra output yang ukurannya
lebih kecil daripada citra input.
•Jika ukuran “mask” sangat besar, akan menyebabkan sejumlah
besar informasi menjadi hilang.

Edges of The Image (2)
Tambahkan piksel-piksel dengan nilai 0 (Pad with zeroes)
•Dalam pendekatan ini, diasumsikan bahwa semua piksel yang
berada di luar citra mempunyai nilai grey-level nol.
•Pendekatan ini menghasilkan citra output yang ukurannya sama
dengan citra input, namun kadang mempunyai pengaruh pada
batas-batas tepi citra.

Filtering in MATLAB
• Command: filter2
• Syntax: filter2(filter, image, shape);
filter2(filter, image);
• shape:
• ‘same’: pad edge with zeros. Size unchanged. (default)
• ‘valid’: apply mask only to inside pixel. Size smaller.
• ‘full’: pad edge with zeros and applying the filter at all places on and
around the image where the mask intersects the image matrix. Size
larger.

Filter Construction in
MATLAB
• Command: fspecial
• Syntax: fspecial(type, parameter);
fspecial(type);
• type: type of the filter
• ‘average’ : average filter
• ‘gaussian’ : Gaussian filter
• ‘laplacian’ : Laplacian filter …

• parameter: parameter of the filter (size, sigma, …). Default varies
among filter. Try!!!

Filter Construction in
MATLAB

• HALF

Filter on Frequency Domain
• Low-pass filter (LPF): filter that allows only the low-frequency
components and reduces or eliminates the high-frequency
components.
• E.g. Gaussian, average

• High-pass filter (HPF): filter that allows only the high-frequency
components and reduces or eliminates the low-frequency components.
• E.g. Laplacian, Prewitt, Sobel

• Spatial data (intensity) transformed by Fourier transform.
• Simplified version:
• high-frequency indicates the abrupt changes in intensity  edges.
• low-frequency indicates the intensity smoothness  uniform region.

Computing Consideration
• Filter may lead to the value outside [0,255]
• Solution 1: Make negative values positive (use
absolute value)  good when there are few negative
values and the negative values are close to zero
• Solution 2: Clip values. Values larger than 255 become
255 and values less than 0 become 0.  not good if
there are many values outside the range.
• Solution 3: Scaling transformation. Rescale the range
to [0,255] by pixel transform. Suppose gL and gH are
the lowest and the highest values. (dgn transformasi
linier)

Rescaling Intensity
Rescaled value (y)

1. Map gL to 0.
2. Map gH to 255.
3. Interpolate for
the remaining
intensity.

gL

255

x  gL
y 255
gH  gL
0

gH

Filtered
value (x)

Rescaling: MATLAB
• Manual:
>> gH = max(filtered_image(:));
>> gL = min(filtered_image(:));
>> scaled = (image – gmin)/(gmax – gmin);
Note: No need to rescale to 255 because intensity range for
double image is [0,1].

Rescaling: MATLAB (2)
• Command: mat2gray
• Syntax: mat2gray(double_image);
What this command do?
• scale the value in double_image to displayable value. Output is
double type.
• minimum value is mapped to 0.
• maximum value is mapped to 1.

Low Pass Filter
Averaging
Smoothing

Low Pass Filter
• Useful for reducing noise and eliminating small details.
• The elements of the mask must be positive.
• Sum of mask elements is 1 (after normalization).

Gaussian

Low Pass Filter : Averaging

Filter Average
• Filter average penting dalam permasalahan-permasalahan di
mana aspek citra yang menjadi perhatian adalah bukan detail
citra
• objek pengamatan :
berapa jumlah objek yang ada pada citra
luas daerah gelap dan daerah terang pada citra.
• Ex : template matching

Low Pass Filter : Averaging
• Mask size determines the degree of smoothing (loss of detail).
original

3x3

15x15

5x5

25x25

7x7

Low Pass Filter : Averaging
• Mask size determines the degree of smoothing (loss of detail).
filter average ukuran 15 x 15

Low Pass Filter : Gaussian


x2

• 1D Gaussian filter:

f ( x) e

• 2D Gaussian filter:

f ( x, y ) e

2 2
x2  y2

2 2

http://www-mmdb.iai.uni-bonn.de/lehre/BIT/ss03_DSP_Vorlesung/matlab_demos/
http://upload.wikimedia.org/wikipedia/su/thumb/3/38/Gaussian-pdf.png/300px-Gaussian-pdf.png

Low Pass Filter : Gaussian
• σ (sigma) controls the amount of smoothing
• As σ increases, more samples must be obtained to represent
• the Gaussian function accurately.

σ=3
σ = 1.4

Low Pass Filter : Gaussian
Filter Gaussian
•Implementasinya : membangun filter Gaussian, mengalikannya
dengan matriks hasil transformasi Fourier, dan menginversikan
hasilnya.
•Filter Gaussian merupakan jenis filter yang “paling smooth” dan
filter ideal merupakan filter yang “paling tidak smooth”.
Sedangkan filter Butterworth berada diantara keduanya.

Benefits of Gaussian Filter
• They are mathematically very well behaved. The
Fourier transform of a Gaussian filter is another
Gaussian.
• There are rotationally symmetric, so are very
good starting points for some edge-detection
algorithms.
• They are separable in x and y axes. This can lead
to very fast implementations.
• The convolution of two Gaussians is another
Gaussian.

Low Pass Filter : Gaussian
• Effect of Gaussian filter = blurring
• larger leads to more blur.

•  average filter

Averaging

Gaussian

50

Averaging vs Gaussian Smoothing

Gaussian Filter: MATLAB
• Construction of Gaussian filter:
• command: fspecial(‘gaussian’, size, gamma);
size : size of the filter [row column], default [3 3]
gamma : , default 0.5.

>>gaussian1 = fspecial(‘gaussian’, [5 5], 5);
Create the 55 Gaussian filter with the  value of 5.

>>gaussian2 = fspecial(‘gaussian’, 3, 0.75);
 Create the 33 Gaussian filter with the  value of 0.75.

TRY !!

High Pass Filter
Edge Sharpening

High Pass Filter
Useful for highlighting fine details.
The elements of the mask contain both positive and
negative weights.
Sum of mask elements is 0.

1st derivative
of Gaussian

2nd derivative
of Gaussian

Edge Sharpening
• Also known as edge enhancement, edge crispening, unsharp
masking.
• Process to make the edge slightly sharper (tajam) and crisper
(tegas).
• E.g. linear edge sharpening, unsharp masking, high boost
filtering
• High pass filter (HPF)
• Increase the edge power
• Example:

 0  1 0    1  1  1  1  2 1 
  1 5  1 ,   1 9  1 ,   2 5  2

 
 

 0  1 0    1  1  1  1  2 1 

High Pass Filter : MATLAB
• Command: filter2
• Syntax: filter2(filter, image, shape);
filter2(filter, image);
• shape:
• ‘same’: pad edge with zeros. Size unchanged. (default)
• ‘valid’: apply mask only to inside pixel. Size smaller.
• ‘full’: pad edge with zeros and applying the filter at all places on and
around the image where the mask intersects the image matrix. Size
larger.

TRY !!

LPF - HPF
• LPF = perbedaan warna rendah
• HPF = perbedaan warna tinggi atau signifikan

TRY !!

Unsharp Masking
and High Boost
Filter

Unsharp Masking

Unsharp Masking
• Obtain a sharp image by subtracting a lowpass filtered
(i.e., smoothed) image from the original image:

-

=
(after contrast
enhancement)

Unsharp Filter
[unsharp_image] = [input] – (a [filter]  [input])
= (I* – a [filter])  [input]
= [unsharp_filter]  [input]
I* : matrix whose center member is 1 and the others are zero.
E.g. for 3  3 matrix I* =

 0 0 0
 0 1 0



• For 33 matrix, after some rearranging
term:0
0 0

[unsharp_filter] =

 1  
1 



1


5


1


MATLAB use this format withthe
 1default
 of 0.2.
     1   

Unsharp Filter: MATLAB
• Command: fspecial
• Syntax: fspecial(‘unsharp’, alpha);
• alpha : alpha value for unsharp filter
• Size of the filter is fixed to 3  3

TRY !!

Effect of Unsharp Masking

BEFORE

AFTER
http://ise.hansung.ac.kr/jun/DI/Chapter-5.htm

High Boost Filter
Image sharpening emphasizes edges but low frequency
components are lost. (menekankan ketajaman)
High boost filter: amplify input image, then subtract a lowpass
image.

Best result when 3/5  A  5/6
• Used in dark image.
• Boost the intensity of the original image.

(A-1)

+

=

Effect of High Boost Filter

BEFORE

AFTER A = 5/6 = 0.8333

AFTER A = 1.9

High Boost Filter : MATLAB
TRY AT HOME !!

Image Gradient
Edge Detection

Image Derivatives
• How can we differentiate a digital image F[x,y]?
– Option 1: reconstruct a continuous image, f, then
compute the derivative
– Option 2: take discrete derivative (finite difference)

How would you implement this as a linear filter?

:

1

-1

:

-1
1

Image Gradient
• The gradient of an image:
The gradient points in the direction of most rapid increase in intensity

The edge strength is given by the gradient magnitude (besar gradient):

The gradient direction is given by:
• how does this relate to the direction of the edge (arah gradient)?

Image Gradient

Metode Robert
• adalah teknik differensial pada arah horisontal dan differensial
pada arah vertikal, dengan ditambahkan proses konversi biner
setelah dilakukan differensial. Maksud konversi biner adalah
meratakan distribusi warna hitam dan putih.

Image Gradient
• A different approximation of the gradient:
good approximation
(x+1/2,y+1/2)

*

•We can implement

and

using the following masks:

Metode Prewitt
• Metode Prewitt merupakan pengembangan metode robert
dengan menggunakan filter HPF yang diberi satu angka nol
penyangga. Metode ini mengambil prinsip dari fungsi laplacian
yang dikenal sebagai fungsi untuk membangkitkan HPF.

Metode Sobel
• Metode ini mengambil prinsip dari fungsi laplace dan gaussian
yang dikenal sebagai fungsi untuk membangkitkan HPF, dan
kelebihan dari metode sobel ini adalah mengurangi noise
sebelum melakukan perhitungan deteksi tepi.

Image Gradient : MATLAB
• Command: fspecial
• Syntax:
• fspecial(‘prewitt’);
• fspecial (‘sobel’);

TRY !!