본문 바로가기

AI Study/computer vision

[ComputerVision] 공간 도메인과 주파수 도메인 기초

1. 디지털 이미지의 기초

1-1) 샘플링 & 양자화

샘플링: 수많은 데이터 가운데 유한한 개수의 데이터를 뽑아내는 것, 카메라 화소가 높다는 것은 어떤 장면에 대한 빛의 패턴 신호를 높은 주파수로 샘플링하는 것을 의미한다.

양자화: 아날로그 형태로 되어있는 신호나 정보를 디지털화, 아날로그에서는 0과 1 사이에는 무수히 많은 숫자가 존재하는데, 현실적으로 다 표현할 수 없기 때문에 근접한 값으로 설정

 

이미지 생성: 광원이 어떤 에너지 소스가 빛을 내고 물체에서 반사된다.  imaging system을 통하여 아날로그 신호들이 sampling과 quantization을 통하여 디지털정보로 저장된다. 

 

결론) 화소가 높아질수록 좋아진다 = 샘플링 간격이 좁아지고, qauntization 간격이 좁아진다. 

 

1-2) 크기 줄이기, 늘리기

영상 줄이기: Shrinking, Subsampling, Downsampling -> 4칸에서 하나의 영역만 선택한다.

영상 늘리기: Zooming, Oversampling, Upsampling -> 두가지 방식

 (1) Nearest neighbor interpolation: 빈칸에 픽셀값 그대로 복사

 (2) Bilinear interpolation: 빈칸 채우기 위해 원래 알고있는 값을 사용한다. (4개 nearest에서 가져옴), 화질 더 좋음

 

1-3) 픽셀의 기본 관계

4-neighbors of p(N4(p)): 상하좌우 픽셀

4-diagonal of p(N4(p)): 대각선 픽셀

8-neighbors of p(N8(p)): 위 두개 합침

 

1-4) 픽셀간의 거리

거리 함수가 성립하는 경우 3가지

- 거리는 0보다 같거나 크고 (같은 점일때 거리는 0), 방향성이 없다.

유클리디안 거리

D4(city-block distance) 거리

 

 

2. 공간 도메인  (Spatial Domain)

공간 도메인 연산 : 어떤 operation 거쳐서 새로운 영상을 생성한다 = F(x,y) 에서 어떤 transform 거쳐서 g(x,y) 생성

공간 도메인에서 image enhancement(고화질로.. )

 

1-1) transformation

8비트에서 0은 black, 255는 white

Contrast stretching

밝기 변환 함수 중 하나이다. 밝은 화소와 어두운 화소들의 분포가 고르게 퍼져 있어야 인간은 영상을 선명하게 인식하므로 영상의 화소 분포가 좀 더 넓은 영역에 걸쳐서 퍼지도록 스트레칭 시키는 작업이다

Mask filtering

Basic intensity transformation

여러 강도 변환 함수들

Basic grey level transformation

- image negatives: s = L-1-r : 밝기를 전환시켜 눈으로 보기에 더 편하게끔 변환한다. (색이 반전된다.)

- log transform: s = clog(1+r): 눈으로 보이지 않는 것들이 보임

- power-low tranform: s = cr ^ y: 모니터 내부에서 하드웨어적 시스템을 거치면 transform이 일어나서 색이 진해지고 왜곡이 발생한다. 그래서 gamma correction을 통해서 비슷하게 맞춰준다.

 

Constrast stretching

contrast: 흑백대비

low contrast imgae: 어두움~밝음 영역에서 고루 영상이 분포하면 선명한데, contrast가 작으면 흐리다. stretching을 통해서 선명하게 해주자.

 

Grey level slicing

한 영역만 보고싶을 때 다른 부분은 어둡게하고, 보고싶은 영역은 밝게한다.

 

Image filtering

noise 줄이거나 밝게

 

1-2) Filtering

필터링? = 영상에 적절한 mask를 씌운다. 

filter, kernel, mask, convolution, mask 같은 용어

 

Smooting spatial filters

흐리게한다.

- Smooting linear filters (averaging filter): 주변 값들을 평균 값으로 바꿔준다. 

두번째 그림처럼 중간에 가중치를 줄 수 있다. 합이 1이 되도록 정규화해야한다. (아닐 경우 값이 커져 영상이 과도하게 밝아질 수 있다. )

 

장) 비정상적인 값을 가지는 경우 제거가 용이하다

단) 매우 큰 픽셀 하나라도 있으면, 모든 픽셀의 평균에 영향을 준다.

 

- order- statistics filter: non-linear이다. 정렬을 해서 최소, 중간, 최대값을 이용한다. 

 

min-filter, mid-filter, max-filter 

mid를 가장 많이 사용하고 impulse noise 제거하기 용이하다. (비정상값이 있을 떄 중간값이 되어 noise를 제거한다.)

중간값으로 바꿔줌

 

- 가우시안 필터 (average filer)

일반적으로 noise가 가우시안을 많이 따르기 때문에 유리하다. 현재 픽셀값과 주변 이웃 픽셀값들의 weight average 이용해서 현재 픽셀을 대체한다.  weight average는 가까울수록 큰 가중치, 멀수록 작은 가중치를 가진다. 

 

시그마가 커질수록 스무딩이 커지고 영상이 흐려진다. 

 

* 잡음 을 두가지 종료로 나눠서 볼 수있다. 

임펄스 잡음: 0,255와 같은 극단적 값으로 이루어진 잡음, 미디언 필터를 사용하면 좋다. (salt-and-pepper noise는 흰색이나 검정색 noise를 말한다.)

가우시안 잡음: 골고루 퍼져있어 블러링 이용하면 좋다.

 

Quiz! )

가우시안 필터의 한계는?

고해상도 영상에 대한 가우시안 필터링을 실시간으로 처리하기에는 한계가 있다.
엣지와 같이 공간적으로 급변하는 부분에서 단점을 보인다. 엣지(밝기가 급격히 변하는 곳)도 무뎌진다. 이는 노이즈 제거에서는 단점으로 볼 수 있다. 노이즈는 제거하면서 엣지 정보는 유지하는 것이 좋기 때문 ! 가장자리가 흐려지게 되고 대비가 줄어듭니다.

이를 어떻게 해결?

혼합 모델 사용. 혹은 샤프닝 후 더한다? 

 

Sharpening spatial filters

이제 선명하게! 영상내의 픽셀 강도의 변화를 강조한다. 

 

- 라플라시안

1차원에서 함수

ramp: 완만한 변화를 가지는 구간

step: 영상내에서 x축만 움직여도 큰 변화가 생기는 지점

 

결론: 

1차 미분은 기울기, 변화가 없을 때만 0이다.

2차 미분은 ramp, step 시작과 끝점만 0이 아니다.

 

zero crossing: 2차 미분의 결과가 0을 지난다. 위 그래프에서는 step의 첫 지점과 끝 지점에서 5,-5로 0을 지나고 있고 이는 가파른 변화로 엣지로 볼 수 있다. 

 

2차원에서의 함수

 

라플라시안

라플리시안? 이차 미분을 뜻한다. 

위 두 함수를 더한다. 최종 식은

 

이를 커널로 표현하면 아래의 결과이다.

그래서 어떻게 활용할까?

라플라시안의 결과는 엣지이다. 

만약 라플라시안 마스크가 음수이면 기본 영역에서 빼고, 양수이면 더해준다. 엣지가 강조되어 이미지가 선명해진다.

 

 

- 그래디언트

 

그래디언트는 값이 변화하는 부분에서 생긴다 = edgesk texture 정보를 가지고있다.

gradient는 방향이 있고, magnitude of gradient(크기)는 방향성이 없다.

 

3. 주파수 도메인  (Frequency Domain)

푸리에 변환 

주파수 도메인에서 image enhancement(고화질로.. )

1-1) 푸리에 변환

- Convolution theorem

간단하게   

'공간 영역(spatial domain) 합성곱(convolution) = 주파수영역(frequency domain) 곱셈(product)'

이다.

 

만약 필터 사이즈가 같으면, spatial domain에서는 convolution은 모든 픽셀마다 계산해야하지만, frequency 도메인에서는 곱으로 간단히 표현 가능하다. (훨씬 빠르다.)

 

1-2) Low paass 필터

영상에서 texture가 많거나 엣지가 있는 영역은 frequency가 높다. 반대로 homogenous한 영역은 frequency가 낮다.

엣지나 노이즈를 제거하기 위해 high frequency 사용하지 않고, low frequency만 패스하면 영상이 전체적으로 스무딩된다. 

 

-Ideal lowpass filter

일반적으로 낮은 주파수 영역에는 전체적인 이미지의 윤곽에 대한 정보가 담겨 있고, 높은 주파수 영역에는 이미지의 세밀한 부분에 대한 정보가 담겨 있다. 낮은 주파수의 함수는 천천히 변화하고, 높은 주파수의 함수는 빨리 변화하기 때문이다.

Low-pass Filter는 말 그대로 낮은(Low) 주파수 영역의 정보만 통과(Pass)시키는 필터이다. 즉, 이미지에 이 필터를 적용하면 이미지의 세밀한 부분에 대한 정보는 지워지고 전체적인 윤곽에 대한 정보만 남게 된다. 결과적으로 이미지는 흐려지게 된다.

 

: 반지름이 D0 영역 이내인 frequency만 통과한다. 나머지는 0

이 방법은 spatial domain에서 ringing effect가 생겨서 영상이 왜곡된다. 

(ringing effect는 울퉁불퉁한 패턴이 나타나는 것이다) -> 해결: butterworth lowpass filter

 

-butterworth lowpass filter

ideal과 다르게 smooth하게 설계되어있다.

이도 n이 커지면 ringing effect가 생긴다.

 

- Gaussian lowpass filter

ringing efftect가 발생하지 않는다. 영상을 가운데부분만 통과하게 하고 나머지를 제거한다. high frequency 영역이 존재할 수 있는 텍스처, 엣지가 사라져서 스무딩이 가능하다. 

 

//지금까지 흑백

4. Color Image Processing

용어 정리

Brightness: 밝기 / Hue: 색조 / Saturation: 채도

 

Gray level: 8비트 사용 (: 256)

0 ~ 255 사이로 양자화해서 사용하는 1 - channel intensity

 

RGB: 빨강, 녹색, 청색을 사용한 이미지 색상이다. 

 

CMY & CMYK: 실제 프린트를 할 때는 CMY와 CMYK를 많이 쓴다. 

청록(Cyan), 자홍(Magenta), 노랑(Yellow) 

CMY에서 검정색을 합친 모델이 CMYK이다. 

 

하지만 이는 칼라모니터나 프린트에게 용이하지 사람의 표현과는 다르다. 

1) RGB 컬러 요소들의 상호 관계가 너무 커서 특정 색상만 분리가 어렵다

2) RGB와 CMY 컬러 모델은 디스플레이 장치와 인쇄장치용으로 사용하기 위해 만들었다

그래서 영상 처리에서는 HSI를 사용한다. 

 

HSI: 색상 (Hue), 채도 (Saturation), 명도 (Intensity)

 

Pseudo Color: 흑백 영상을 밝기에 따라 특정한 컬러로 표현하는 것

- Intensity Slicing: intensity에 따라서 슬라이싱 

 

 

+ Perform three independant transform

기존 grap 1 channel 처럼 프로세싱한 것을 컬러이미지에서는 3채널로 나누어서 진행한다.