영상처리
아주 간단한 Box filter 구현 /C++/openCV
아무 말하는 감자
2021. 4. 15. 00:42

티스토리 코드 복붙이 안되어서 메모장에 쓴 거 캡쳐해서 올림.
코드 필요하시면 댓글 다시길. 복붙 해드릴테니. (답이 늦을 수 있음 주의)
이 코드는 img와 kernel을 곱한 거임.
sum에는 결과적으로 img2의 한 픽셀을 중심으로 그 neighbor들이 kernel과 곱해져 다 더해진 값에 kenel의 합을 나눈 값이 앞선 img2의 한 픽셀에 들어감.
이 과정을 img2의 모든 픽셀의 값을 다 계산할 때까지 반복.
kernel이 곱해질 neighbor가 부족한 경우(제일 윗줄[0][], 제일 아랫줄[img.height][],제일 왼쪽 줄[][0], 제일 오른쪽 줄[][img.width]), padding을 통해 해결. (위 코드에선 max()로 padding)
밑 사진을 보면, 이해가 더 쉬울 듯.

*Mat kernel은 box filter니까 1.0f가 21*21 형태로 있는 걸로 만들었음!
만들면서, kernel의 합을 미리 나눠줌. (linear 하잖아요.)
그 코드는 지워버린 듯, 담에 기억나면 쓰러오겠음.
