2019. 7. 18. 17:29ㆍ해봤던것들
OpenCV의 filter2D를 파이썬에서 사용해보자
목표
OpenCV 라이브러리의 filter2D를 사용하여 원본 영상에 필터를 적용시킵니다.
Sobel, Laplacian, Smoothing, Weighted Average 필터를 사용하고 필터가 적용된 영상은
OpenCV의 VideoWriter를 사용하여 저장합니다.
영상에 필터를 적용하기 전에 각각의 필터들이 어떤 특성을 가졌는지 알아봅니다.
Sobel, Laplacian
Sobel과 Laplacian은 영상의 에지를 검출하는데 특화된 필터입니다.
Sobel은 1차 미분을 사용하여 간결한 엣지검출이 가능하지만 노이즈에 약하고
Laplacian은 2차 미분을 사용하여 조금 두꺼운 에지 검출이 가능하지만 노이즈에 강한 특성을 가집니다.
자세한 내용은 아래 링크에서 확인 가능합니다.
1차미분, 2차미분 에지검출
미분 식은 간단하게 풀 수 있습니다. x는 기준이 되는 값 x - 1은 기준값 한 칸 전의 값 x + 1은 기준값 한칸 이후의 값 예를 들어 2차 미분의 왼쪽에서 2번째 값을 기준으로 하면 공식에 대입한 값 4 + 5 - (2 *..
yeowool0217.tistory.com
Smoothing, Weighted Average
Smoothing, Weighted Average필터는 영상의 노이즈를 줄이는 데 사용됩니다.
노이즈를 줄이기 위해서는 영상을 흐릿하게 만들어야 하는데 두 필터 모두 영상을 흐리게 하지만
차이점을 가지고 있습니다.
Smoothing 연산
Smoothing 연산은 주로 영상의 노이즈를 줄이기 위해서 사용합니다.
하지만 영상 전체를 흐릿하게 만들어 영상의 선명도를 떨어뜨린다는 단점이 있습니다.
영상의 Smoothing에는 위와 같은 필터가 사용됩니다.
3x3필터라 9개의 픽셀의 수만큼 나누어 연산 결과 인근 픽셀의 평균값을 도출하므로
Average연산이라고도 합니다.
필터의 크기를 키우면 Smoothing이 더욱 강하게 적용됩니다.
5x5필터를 사용한다면 픽셀 수가 25개이므로 25를 모든 픽셀에 나누어야 합니다.
Weighted Average연산
Weighted Average연산 또한 Smoothing 연산과 마찬가지로 노이즈를 제거하기 위해 사용되는 연산입니다.
하지만 Weighted Average연산이 Smoothing연산에 비해 선명도가 좋습니다.
그리고 Smoothing 필터와 비교해서 필터의 중앙에 가까울수록 값이 큽니다.
가중 평균이라는 용어에서 알 수 있듯 다른 픽셀을 희생하여 일부 픽셀에 더 많은 중요도를 부여합니다.
위 그림은 원본 영상에 노이즈를 입힌 후 Weighted Average 연산을 한 결과까지 차례로 보여줍니다.
노이즈가 제거된 것과 영상이 조금 흐려진 것을 확인 할 수 있습니다.
Smoothing 연산과의 차이는 아래 그림에서 확인 할 수 있습니다.