본문으로 바로가기

Image Resampling (Image pyramids)

category AI/Computer Vision 2021. 3. 30. 23:18

Image downsampling

1) 개요

    - Just deleting even rows and even columns occurs bad condition of images.

ref : http://www.cs.cornell.edu/courses/cs5670/2019sp/lectures/lec03_resample.pdf
ref : http://www.cs.cmu.edu/~16385/lectures/lecture3.pdf

 

2) Aliasing

    - Occurs when sampling rate is not high enough to capture the amount of detail in the image.

    - Undersampling can disguise a signal as one of a lower frequency.

ref : http://www.cs.cornell.edu/courses/cs5670/2019sp/lectures/lec03_resample.pdf
ref : http://www.cs.cmu.edu/~16385/lectures/lecture3.pdf

 

3) Anti-aliasing

    - To avoid aliasing,  sampling rate >= 2 * max frequency in the image (Nyquist rate)

    - Apply a smoothing filter first, then downsample the image.

ref : http://www.cs.cmu.edu/~16385/lectures/lecture3.pdf

 

4) Gaussian image pyramid

    - Used to downsample images.

    - High level (low resolution), Low level (high resolution)

    - Repeating smoothing filter (blur) -> subsampling

ref : http://www.cs.cornell.edu/courses/cs5670/2019sp/lectures/lec03_resample.pdf

    - Code (OpenCv)

src = cv.pyrUp(src, dstsize=(2 * cols, 2 * rows))
src = cv.pyrDown(src, dstsize=(cols // 2, rows // 2))

 

Image upsampling

1) Laplacian image pyramid

    - Use to reconstruct an upsampled image from an image lower in the pyramid.

    - Repeating upsampling -> sum with residual

ref : http://www.cs.cmu.edu/~16385/lectures/lecture3.pdf

 

    - Code

lpA = [gpA[5]] # n번째 추가된 Gaussian Image
for i in xrange(5,0,-1):
    GE = cv2.pyrUp(gpA[i]) #n번째 추가된 Gaussian Image를 Up Scale함.
    temp = cv2.resize(gpA[i-1], (GE.shape[:2][1], GE.shape[:2][0])) # 행렬의 크기를 동일하게 만듬.
    L = cv2.subtract(temp,GE) # n-1번째 이미지에서 n번째 Up Sacle한 이미지 차이 -> Laplacian Pyramid
    lpA.append(L)

 

3) Image interpolation

ref : http://www.cs.cornell.edu/courses/cs5670/2019sp/lectures/lec03_resample.pdf
ref : http://www.cs.cornell.edu/courses/cs5670/2019sp/lectures/lec03_resample.pdf

$$F[x, y] = quantize(f(xd, yd))$$

    - Interpolation is assuming the middle of known values.

    - It is a discrete point-sampling of a continuous function.

    - If we don't know the f(x), guess an approximation by convolution with a reconstruction filter, h.

$$\tilde f = h * f_{F}$$

Interpolation for warped image
If a rectangular ABCD with center P warped to A'B'C'D, calculate linear transformation 'T'.
And calculate P' with T -> execute interpolation.

    - Various way of interpolation (Bicubic is common choise.)

ref : http://www.cs.cornell.edu/courses/cs5670/2019sp/lectures/lec03_resample.pdf

    - Code (OpenCV)

cv2.resize(image, size, fx, fy, interpolation)

cv2.resize(img, None, fx = 2.0, fy = 2.0, interpolation = cv2.INTER_CUBIC)
cv2.resize(img, None, fx = 2.0, fy = 2.0, interpolation = cv2.INTER_LINEAR)

ref.

docs.opencv.org/3.4/d4/d1f/tutorial_pyramids.html

www.cs.cmu.edu/~16385/lectures/lecture3.pdf

www.cs.cornell.edu/courses/cs5670/2019sp/lectures/lec03_resample.pdf

'AI > Computer Vision' 카테고리의 다른 글

Geometric Transformation  (0) 2021.04.04
Hough Transform  (0) 2021.04.01
SIFT (Scale invariant feature transform)  (0) 2021.03.26
Harris Corner Detector  (0) 2021.03.24
Morphology  (0) 2021.03.24