Search

Area Processing :

링크
Category
Keywords
Convolution
Smoothing
Sharpening
Edge Detection
Derivative operator
Median filtering
상위 개념
하위 개념
속성
Subcategory
날짜

Convolution

Input : Mask의 가운데 픽셀 값
Output : 새로운 픽셀 값
여기서 새로운 픽셀 값은 mask의 각 weight값과 이미지의 특정 픽셀의 주변 픽셀에 각각 곱해서 합을 구한다
1-D conv example
2-D conv example 3x3
i(x+s,y+t)i(x + s, y + t)에서 i(xs,yt)i(x - s, y - t) 표현도 가능.
a=(m1)/2a = (m-1)/2
b=(n1)/2b = (n-1)/2
이면 MxN 이미지에서 x, y = 0, 1, 2, ... M-1 / 0, 1, 2... N-1

image border 처리 방법

Zero padding
Start conv at (1, 1), end at (M-2, N-2)
Duplicate the border edges
원본의 가장자리 값으로 가상의 border를 생성
wrap the image
이미지를 같은 이미지로 둘러 쌓았다고 생각.
(0 ,0)에서 conv 시작할 때, 좌측과 상단 값은 이미지의 하단, 우측에서 가져온다.
특징
마스크의 크기가 클수록 연산량이 많아지는건 당연
Mask Coefficient의 합이 커질수록 출력 이미지는 밝아진다.
밝기를 보존하고 싶으면 coefficient 합을 1로 맞춘다. (대부분 1아니면 0으로 함)

Blur

이미지의 fine detail을 제거하는 방법이다.
보통 카메라에서 초점이 안맞을 때의 상황.
이 또한 Convolution을 통해서 구할 수 있는데 mask가 클수록 blur효과는 더 커진다.
이는 Gaussian noise를 줄이는 효과적인데 몇 가지 다양한 방법이 있다.

Average filter

generate neighborhood averaging in mask
Mask Coefficient는 mask 크기에 따라 결정된다.
3x3 mask : 1/9
5x5 mask : 1/25
Gaussian noise와 extreme value 제거에 효과적이다.

Weighted average filter

Gaussian profile에 더 근사된 필터이다.
coefficient의 합은 1이고 이 방법의 예로는 Gaussian smoothing filter가 있다.
σ\sigma에 따라 적용 범위가 달라진다.

Sharpening

Blurring과 반대되는 개념이며 crispening 이라고도 불림.
Image의 detail을 강조하며 local contrast를 증가시킨다.
High-pass filter에 기반하였고 몇 가지 종류가 있다.
부호 차이를 활용해 대비를 높이는 듯.

High-pass filter

기본 컨셉은 저주파를 제거하는 것.
coefficient의 합은 0이며 이 개념의 하위 개념으로 몇 가지 필터가 더 있다.
image frequency 개념적으로는 색이 얼마나 자주 변하느냐 정도이다. 저주파 : 주변 영역과 색의 차이가 적은 부분 → 이미지의 전체적인 윤곽 고주파 : 주변 영역과 색의 차이가 큰 부분 → 이미지의 세밀한 부분
Base
저주파 요소는 제거하고 고주파 정보만 남긴다. High image detail 강조를 위해 사용.
Unsharp masking
fsharp(x,y)=forg(x,y)flowpass(x,y)f_{sharp} (x, y) = f_{org}(x, y) - f_{low - pass}(x, y)
원본 이미지에서 low pass filter 이미지를 뺀다
noise에 덜 민감해서 많이 쓰임
원본과 filtering된 이미지를 뺸 값을 다시 원본에 더해줘서 좀더 edge intensity가 증가
High-boost filter
intensity 값을 높인 원본 이미지와 low-pass filtered 이미지를 연산한다.
fhigh boost(x,y)=Aforg(x,y)flowpass(x,y)f_{high~boost} (x, y) = A * f_{org}(x, y) - f_{low - pass}(x, y)
여기서 A가 1이라면 그냥 Unsharp masking과 같다.
보니깐 이건 합이 1이 아니어도 되는 듯.

Filtering

1-D filter mask
저주파 고주파
Frequency sweep signal input
after low pass filtering
after high pass filtering
after band pass filtering
after band stop filtering
Zone-plate image
중심 : 0 frequency component
외곽으로 갈수록 주파수는 높아짐
Display 장비와 filter를 test하기 위해 널리 사용됨
f(x,y)=127.5(1+cos(πVx2+πHy2))f(x, y) = 127.5 (1 + cos(\frac{\pi}{V}x^2 + \frac{\pi}{H}y^2))
원본
laplacian filtering
low-pass filtering
high-pass filtering

Edge

정의 : 두 개의 Region 사이의 경계에 위치한 pixel
Edge는 이미지에 대해 많은 정보들, 예를 들어 object의 위치, 크기, 모양, 텍스쳐 등의 정보를 가지고 있다.
Edge는 local concept, 비슷한 뜻의 Boundary는 좀 더 global한 idea라고 할 수 있다.

Edge Detection

이는 Gray-scale 이미지에서 의미있는 Discontinuities를 찾는 것을 말한다.
(Image Segmentation의 시작 단계이기도 함)
Edge Profile
Roof Edge, Line Edge, Step Edge, Ramp Edge
먼저 Simple edge detector에는 두 가지가 있다.

Homogeneity operator

이는 유사성을 확인하는 방식으로 진행을 하는데 방식은 아래와 같다.
3x3 Window에 대해 중앙의 픽셀 값과
주변의 8개의 픽셀 값 간의 차이의 절대값을 구하고
그 차이 중 가장 큰 값이
이 operator의 output이 된다.

Difference operator

이는 말 그대로 차이점을 체크하는 방법인데 가장 빠른 방법이다.
3x3 Window에서 좌상단 - 우하단, 좌중단 - 우중단, 좌하단 - 우상단, 중앙 상단 - 중앙 하단 을 구해서
절댓값 중에 가장 큰 값이 output이 된다.
위의 두 방식은 계산량, 방법의 차이가 있지만 결과는 비슷하다.

Derivative Operators

edge를 검출하는 방식에는 미분 operator를 활용하는 방법도 있다.
주로 1, 2차 미분이 활용되는데 1차 미분은 값의 변화를 체크하고 2차 미분은 부호의 변화를 체크한다.

First Derivative

fx=limx1f(x+x)f(x)x=f(x+1)f(x)\frac{∂f}{∂x} = \lim_{△x \to 1} \frac{f(x + △x) -f(x)}{△x} =f(x+1) - f(x)
fy=f(y+1)f(y)\frac{∂f}{∂y} = f(y+1) - f(y)
Image Gradient at (x,y) is f=[GxGy]=[δfδxδfδy]Image \ Gradient \ at \ (x,y) \ is \ ∇f = \begin{bmatrix} G_x \\ G_y \end{bmatrix} = \begin{bmatrix} \frac{\delta f}{\delta x} \\ \\\frac{\delta f}{\delta y} \end{bmatrix}
f=mag(f)=Gx2+Gy2  or  Gx+Gy∇f = mag(∇f) = \sqrt {G_x^2 + G_y^2}~~ or ~~|G_x| + |G_y|
the direction angle at (x,y)   α(x,y)=tan1(GyGx)the~direction ~angle ~at ~(x,y)~~~ \alpha (x,y) = tan^{-1}(\frac{G_y}{G_x})
Gx는 row detector이고 Gy는 column detector이다
위 Mask Coefficients의 합은 0이다.
이 중에서도 Sobel이 성능이 가장 좋고 노이즈에 덜 민감하다.
Sobel 에 대한 고찰 → Sobel Kernel
Compass Gradient Operator
8개의 서로 다른 방향에 대해 Edge를 찾는 것.
Prewitt
Kirsh
Robinson 3-level
Robinson 5-level

Laplacian : Second Derivative

2f=2fx2+2fy2∇^2f = \frac{∂ ^2f}{∂x^2} + \frac{∂^2f}{∂y^2}
2차미분에 의한 edge 판단 시점이 제공 (Zero Crossing )
이 가능하지만 역시 Noise에 민감.
이 역시 digital approximation을 하여 표현하면 아래와 같다.
2fx2=f(x+1,y)+f(x1,y)2f(x,y)\frac{∂ ^2f}{∂x^2} = f(x+1,y) + f(x-1,y) -2f(x,y)
2fy2=f(x,y+1)+f(x,y1)2f(x,y)\frac{∂ ^2f}{∂y^2} = f(x,y+1) + f(x,y-1) -2f(x,y)
2f=[f(x+1,y)+f(x1,y)+f(x,y+1)+f(x,y1)]4f(x,y)∇^2f = [f(x+1, y) + f(x-1, y) + f(x, y+1) + f(x, y-1)] -4f(x, y)
특징
1차 미분에 비해 sharper edge를 검출함
모든 방향에 대한 섬세한 edge 검출
double edge (?)
2차 미분 이기에 방향 정보가 없어서 edge direction은 모른다.
미분 마스크에서 노이즈에 민감한 이유.

LoG : Laplacian of Gaussian

Laplacian은 원본 이미지에 적용되는 것이 아니라
Gaussian Smoothing을 통해 노이즈가 한번 걸러진 상태에 사용된다.
2h(r)=[r2σ2σ4]er22σ2∇^2h(r) = - [\frac{r^2 - σ ^2}{σ ^4}]e^{\frac{-r^2}{2σ^2}}
이 그래프 모양때문에 Mexican hat func 이라고도 불림.
특성
σ 는 peak value의 폭과 반비례하고, Conv mask의 크기와 비례한다.
conv mask가 클수록 wider edge, 작을수록 sharper edge가 검출된다.
노이즈에 민감

Median Filtering

해당 픽셀을 주변 픽셀 값들의 중간 값으로 대체하는 것이 컨셉이다.
Window 내의 픽셀들을 sorting하고 중간에 위치한 값을 사용하는 방식인데,
가장 잘 알려진 order-staticstics filter이자 nonlinear 연산자이다.
Sharp edge와 detail 정보는 보존하면서 Noise는 감소시키는 특징도 지닌다.
그 중에서도 특히 Salt and pepper noise(점잡음)으로 불리는 Impulse noise를 줄이는데 효과적이다.
A : {3 5 5 4 6 5 5 5 45} → median filter → {3 4 5 5 5 5 5 6 45}
B : {6 5 6 5 45 6 9 9 7} → median filter → {5 5 6 6 6 7 9 9 45}
mask 종류는 위와 같다.

Min / Max / Midpoint Filtering

Max Filter

f^(x,y)=max(s,t)Sxyg(s,t)\hat f (x, y) = max_{(s, t) \in S_{xy}} {g(s, t)}
최대 값이 활용되는데 Dark spikes 와 pepper noise에 효과적이다.
대신 전반적인 출력 이미지의 intensity 값이 높아진다.

Min filter

f^(x,y)=min(s,t)Sxyg(s,t)\hat f (x, y) = min_{(s, t) \in S_{xy}} {g(s, t)}
최소 값을 활용하는데 white spikes 와 salt noise에 효과적이다.
전반적인 출력 이미지의 intensity 값이 낮아진다.

Midpoint filter

f^(x,y)=0.5 [max(s,t)Sxyg(s,t)+min(s,t)Sxyg(s,t)]\hat f (x, y) = 0.5 ~[max_{(s, t) \in S_{xy}} {g(s, t)} + min_{(s, t) \in S_{xy}} {g(s, t)}]
위의 두개 혼합한 것이다.
Gaussian이나 uniform noise 같은 randomly distributed noise에 성능이 좋다.