본문 바로가기
Computer Science(컴퓨터 과학)/영상처리

영상처리 - 픽셀 기반 처리1 (산술 연산, 히스토그램 평활화, 명암대비 스트레칭)

by BioLearner 2024. 10. 9.
반응형

이번 포스팅에서는 영상 처리 분야 중 하나인 픽셀 기반 처리에 대해 이야기해보도록 하겠다. 픽셀 기반 처리는 각 픽셀의 원래 값이나 위치를 바탕으로 픽셀 값을 변경하는 기법을 의미한다. 이때 중요한 점은 각 픽셀의 변경이 다른 픽셀의 영향을 받지 않는다는 것이다.

 

이번 포스팅에서는 픽셀을 기반으로 하는 여러 처리 기법을 다룰 것이다. 이를 통해 픽셀을 다듬고, 깎고, 합치는 일련의 과정을 이해할 수 있을 것이다. 이번 내용에서는 산술 연산, 히스토그램 평활화, 명암대비 스트레칭 에 대해 설명하고, 다음 포스팅에서는 이진화, 역상, 영상사이에 픽셀 기반 처리 에 대해 다룰 예정이다. 이를 두 개의 포스팅으로 나누어 심층적으로 설명하도록하겠다.

1. 산술연산

출처: https://korean-otter.tistory.com/150

영상 처리에서 산술 연산이란 화소에 일정한 값을 더하거나 빼거나 나누거나 곱하는 과정을 의미한다.

 

일반적으로 덧셈 및 뺄셈 연산을 영상에 적용하면 영상의 밝기를 조절할 수 있다. 반면, 곱셈 및 나눗셈 연산을 통해서는 명암 대비를 조절하는 효과를 얻을 수 있다. 이 과정의 결과는 위의 사진과 같다.

 

기본적으로 하나의 픽셀 값은 최대 255로 설정되어 있다. 따라서 영상 처리를 수행할 때는 결과 값이 255를 넘지 않도록 주의해야 한다.

 

2. 히스토그렘 평활화(Equalization)

출처: https://velog.io/@redorangeyellowy/ch03-기본적인-영상-처리-기법-히스토그램-평활화

히스토그램 평활화는 영상을 더욱 선명하게 보이도록 하는 기법이다.

 

히스토그램은 픽셀이 가진 명암 값에 대한 막대 그래프로, 이 그래프를 옆으로 펼치는 방법을 사용한다. 히스토그램은 명암 값의 대비 빈도수를 보여주기 때문에, 그래프만으로도 어떤 영상인지 파악할 수 있다.

 

이러한 기법은 영상의 명암 값이 좁은 영역에 집중되어 있을 때 특히 효과적이다. 히스토그램 평활화를 통해 명암 값을 고르게 분포시켜, 전체적인 영상의 선명도를 향상시킬 수 있다.


히스토그램 평활화의 4단계

히스토그램 평활화의 과정은 주어진 영상의 명암 값 분포를 재분배하여 보다 균일한 분포를 가진 히스토그램을 생성하는 기법이다. 이 과정은 다음의 네 단계로 구성된다.

 

1. 입력 영상의 히스토그램 생성

각 명암 값 j에 대한 빈도수 를 계산하여 입력 영상의 히스토그램을 생성한다.

 

2. 누적 빈도수 계산

각 명암 값 i에 대해, 0부터 i까지의 빈도수를 누적하여 계산한다.(누적값 sum[i])

출처: https://editor.codecogs.com/

3. 누적 빈도수 정규화
단계 2에서 구한 누적 빈도수를 정규화한다. (N은 전체 픽셀수)

 

출처: https://editor.codecogs.com/

4. 입력 영상에서 픽셀 값 변환
입력 영상의 각 픽셀 값 i를 정규화된 값 n[i]로 변환하여 결과 영상을 생성한다. 이를 통해 최종적으로 평활화된 히스토그램을 얻을 수 있다.

 

이 과정을 실제로 해보겠다.

 

원본데이터:

40 40 50 60 70
40 50 60 70 70
50 60 70 70 80
60 70 70 80 90
70 70 80 90 100

 

(1) 입력 영상의 히스토그램 생성(히스토그램 만드는 건 생략) + 빈도수 계산(hist[j])

40: 3

50: 3

60: 4

70: 9

80: 3

90: 2

100:1

 

(2) 누적 빈도수 계산(sum[i])

40: 3

50: 3+3 = 6

60: 6+4 = 10

70: 10+9 =19

80: 19+3 = 22

90: 22+2 = 24

100: 24+1 = 25

 

(3) 누적 빈도수 정규화 

n[40] = 3 / 25 X 255 = 30.6

n[50] = 6 / 25 X 255 = 61.2

n[60] = 10 / 25 X 255 = 102

n[70] = 19 / 25 X 255 = 193.8

n[80] = 22/ 25 X 255 = 224.4

n[90] = 24 / 25 X 255 = 244.8

n[100] = 25 / 25 X 255 = 255

 

(4) 입력 영상에서 픽셀 값 변환

명암값 빈도수 hist[j] 누적합 sum[i] 정규화 n[i]
40 3 3 30.6
50 3 6 61.2
60 4 10 102
70 9 19 198.8
80 3 22 224.4
90 2 24 244.8
100 1 25 255

 

위 방법을 사용한다면 보다 더 선명한 영상을 볼 수 있게 된다.

3. 명암대비 스트레칭

출처: https://velog.io/@redorangeyellowy/ch03-기본적인-영상-처리-기법-영상의-명암비-조절

 

이제 알아볼 내용은 명암 대비 스트레칭이다. 이 기법은 명암값을 활용하여 히스토그램(빈도수 그래프)을 좌우로 확장하여 0에서 255까지의 값을 포함하도록 만드는 방식인데 이 방법은 max, min 차이가 작은 영상에 적합하다.

 

명암 대비 스트레칭은 다음과 같은 수식을 통해 표현할 수 있다. (min: 최저 픽셀값, max: 최고 픽셀값)

출처: https://editor.codecogs.com/

이제 위에 그림을 보자... 확실히 선명도가 달라진 것을 볼 수 있다.


다음 포스터

 

영상처리 - 픽셀 기반 처리2 (이진화, 역상, 영상사이에 픽셀 기반 처리)

영상처리 - 픽셀 기반 처리1 (산술 연산, 히스토그램 평활화, 명암대비 스트레칭)이번 포스팅에서는 영상 처리 분야 중 하나인 픽셀 기반 처리에 대해 이야기해보도록 하겠다. 픽셀 기반 처리는

insight0591.tistory.com

 

반응형