목차
📁 Pixel-wise operation
Pixel-wise operation이란, 주변 픽셀을 이용하지 않고 자신의 픽셀만 Processing(변화)시키는 것을 말한다.
point processing, point operations이라고도 부른다.
주변 픽셀값을 고려하여 자신의 픽셀을 변화시키는 Neighborhood Processing과 반대되는 개념이다.
예시는 다음과 같다.
📁 Arithmetic Operation
pixel intensity(화소 강도)란 해당 픽셀의 밝은 정도를 나타내며, gray level(회색도)이라고도 불린다.
만약 이미지가 gray image라면, 픽셀의 value(값)이 곧 intensity인것이다.
이미지가 color image라면, 픽셀은 intensity, coordinates, channel로 구성된다.
channel은 Red, Green, Blue의 총 세 채널로 구성되고,
coordinates는 픽셀의 좌표이며,
intensity는 각 채널의 픽셀값을 말한다.
I는 input pixel intensity, O는 output pixel intensity를 나타내는 기호이다.
픽셀 값에 수식을 적용하여 변화시키는 작업이 가능하다는 것이다. arithmetic operation으로 연산하게 되면 대비나 밝기에 변화가 생긴다.
예를 들면 다음과 같은 두 수식이 있다.
𝑓(𝐼) = 𝐼 + 128
𝑓(𝐼) = 𝐼 − 128
위 수식들은 1차 함수의 형태이며 이를 그래프로 그리면 다음과 같다.
위 두 수식을 수학적 그래프로 표시했다면 빨간 선과 같이 나타나야하지만, f(I), 즉 Output이 pixel intensity값이기 때문에 0~255의 값으로 범위가 제한된다.
그렇기 때문에 계산값이 255를 넘어가거나 0보다 작으면 pixel intensity로 표현할 수 없으므로 검은색 그래프와 같이 255 혹은 0으로 고정한다.
위 두 수식을 gray image에 적용하면 다음과 같이 결과가 나타난다.
마찬가지로 아래와 같이 다른 수식들을 적용한 여러 예시를 볼 수 있다.
색반전을 목적으로 할때는 다음과 같은 수식을 적용한다.
- type double (0.0~1.0) : 1 - x
- type uint8 (0~255) : 255 - x
📁 Histogram
히스토그램이란 어떠한 변수에 대해 구간별 빈도수를 나타내는 그래프이다.
영상 처리의 관점에서 어떠한 변수를 픽셀이라고 가정하면,
하나의 이미지에서 각각의 값을 가진 픽셀(intensity)이 몇 개 있는지 나타내는 그래프를 뜻하게 된다.
histogram으로 픽셀 값(intensity값)의 분포를 확인할 수 있다.
다음과 같이, 왼쪽의 이미지를 분석하여 오른쪽 그래프와 같은 히스토그램으로 나타낼 수 있다.
사람의 옷에 어두운 색이 많이 쓰였으므로 히스토그램에서 낮은 x축 값 구간에 y값이 큰 것을 확인할 수 있다.
히스토그램은 대비가 높고, 작은 값이 많은 uniform distribution(균일한 분포)를 이루는것이 대부분 바람직하다.
1. 낮은 영역에 많이 분포하면 어두운 이미지이다.
2. 높은 영역에 많이 분포하면 밝은 이미지이다.
3. 좁은 구간에 모여 분포하면 대비가 좋지 않은 이미지이다.
4. 넓은 범위에 걸쳐 분포하면 대비가 좋은 이미지이다.
이때 이미지가 어둡다고 무조건 대비가 낮거나, 밝다고 무조건 대비가 높은것이 아니다.
High-contrast image와 같이 바람직한 분포를 만들기 위해,
대비가 좋지 않은 이미지의 히스토그램을 늘려서 대비를 높게 만드는 두 가지 방법이 있다.
📌 Histogram Stretching
📌 Histogram Equalization
📁 Histogram Stretching
piecewise linear stretching function
gray levels a𝑖 ~ a𝑖+1 을 gray levels b𝑖 ~ b𝑖+1범위로 늘리고자할 때, 위와 같은 수식을 사용할 수 있다.
i를 2라고 설정하면 y는 위와 같은 선형 그래프로 나타나진다.
예시는 아래와 같다.
왼쪽 그래프의 5 - 9 픽셀값을 2 - 14의 범위로 스트레칭하고자 한다.
위 수식을 이용하면 gray levels 5는 2로, 6은 5, ... 와 같이 새 픽셀값을 구할 수 있다.
즉 기존에 픽셀 값이 5였던 값들을 모두 2로 바꾸고, 나머지도 변환하는 방식으로 output을 구한다.
Gamma correction
디스플레이단에서는 전압(physical power)에 의해서 RGB값을 제어하는데, 이때 전압은 linear하게 동작하지 않기 때문에, 모니터에서는 원래의 영상과 다른 색상으로 영상이 보여지게 된다.
이를 감마 보정을 통해 디스플레이에서도 똑같이 보이게 할 수 있다.
원래는 output from monitor처럼 sample input to monitor와 다른 결과가 나온다.
이를 gamma corrected input으로 감마보정을 해줘서 monitor output처럼 sample input과 같은 결과가 나오도록 보정하는 것이다.
계산 시에는 위와 같은 수식을 사용하여 새 픽셀값을 구한다.
기존의 어두운 부분을 stretching할 때 1보다 작은 gamma를 사용하고,
기존의 밝은 부분을 stretching할 때 1보다 큰 gamma를 사용한다.
감마를 0.5로 설정하면 위와 같은 변화를 얻을 수 있다.
📁 Histogram Equalization
histogram equalization은 가능한 한 균일한 gray level 분포를 갖도록 입력 이미지를 향상시키는 것을 목표로 한다.
위와 같은 결과가 가장 이상적인 케이스이다.
가장 먼저 원본 히스토그램을 확률 밀도 함수(probability density function, PDF)로 간주하고,
x축, 위 그림에서는 r을 [0, 1]로 normalized한다.
input은 fR(r),
output은 fS(s) = 1,
이상적인 r과 s와의 관계는 s = T(r)이다.
이를 바탕으로 T(r) ..
모르겟땅
기존의 픽셀 값이 [0, 7] 범위라고 가정하고, 특정 히스토그램을 가진 이미지를 equalization하는 총 과정은 위와 같다.
다음 블로그를 참고하였다.