안녕하세요. 이번시간에는 SVD를 사용하여 이미지의 노이즈를 제거하는 법에 대해 알아보겠습니다. 저번에 다뤘던 SVD를 이용한 이미지 압축의 원리와 비슷한 방법으로 특이값이 줄어들수록, 즉 낮은 순위로 근사할수록 이미지가 가지고 있는 가장 큰 특징만 남는 점을 이용하는 것입니다.
노이즈를 제거하기 위한 과정을 보여주기 위해 숫자정보를 담고 있는 이미지파일을 만들고
의도적으로 노이즈를 만들어 보겠습니다.
‘1213’이라는 숫자정보를 CALL HEATMAPCONT문을 이용하여 이미지로 만든 결과입니다.
노이즈를 만들기 전, 노이즈가 제거 되는 과정의 다양한 예를 보기 위해 원본 이미지를 4개를 붙여보았습니다. 이렇게 만든 이미지에 IML의 RANDFUN함수를 이용하여 평균=0, 표준편차=0.25의 분포를 따르는 임의의 숫자를 더하여 의도적으로 노이즈를 입혀보았습니다.
기존에 비밀번호를 모르는 상태라면 노이즈를 입힌 이미지로 비밀번호를 파악하기가 쉽지 않아보입니다.
이런 상태의 노이즈 이미지에 SVD를 사용하여 노이즈를 줄여보겠습니다. 우선 CALL SVD문으로 특이값 분해를 한 뒤 특이값의 순서에 따라 값의 크기 변화를 그래프로 확인해보겠습니다.
두번째 특이값과 다섯번째 특이값에서 그래프가 꺾이는 지점이 발생하고 있습니다.
그래프가 꺾이는 지점을 기준으로 그지점까지의 각각의 특이값들이 이후의 특이값들보다 유의성있는 큰 값을 가지고 있다고 할 수 있습니다.
Rank=2에서 Rank=5까지의 낮은 순위 근사를 하여 노이즈를 제거하는 과정을 보이겠습니다.
Rank=2
Rank=3
Rank=4
Rank=5
낮은 순위 근사를 하며 이미지의 노이즈를 제거해보았습니다. 하지만 SVD를 이용한 낮은 순위 근사는 전체적인 특징을 남기는 것이기 때문에 순위가 낮아 질수록 노이즈 제거는 잘되지만 이미지를 식별하기 위한 정보의 손실도 동시에 야기합니다. 따라서 원본 이미지가 가지고 있는 유의한 정보는 유지하면서 식별이 가능 할 정도로 노이즈를 제거할 수 있는 순위를 정하는 것이 중요합니다.
이번에 사용한 데이터의 경우에는 Rank=4에서 가장 이상적으로 노이즈가 제거 된 것으로 판단됩니다.
좀더 확실한 비교를 위해 노이즈를 제거하기 전 이미지와 Rank=4로 낮은 순위 근사를 하여 노이즈를 제거한 이미지를 비교해보겠습니다.
노이즈 이미지
Rank=4 이미지
한눈에 보기에도 확실히 노이즈가 확실히 줄어들었고 동시에 원본 이미지가 가지고 있던 숫자정보 또한 상당부분 보존하고 있는 것을 확인하였습니다.
SVD의 특이값의 개수를 조절하는 낮은 순위 근사를 이용해서 원본이미지의 정보는 유지하면서 노이즈를 제거했습니다.
마치며
오늘은 저번시간에 이어 SVD의 낮은 순위 근사를 이용하여 이미지의 노이즈를 제거하는 방법에 대해 간략히 알아보았습니다.
Reference
https://blogs.sas.com/content/iml/2017/08/30/svd-low-rank-approximation.html
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Lock in the best rate now before the price increases on April 1.