관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

영상 처리 3 - 점 연산 본문

인공지능/컴퓨터 비전

영상 처리 3 - 점 연산

huenuri 2024. 11. 9. 05:21

화소 입장에서 바라본 영상 처리 연산이란 화소가 새로운 값을 받는 과정이다. 새로운 값을 어디에서 받느냐에 따라 점 연산, 영역 연산, 기하 연산의 세 종류로 구분할 수 있다. 다음 그림은 세 종류의 연산을 설명한다. 점연산에서는 자기 자신으로부터 값을 받는다. 영역 연산에서는 이웃 화소의 값을 보고 새로운 값을 결정한다. 기하 연산에서는 기하학적 변환에 따라 다른 곳으로부터 값을 받는다.

앞에서 공부한 오츄 이진화는 점 연산에 속하고, 모노폴리는 영역 연산에 속한다.

 


 

 

 

 

 

명암 조절

식 (3.4)를 이용해 영상을 밝거나 어둡게 조정할 수 있다. 맨 위 식은 원래 영상에 양수 a를 더해 밝게 만드는데 화소가 가질 수 있는 최대값 L-1을 넘지 않게 min을 취한다. 가운데 식은 원래 영상에 양수 a를 빼서 어둡게 만드는데 max를 취해 음수를 방지한다. 마지막 식은 L-1에서 원래 명암값을 빼서 반전시킨다.

이 식은 모두 선형 연산이다. 선형 연산이란 상수를 곱해서 더하기만 하는 연산이다.

 

 

감마 보정 실험하기

 

 

 

코드를 설명하면 다음과 같다.

 

  • 이미지 불러오기 및 크기 조정: soccer.jpg 이미지를 불러오고 크기를 1/4로 축소한다.
  • 감마 변환 함수 정의: gamma(f, gamma=1.0) 함수는 입력 이미지 f에 감마 변환을 적용한다.
    • f1 = f / 255.0을 통해 이미지의 각 픽셀 값을 0~1 범위로 정규화한다.
    • (f1 ** gamma)을 통해 각 픽셀 값에 gamma 값을 적용한 감마 변환을 수행한 후, 255를 곱해 다시 0~255 범위로 변환하고, np.uint8로 형 변환하여 이미지로 반환한다.
  • 감마 값 변화에 따른 이미지 생성: 다양한 감마 값(0.5, 0.75, 1.0, 2.0, 3.0)을 사용하여 감마 변환을 적용하고 결과 이미지를 가로로 연결하여 gc에 저장한다.
  • 이미지 표시: 변환된 이미지(gc)를 'gamma'라는 창에 표시한 후, 키 입력을 기다리고 모든 창을 닫는다.

감마가 1일 때가 원본 영상이다.


 

 

 

 

히스토그램 평활화

히스토그램 평활화는 히스토그램이 평평하게 되도록 영상을 조작해 영상의 명암 대비를 높이는 기법이다. 명암 대비가 높아지면 영상에 있는 물체를 더 잘 식별할 수 있다. 어떻게 히스토그램을 평평하게 만들 수 있을까?

 

 

다음 프로그램은 히스토그램 평활화를 수행한다. 

 

 

히스토그램 평활화하기

 

 

 

 

 

 

실행 결과를 분석해보자. 첫 행에 있는 원래 영상 히스토그램을 통해 [0, 255]의 전체 명암값에서 0~50 범위는 거의 사용하지 않고 대부분의 화소값이 100~200 사이라는 사실을 알 수 있다. 원래 영상이 흐릿한 이유다.

히스토그램 평활화된 영상의 히스토그램은 이전보다 평평해졌으며 영상은 상당히 선명해졌다.