Mask 이미지 처리의 주의할 점

이정민·2026년 6월 16일

Mask는 일반적인 이미지가 아니라 class label map이다.

예를 들어 Mirror Mask는 보통

0 = background
255 = mirror

혹은 전처리 후

0 = background
1 = mirror

로 표현된다.

그런데 마스크를 일반 이미지처럼 bilinear interpolation으로 resize하면 중간값이 생긴다.

0255 사이를 부드럽게 섞는다
-> 37, 82, 128, 201같은 애매한 값이 발생하는 것이다.

이것은 segmentation label로는 맞지 않는 값이다. class가 0.37개, 0.82개 이런 식으로는 존재하지 않기 때문이다.

그래서 mask는 neareset neighbor로 resize한다.

mask = cv2.resize(mask, (size, size), interpolate=cv2.INTER_NEAREST)

nearest는 가장 가까운 픽셀 label을 그대로 가져오기 때문에 label값이 유지된다.

  • 0은 0 그대로
  • 255는 255 그래도
    - 새로운 중간 class값이 생기지 않는다.

반대로 이미지 resizeINTER_AREA, INTER_LINEAR 등을 사용해도 좋다. 이미지는 색이 연속적인 값이라 섞여도 자연스럽기 때문이다.


추가로 말이 나온 김에, bilinear interpolation과 linear interpolation, nearest interpolation을 각각 비교해보자.

bilinear-interpolation과 linear-interpolation의 차이는 이전 포스트에서 다뤄본 적이 있다.
이전 포스트 참고하기

0개의 댓글