45
Graphics Graphics Lab @ Korea University kucg.korea.ac.kr Image Processing 고려대학교 컴퓨터 그래픽스 연구실

Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

Graphics

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Processing

고려대학교 컴퓨터 그래픽스 연구실

Page 2: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Overview

Image RepresentationWhat is an image?

Sampling and ReconstructionKey steps in image processing

Page 3: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

What is an Image?

An image is a 2D rectilinear array of pixels

Continuous image Digital image

Page 4: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

What is an Image?

An image is a 2D rectilinear array of pixels

Continuous image Digital image

Page 5: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

What is an Image?

An image is a 2D rectilinear array of pixels

Continuous image Digital image

A pixel is a sample, not a little square!!

Page 6: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Acquisition

Pixels are samples from continuous functionPhotoreceptors in eyeCCD cells in digital cameraRays in virtual camera

Page 7: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Quantization

Artifact due to limited intensity resolutionFrame buffers have limited number of bits per pixelPhysical devices have limited dynamic range

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

255 150 75 0

Blue channel

Green channel

Red channel

Page 8: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Display

Re-create continuous function from samplesExample: cathode ray tube

Image is reconstructed by displaying pixels with finite area (Gaussian)

Page 9: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Resolution

Intensity resolutionEach pixel has only “Depth” bits for colors/intensities

Spatial resolutionImage has only “Width” x “Height” pixels

Temporal resolutionMonitor refreshes images at only “Rate” Hz

Page 10: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Overview

Image RepresentationWhat is an image?

Sampling and ReconstructionKey steps in image processing

Page 11: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Sampling and Reconstruction

Sampling

Reconstruction

Page 12: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Sampling and Reconstruction

Page 13: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Processing

Pixel operationsAdd luminanceAdd contrast

FilteringBlurDetect edge

WarpingScaleRotateWarps

Page 14: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Adjusting Brightness

Simply scale pixel componentsMust clamp to range (e.g., 0 to 255)

Original Brighter

Page 15: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Adjusting Contrast

Compute mean luminance L for all pixelsLuminance = 0.30*r + 0.59*g + 0.11*b

Scale deviation from L for each pixel componentMust clamp to range (e.g. 0 to 255)

Original Contrast

L

Page 16: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Processing

Pixel operationsAdd luminanceAdd contrast

FilteringBlurDetect edge

WarpingScaleRotateWarps

Page 17: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Adjusting Blurriness

Convolve with a filter whose entries sum to oneEach pixel becomes a weighted average of its neighbors

Original Blur

⎥⎥⎥⎥

⎢⎢⎢⎢

=

161

162

161

162

164

162

161

162

161

Filter

Page 18: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Edge Detection

Convolve with a filter that finds differences between neighbor pixels

Original Edge Detection

⎥⎥⎥

⎢⎢⎢

−−−−−−−−

=111181111

Filter

Page 19: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Processing

Pixel operationsAdd luminanceAdd contrast

FilteringBlurDetect edge

WarpingScaleRotateWarps

Page 20: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Warping

Move pixels of imageMappingResampling

Warp

Source Image Destination Image

Page 21: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Overview

MappingForwardReverse

ResamplingPoint samplingTriangle filterGaussian filter

Page 22: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Mapping

Define transformationDescribe the destination (x, y) for every location (u, v) in the source (or vice-versa, if invertible)

u

v

x

y

Page 23: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Example Mappings

Scale by factor :x = factor * uy = factor * v

Scale0.8

u

v

x

y

Page 24: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Example Mappings

Rotate by θ degrees:x = u cos θ – v sin θy = u sin θ + v cos θ

u

v

Rotate30

x

y

Page 25: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Example Mappings

Shear in X by factor :x = u + factor * vy = v

Shear in Y by factor :x = uy = v + factor * u

Shear X1.3

u

v

x

y

Shear Y1.3

u

v

x

y

Page 26: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Other Mappings

Any function of u and v :x = fx(u, v)y = fy(u, v)

Fish-eye Swirl Rain

Page 27: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Warping Implementation I

Forward mapping :for(int u=0; u<umax; u++) {

for(int v=0; v<vmax; v++) {float x = fx(u,v);float y = fy(u,v);dst(x,y) = src(u,v);

}}

Source Image Destination Image

(u, v)(x, y)f

Page 28: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Forwarding Mapping

Iterate over source image

Rotate-30

u

v

x

y

Page 29: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Forwarding Mapping – NOT

Iterate over source image

Rotate-30

u

v

x

y

Many source pixels can map to same destination pixel

Page 30: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Forwarding Mapping – NOT

Iterate over source image

Rotate-30

u

v

x

y

Many source pixels can map to same destination pixel

Some destination pixels may not be covered

Page 31: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Warping Implementation II

Reverse mappingfor(int x=0; x<xmax; x++) {

for(int y=0; y<ymax; y++) {float u = fx

-1(x,y);float v = fy

-1(x,y);dst(x,y) = src(u,v);

}}

Source Image Destination Image

(u, v)(x, y)f

Page 32: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Reverse Mapping

Iterate over destination imageMust resample sourceMay oversample, but much simpler!

Rotate-30

u

v

x

y

Page 33: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Resampling

Evaluate source image at arbitrary (u, v)

(u, v) does not usually have integer coordinates

Source Image Destination Image

(u, v)(x, y)

Page 34: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Overview

MappingForwardReverse

ResamplingPoint samplingTriangle filterGaussian filter

Page 35: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Point Sampling

Take value at closest pixelint iu = trunc(u+0.5);int iv = trunc(v+0.5);dst(x, y) = src(iu, iv);

This method is simple, but it causes aliasing

Rotate-30

Scale0.5

u

v

x

y

Page 36: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Triangle Filtering

Convolve with triangle filter

Input Output

Page 37: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Triangle Filtering

Bilinearly interpolate four closest pixelsa = linear interpolation of src(u1, v2) and src(u2, v2)b = linear interpolation of src(u1, v1) and src(u2, v1)dst(x, y) = linear interpolation of “a” and “b”

(u1, v2)

(u1, v1)

(u2, v2)

(u2, v1)

a

b

(u, v)

Page 38: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Gaussian Filtering

Convolve with Gaussian filter

Width of Gaussian kernel affects bluriness

Input Output

Page 39: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Gaussian Filtering

Compute weighted sum of pixel neighborhood :Weights are normalized values of Gaussian function

(u, v)

Page 40: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Filtering Methods Comparison

Trade-offsAliasing versus blurringComputation speed

Point Bilinear Gaussian

Page 41: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Warping Implementation III

Reverse mappingfor(int x=0; x<xmax; x++) {

for(int y=0; y<ymax; y++) {float u = fx

-1(x,y);float v = fy

-1(x,y);dst(x,y) = resample_src(u,v,w);

}}

Source Image Destination Image

(u, v)(x, y)f

Page 42: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Image Warping Implementation III

Reverse mappingfor(int x=0; x<xmax; x++) {

for(int y=0; y<ymax; y++) {float u = fx

-1(x,y);float v = fy

-1(x,y);dst(x,y) = resample_src(u,v,w);

}}

Source Image Destination Image

(u, v)(x, y)f

w

Page 43: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Example: Scale

Scale (src, dst, sx, sy) :float w ≈ max(1/sx, 1/sy)for(int x=0; x<xmax; x++) {

for(int y=0; y<ymax; y++) {float u = x/sx ;float v = y/sy;dst(x,y) = resample_src(u,v,w);

}}

Scale0.5

u

v

x

y

(u, v)

(x, y)

Page 44: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Example: Rotate

Rotate (src, dst, theta)for(int x=0; x<xmax; x++) {

for(int y=0; y<ymax; y++) {float u = x*cos(-θ)-y*sin(-θ)float v = x*sin(-θ)+y*cos(-θ)dst(x,y) = resample_src(u,v,w);

}}

u

v

Rotate30

x

y

(u, v) (x, y)

Page 45: Image Quantization, Halftoning, and Ditheringkucg.korea.ac.kr/education/2008_2/CNCE340/tutor_/08ImageProcessing.pdfGraphics Lab @ Korea University Image Resolution Intensity resolution

KUCG

Graphics Lab @ Korea Universitykucg.korea.ac.kr

Example: Fun

Swirl (src, dst, theta)for(int x=0; x<xmax; x++) {

for(int y=0; y<ymax; y++) {float u = rot(dist(x,xcenter)*θ)float v = rot(dist(y,ycenter)*θ)dst(x,y) = resample_src(u,v,w);

}}

u

v

Swirl45

x

y(u, v) (x, y)