이미지 하락을 막음.. 예를 들어 노이즈, 초점안잡힘, 흔들린 이미지 등..
만약 그런 이미지 g(x, y)가 주어졌다면, 우리는 f(x, y)를 구하고 싶은데, 이 g(x, y)는
g(x, y) = h(x, y) * f(x, y) + n(x, y) 이렇게 된다.
이 n(x, y) : 더해지는 노이즈값, h(x, y) : blur 되는 filter
Noise 타입
- salt and pepper noise
- gaussian noise
- speckle noise
- periodic noise
우선, 저 blur filter를 1이라고 생각하고 식을 다시 생각해보면
g(x, y) = f(x, y) + n(x, y)이다.
1. Salt and Pepper noise
날카롭고, 여기저기 그냥 뜬금없이 있다.
하양이나 검정 픽셀들이 랜덤하게 퍼져있다.
이거 없애려면, Low-Pass Filtering 이나, Median Filtering하면 됨.
Low-Pass : 균일 평균 필터 or 가우시안 필터 -> 별 효과 없음.
Median : 이거 좀.. 잘 됨. 이거의 일반화 형태가 rank-order filtering. 중앙값이니깐 이상치의 영향을 안 받음.
Outlier Rejection method
2. Gaussian noise
이건 이제.. 하얀색 가우시안 노이즈를 더 추가한 경우를 말함. : AWGN
보통 잡음 평균을 0으로 생각함.
시그마 높으면 잡음 세다고 생각함. 서로 다른 값들이 잡음이므로.. 이상치 확률도 높아짐.
얠 없애려면,
평균필터 사용하면 됨.
만약 우리가 새로운 AWGN 만들었다면, Ig(x, y) = I(x, y) + N(x, y) 라고 볼 수 있다. 여기서 N이 잡음, I는 깨끗한 이미지
근데.. 만약 막 100개의 AWGN을 생성하면, 걔네의 평균을 내볼 수 있음.
(Ig(x, y)의 합)/100 = I(x, y) + (N(x, y)의 합)/100 으로 볼 수 있다. 근데.. 저 N은 평균을 0이라고 생각한다고 했기에, 평균을 구하면 저절로 0이 될 수밖에 없음. 그렇담.. Ig는 I에 거의 가깝게, clean하게 됨.
이러한 필터의 크기를 키울수록 노이즈는 감소하겠지만, 블러는 커진다. 필터 크기 적당히 하기.
Wiener Filter..머냐 이게
Bilateral Filter
Gaussian filtering의 지수함수 부분만 가져와서 식을 세움.
Avg, Gaussian 필터는 모든 픽셀에 동일한 필터를 적용시키지만,
Bilateral 필터는 각 픽셀에 다른 필터를 적용시킨다.
보통 Bilateral 필터는 f(i, j, k, l) 이런 식으로 되는데, 이때 (i, j)와 (k, l)이 많이 떨어져 있다면 필터의 픽셀 값이 감소하고, 가깝다면 필터의 픽셀 값이 증가한다.
NonLocal Means filtering (NLM)
같은 이미지의 여러 형태(노이즈, 밝기 등)를 겹침.
그럼 어쩔 수 없이 이미지가 저하될 거임.
이 NLM은, 한 image에서 비슷하게 생긴 부분끼리 평균내서 값 구하는 거임.
근데, 문제는 이 부분끼리 완벽하게 같은 수는 없기 때문에, 유사도에 따라 가중평균을 해야 한다.
비교할 어떤 패치를 구하고, 그 패치와 비슷한 부분들을 구하고, 그 차이를 계산한 SSD를 가중치로 둔다.
'AI > 컴퓨터비전' 카테고리의 다른 글
image warping (0) | 2024.06.16 |
---|---|
compression (0) | 2024.06.16 |
Segmentation (1) | 2024.06.16 |
Morphological (0) | 2024.06.15 |
edge detection (nms 고치기) (0) | 2024.06.15 |