이미지 압축 방법은 크게 두가지로 분류할 수 있다. 손실 압축과 무손실 압축. 손실 압축의 대표적인 방법에는 JPEG와 JPEG2000이 있다. 무손실 압축 방식에는 BMP, PNG, GIF 등이 있다. 손실 압축은 이미지의 내용에 손실을 주면서 압축하는 방식이고, 무손실 압축은 어떠한 손실 없이 압축하는 방식이다. 당연히 손실 압축 방식이 무손실 압축 방식에 비해 용량을 많이 줄일 수 있다. 오늘은 손실 압축 방식인 JPEG과 JPEG2000에 대해 정리하려고 한다. 


JPEG은 이미지 신호를 8 x 8 사이즈의 블락(block)으로 분할한 다음에 각 블락을 이산코사인변환으로 주파수 도메인으로 옮긴다. 고주파수에 해당하는 계수들을 양자화함으로 이미지의 내용을 고의로 손실시킨다. 고주파수에 해당하는 계수들은 이미지에서 디테일한 부분을 담당하는데 어느 정도 버려도 사람의 눈에 거슬리지 않는다. JPEG2000은 이산코사인변환 대신에 이산웨이블릿변환을 이용한다. JPEG과 달리 이미지 전체를 단번에 주파수 도메인으로 옮긴 다음에 계수들을 양자화한다. 양자화할 때 많은 작은 웨이블릿 계수들을 0으로 만들어버린다. 


그렇다면 둘 중 어떤 압축 방식이 더 이미지의 품질을 잘 보존할까? 이미지의 품질 보존의 관점에서는 JPEG2000이 JPEG보다 더 나은 이미지 압축 방법이다. 첫째, JPEG2000은 눈에 거슬릴만한 인공산물(artifacts)을 JPEG보다 덜 만들어낸다. JPEG과 JPEG2000 둘다 압축을 많이 시킬때 색 왜곡, ringing, blurring과 같은 인공산물들을 생산해낸다. JPEG 압축은 거기에 추가적으로 blocking 현상도 만들어낸다. 왜냐하면 앞서 말했듯이 이미지를 8 x 8 사이즈의 블락으로 분할할 다음에 처리하기 때문에 그 흔적이 남는다. 아래 그림1은 ringing, blurring, blocking 인공 산물들이 첨가된 이미지들을 보여준다. ringing은 이미지의 엣지 주변이 진동하는 것처럼 보이는 왜곡현상이다. blurring은 선명한 이미지를 무뎌지게 하는 현상이다. blocking은 사각형모양의 왜곡들이 첨가되는 것을 의미한다.  


그림1. ringing, blurring, blocking 현상 설명. (이미지출처: http://live.ece.utexas.edu/research/Quality/subjective.htm)


둘째, JPEG2000은 좀 더 효율적인 코딩 구조를 갖고 있기 때문에 비트 에러나 다른 파일 시스템 에러의 영향을 덜 받는다. 셋째, JPEG2000 표준은 손실 압축만 제공하는 JPEG과 달리 무손실 압축도 제공한다. 

이처럼 JPEG2000이 JPEG보다 장점이 더 많은데 왜 JPEG2000을 사용하는 사람이 여전히 적은 것일까? 가장 큰 이유는 호환성 문제 때문이다. JPEG2000은 JPEG과 완전히 새로운 코드로 작성되었다. 그래서 JPEG2000을 지원하고자 하는 사람들은 새로운 표준으로 코드를 작성해야만 한다. 게다가 JPEG2000 파일을 다루는 것은 좀 더 복잡하고 처리할 때 더 많은 메모리를 요구한다. (메모리 문제는 JPEG2000이 개발된 1990년대 후반과 달리 이제는 큰 문제가 되지 않지만.)

이러한 호환성 문제 때문에 카메라 제조 회사와 웹사이트들은 아직 JPEG2000 포맷을 받아들이지 않고 있다. 유명한 사진 공유 사이트인 Flickr와 500px도 아직 JPEG2000을 지원하지 않는다. 그러다보니 더 나은 장점을 지니고 있음에도 확산되지 않고 있다. 

이런 것을 보면 기술적으로 더 낫다고 해서 사람들에게 무조건 선택을 받는 것은 아닌 것 같다. 웬만큼 우수하지 않고서는 기존에 깔린 판을 바꾸기가 쉽지 않다. 



<참고자료>

[1] http://www.stat.columbia.edu/~jakulin/jpeg/artifacts.htm, jpeg과 jp2k가 만들어내는 인공산물(artifacts) 비교

[2] https://petapixel.com/2015/09/12/jpeg-2000-the-better-alternative-to-jpeg-that-never-made-it-big/, jp2k가 jpeg에 비해 상용화되지 않는 이유. 

[3] https://en.wikipedia.org/wiki/Ringing_artifacts, 위키백과 ringing artifacts 설명. 

[4] https://photo.stackexchange.com/questions/19270/what-are-jpeg-artifacts-and-what-can-be-done-about-them?newreg=c75fdd7adb104614a620f688d6cc6884, StackExchange 설명. 

[5] Hou W , Gao X , Tao D , et al. Blind Image Quality Assessment via Deep Learning[J]. IEEE Transactions on Neural Networks and Learning Systems, 2015, 26(6):1275-1286.

오늘은 푸리에 변환과 웨이블릿 변환에 대해서 정리하려고 한다. 이 글을 작성함에 있어서 아래 여러 참고자료들을 참고했는데, 이중에서 [5]가 푸리에 변환과 웨이블릿 변환의 차이를 직관적으로 이해하는데 가장 큰 도움을 줬다. [10], [11]도 개인적으로 매우 유익했다.  



▶ 푸리에 변환


웨이블릿 변환을 이해하기 위해서는 푸리에 변환을 어느 정도 알고 있는 것이 좋다. 푸리에 변환은 시간에 대한 함수 또는 신호를 주파수 성분으로 분해하는 작업이다. 푸리에 변환은 어떠한 형태의 신호든 다양한 주파수와 크기를 가진 사인 곡선들을 합해서 표현할 수 있다고 가정한다. 그림1을 참고하자. 


그림1. 푸리에 변환 설명. (그림출처: [11])


그림1과 같이 여러 개의 사인 곡선으로 분해한 다음에 그 사인 곡선들의 주파수들을 통해 신호 내의 어떤 주파수들이 존재하는지를 알아낼 수 있다. 푸리에 변환 후에 신호 내에 존재하는 주파수들을 분석할 수 있다는 장점이 있지만, 시간에 대한 정보가 사라져서 각 주파수가 시간적으로 언제 존재하는 것인지 알 수 없다는 한계가 있다. 그래서 시간마다 주파수가 변하는 신호를 제대로 분석하기 어렵다. 푸리에 변환은 0~10초까지는 10Hz, 10~20초까지는 20Hz인 신호1과 0~20초까지 10Hz와 20Hz가 공존하는 신호2를 구별해낼 수 없다. 단지 10Hz와 20Hz가 존재한다고만 알려줄 수 있다. 이것은 마치 악보에 음표가 시간의 흐름에 따라 배열되어 있는 것이 아니라, 음의 높이(주파수)에 따라 배열되어 있는 것과 같은 것이다. 어떤 음들이 해당 곡에 들어있는지는 알 수 있지만, 실제로 이 음들로 어떤 음악이 탄생했는지는 알 수 없다. 



▶ 단시간 푸리에 변환


이러한 한계를 돌파하기 위해 제안된 한 방법은 단시간 푸리에 변환(short-time fourier transfrom, STFT)이다. 시간에 따라 변화하는 긴 신호를 짧은 시간 단위로 분할한 다음에 푸리에 변환을 적용하는 것이다. 결과적으로 각 시간 구간마다 어떤 주파수들이 존재하는지 알 수 있다. 짧은 시간 단위로 신호를 분할할수록 어떤 '시간'에 어떤 주파수가 존재하고 있는가를 알기 좋아지고, 비교적 긴 시간 단위로 신호를 분할하면 어떤 '주파수'가 그 시간 내에 존재하는가를 알기 좋아진다. 그러니까 신호를 분할하는 창(window)의 너비가 작아질수록 시간분해능이 좋아진다는 것이고, 창의 너비가 커질수록 주파수분해능이 좋아진다는 것이다. 분해능이 좋다는 것은 더 세밀하게 분석할 수 있다는 뜻이다. 그림2를 참고하자. 


그림2. 단시간 푸리에 변환. 왼쪽은 창의 너비가 작아 시간 분해능이 좋은 경우고, 오른쪽은 창의 너비가 길어 주파수 분해능이 좋은 경우다. (그림출처: [8])


하지만 단시간 푸리에 변환의 경우 주파수분해능과 시간분해능이 동시에 좋아지는 것은 불가능하다. 나름대로 적절한 지점을 찾을 수는 있겠지만. 그래서 나오게 된 것이 바로 웨이블릿 변환이다. 



▶ 웨이블릿 변환


그림3은 단시간 푸리에 변환과 웨이블릿 변환의 차이를 보여준다.


그림3. 단시간 푸리에 변환과 웨이블릿 변환 비교. (그림출처: [11])


위 그림에서 볼 수 있듯이, 웨이블릿 변환은 고주파 성분의 신호에 대해서는 시간 해상도를 높이고 주파수 해상도를 낮춘다. 한편 저주파 성분의 신호에 대해서는 주파수 해상도를 높이고 시간해상도를 낮춘다. STFT가 시간 분해능과 주파수 분해능 중 하나를 포기해야했다면, 웨이블릿 변환은 교묘하게 둘다 잡는다. 


시간적으로 무한한 사인곡선을 기본함수로 사용하는 푸리에 변환과 달리, 웨이블릿 변환은 시간적으로 한정되어 있는 웨이블릿 함수를 기본함수로 사용한다. 웨이블릿은 여러 종류가 있어서 응용분야에 따라 하나를 선택해서 사용하면 된다는 유연성도 지니고 있다. 그림4는 몇 가지 예를 보여준다.


그림4. 다양한 웨이블릿 형태들. (그림출처: https://www.mathworks.com/videos/understanding-wavelets-part-1-what-are-wavelets-121279.html)


이 웨이블릿을 스케일링(시간에 대해 확장 또는 축소)하고 시프팅함(시간축으로 이동)으로 신호를 분석해낼 수 있다는 것이 웨이블릿 변환의 핵심이다. 웨이블릿 변환의 절차는 다음과 같다.


1) 작은 스케일의 웨이블릿을 신호의 시작부터 끝까지 이동시키면서 비교한다. 신호와 웨이블릿의 유사도를 C라는 계수에 담는다. 

2) 신호의 끝까지 비교했다면, 웨이블릿의 스케일을 좀 더 확장시킨 다음에 1)의 과정을 진행한다. 

3) 설정한 스케일까지 이 과정을 반복한다. 작은 스케일의 웨이블릿은 신호 내에서 급작스러운 변화들과 가장 닮았기 때문에 그런 구간을 만날 때 큰 C값을 준다. 웨이블릿의 스케일이 커질수록 신호 내에서 완만한 변화들과 가장 닮았기 때문에 그런 구간에 더 큰 C값을 준다. 그림5를 참고하자. 


그림5. 웨이블릿 변환 절차 설명. (그림출처: [11])


스케일이 작을 때 여러 구간으로 신호를 분리해서 분석하기 때문에 시간 분해능이 좋은 것이고, 스케일이 클 때 신호가 큼직하게 분리되지만 주파수에 대한 정보는 좀 더 잘 살펴볼 수 있기 때문에 주파수 분해능이 좋은 것이다. 


결과적으로 웨이블릿 변환은 신호를 근사값(approximation)과 세부값(detail)로 분해한다. 근사값은 신호의 저주파 성분(전반적 내용)을 담고, 세부값은 신호의 고주파 성분(세부 사항)을 담는다. 그림6을 참고하자. 


그림6. 웨이블릿 변환은 신호를 근사값과 세부값으로 분해한다. 이 과정은 멀티 스케일로 반복될 수 있다. (그림출처: [11])


그림6과 같이 여러 스케일로 웨이블릿 분해를 적용할 수 있다. 해상도가 반으로 줄어든 근사값을 또다시 근사값과 세부값으로 분해한다. 이것은 사용자의 필요에 따라 원하는 만큼 반복될 수 있다.


그렇다면 2차원 신호의 웨이블릿 변환은 어떨까? 웨이블릿 변환을 2차원 영상에 적용하면 1개의 근사값과 3개의 세부값(수평 세부값, 수직 세부값, 대각 세부값)으로 분해된다. 멀티 스케일로 분해하면 근사값을 또 다시 1개의 근사값과 3개의 세부값으로 분해한다. 예를 들어, 400 x 400 이미지를 2개의 스케일로 분해한다면 첫 단계에서는 200 x 200 사이즈의 근사값 이미지와 3개의 세부값 이미지를 얻게 되고, 두번째 단계에서는 200 x 200 근사값 이미지가 다시 한번 분해되어 100 x 100 사이즈의 근사값 이미지와 3개의 세부값 이미지로 분해된다. 그림7을 참고하자. 


그림7. 2차원 영상의 웨이블릿 분해의 예. (그림출처: https://en.wikipedia.org/wiki/Discrete_wavelet_transform)


영상 압축 기술인 JPEG2000이 웨이블릿 변환을 활용한다. 방법은 웨이블릿 분해 후에 산출된 계수들을 양자화(quantization)해서 계수의 갯수를 줄인 다음에 다시 합성하는 것이다. 결과적으로 이미지의 디테일들이 사라지기 때문에 그만큼 용량이 줄어들게 된다. 이 디테일들은 사람들의 눈에 잘 보이지 않는 것들이기 때문에 용량을 줄이는 것이 우선이라면 어느 정도 제거해도 괜찮다. 



▶ 글을 마무리하며


웨이블릿 변환을 제대로 이해하기 위해 조사하며 작성하다 보니 5일이나 걸렸네요. 나름대로 최선을 다했지만 여전히 부족한 부분도 많이 있습니다. 하지만 정독하신다면 웨이블릿 변환과 푸리에 변환의 차이를 직관적으로 이해할 수 있을 것이라 생각합니다. 끝까지 읽어주셔서 감사합니다! 



<참고자료>

[1] https://ko.wikipedia.org/wiki/%EC%9B%A8%EC%9D%B4%EB%B8%94%EB%A6%BF_%EB%B3%80%ED%99%98, 위키백과 웨이블릿 변환(한글)

[2] https://en.wikipedia.org/wiki/Wavelet_transform, 위키백과 웨이블릿 변환(영문)

[3] https://m.blog.naver.com/PostView.nhn?blogId=matlablove&logNo=221229281729&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F, Mathworks가 제공하는 웨이블릿 변환에 관한 강의들. 

[4] http://cfd.hanyang.ac.kr/index_kor.htm, 한양대 CFD 랩 웨이블릿 설명. 

[5] http://clavez.tistory.com/54, clavez님 티스토리, Wavelet 변환의 등장 배경 및 배경. Good! 

[6] https://en.wikipedia.org/wiki/Fourier_transform, 위키백과 푸리에 변환(영문)

[7] https://ko.wikipedia.org/wiki/%ED%91%B8%EB%A6%AC%EC%97%90_%EB%B3%80%ED%99%98, 위키백과 푸리에 변환(한글)

[8] https://en.wikipedia.org/wiki/Short-time_Fourier_transform, 위키백과 단시간 푸리에 변환(영문)

[9] https://en.wikipedia.org/wiki/Multiresolution_analysis, 위키백과 멀티분해능 분석(영문)

[10] http://ryoo.tistory.com/attachment/pns3830.ppt, 홍정미, 문희윤님에 의해 작성된 웨이블릿 변환에 관한 PPT 자료. Good!  

[11] https://slideplayer.com/slide/7537671/, 이 웨이블릿 변환에 관한 Alexander Kolesnikov 강의 PPT, Very Good! 

오늘은 이미지 그레디언트(gradient)를 이용해서 엣지 정보를 검출하는 것에 대해 정리하겠다. 디지털 이미지를 처리할 때 왜 엣지 정보가 중요한지는 이전 포스팅에서 다뤘었다. => https://bskyvision.com/132


사람의 시각시스템은 우리가 보는 장면 중에서 변화가 있는 부분을 중점적으로 처리한다. 이미지 내에서 변화가 큰 부분은 바로 엣지(가장자리)들이다. 그렇기 때문에 디지털 이미지를 처리할 때 엣지 정보를 중요하게 다뤄야하는 것이다. 



▶ 이미지 그레디언트


우선 그레디언트는 '기울기, 증감, 변화도'라는 뜻을 지닌다. 한마디로 변화하는 정도를 나타내는 단어이다. 이미지 내에서 픽셀값의 변화가 큰 부분은 일반적으로 엣지 및 코너 부분일 것이다. 반면 평탄(flat)한 부분은 변화가 적을 것이다. 그림1을 참고하자. 


그림1. 엣지, 코너, 평탄 부분 설명.


변화하는 정도는 수학적으로 미분과 관련이 있다. 이미지는 2차원이기 때문에 수직 방향과 수평 방향으로 미분해주면, 수직 방향으로 어떻게 변화하는지, 또한 수평 방향으로 어떻게 변화하는지를 알 수 있다. 


이미지 I의 그레디언트는 아래와 같이 계산한다. 


...(수식1: 이미지 그레디언트)


여기서 는 수평 방향으로의 변화,  는 수직 방향으로의 변화를 나타낸다. 따라서, 이 벡터는 (x, y)에서 수평 방향으로, 수직 방향으로 얼마나 변화하는지를 알려준다. 


그레디언트 벡터의 크기(magnitude)와 방향(direction)은 각각 다음과 같다.


...(수식2: 그레디언트 크기)


...(수식3: 그레디언트 방향)


그럼 와 를 어떻게 구할까? 여러 방법이 있지만 그중 가장 간단한 것은 1차 미분 엣지 검출을 위해 고안된 마스크로 이미지를 컨볼루션해주는 것이다. 마스크 종류에는 Roberts 마스크, Prewitt 마스크, Sobel 마스크 등이 있다. 그중 Prewitt 마스크와 Sobel 마스크는 그림2와 같다. 


그림2. Prewitt 마스크와 Sobel 마스크.


대각 엣지 검출 마스크를 사용하면 대각 엣지도 검출 가능하다. Prewitt 마스크와 Sobel 마스크는 상당히 유사하다. 차이가 있다면 Sobel 마스크는 그레디언트를 구하고자 하는 픽셀 위치에서 가까울수록 더 큰 가중치를 주는 형태이다. Sobel가 Prewitt보다 좀 더 나은 노이즈 억제력을 보인다고 한다[1]. 노이즈가 있는 상황에서 좀 더 엣지를 잘 도출해낸다는 뜻이다. Sobel 엣지에 대한 더 자세한 설명은 링크건 포스팅을 참고하자. => https://bskyvision.com/43



▶ 이미지 그레디언트 산출하기


Sobel 마스크를 이용해서 그레디언트 크기 이미지와 방향 이미지를 산출해보자. 매트랩에서 작성한 코드는 다음과 같다. 


clc, clear, close all


img = imread('DSC03771.JPG'); % 이미지 읽기

img = rgb2gray(img); % RGB 컬러 영상 그레이 영상으로 전환


Sobel_mask_h = [-1 -2 -1; 0 0 0; 1 2 1]; % 수평 엣지 검출용 Sobel 마스크

Sobel_mask_v = [-1 0 1; -2 0 2; -1 0 1]; % 수직 엣지 검출용 Sobel 마스크


img_h_edge = conv2(img, Sobel_mask_h, 'valid'); % 수평 엣지 검출

img_v_edge = conv2(img, Sobel_mask_v, 'valid'); % 수직 엣지 검출


figure, imshow(mat2gray(img_h_edge));

figure, imshow(mat2gray(img_v_edge));


Grad_mag = sqrt(img_h_edge.^2 + img_v_edge.^2); % 그레디언트 크기 이미지

Grad_direc = atan(img_v_edge./img_h_edge); % 그레디언트 방향 이미지


figure, imshow(mat2gray(Grad_mag));

figure, imshow(mat2gray(Grad_direc));


테스트 이미지와 결과 이미지들은 아래와 같다. 


그림3. 그레디언트 이미지.


먼저 그림3(b)를 보면, 수평 엣지들을 주로 도출되었음을 알 수 있다. 그림3(c)에서는 수직 엣지들이 도드라져있다. 그림3(d)는 수식2를 이용해서 만들어진 그레디언트 크기 이미지이다. 이미지 내의 엣지들이 대체적으로 잘 도출되었음을 확인할 수 있다. 그림3(e)는 수식3을 통해 계산된 그레디언트 방향 이미지이다. 



▶ Sobel 엣지와 Prewitt 엣지 비교


[1]에서 Sobel 마스크가 Prewitt 마스크보다 더 나은 노이즈 억제력이 있다고 언급했었다. 실제로 그런지 확인해보려고 한다. additive white Gaussian noise로 손상된 이미지에서 Sobel 엣지와 Prewitt 엣지를 도출해서 비교해보자. 매트랩 코드는 다음과 같이 작성했다.


clc, clear, close all


img = imread('DSC07466.JPG'); % 테스트 이미지 읽기

noise_img = imnoise(img, 'gaussian', 0, 0.01); % 노이즈 첨가


figure, imshow(noise_img);


noise_img = rgb2gray(noise_img); % 노이즈 첨가된 RGB 컬러 영상 그레이 영상으로 전환


sobel_mask_h = [-1 -2 -1; 0 0 0; 1 2 1]; % 수평 엣지 검출용 Sobel 마스크

sobel_mask_v = [-1 0 1; -2 0 2; -1 0 1]; % 수직 엣지 검출용 Sobel 마스크


sobel_h_edge = conv2(noise_img, sobel_mask_h, 'valid'); % 수평 엣지 검출

sobel_v_edge = conv2(noise_img, sobel_mask_v, 'valid'); % 수직 엣지 검출


sobel_edge = sqrt(sobel_h_edge.^2 + sobel_v_edge.^2); % sobel 엣지 이미지(그레디언트 크기)


prewitt_mask_h = [-1 -1 -1; 0 0 0; 1 1 1]; % 수평 엣지 검출용 Prewitt 마스크

prewitt_mask_v = [-1 0 1; -1 0 1; -1 0 1]; % 수직 엣지 검출용 Prewitt 마스크


prewitt_h_edge = conv2(noise_img, prewitt_mask_h, 'valid'); % 수평 엣지 검출

prewitt_v_edge = conv2(noise_img, prewitt_mask_v, 'valid'); % 수직 엣지 검출


prewitt_edge = sqrt(prewitt_h_edge.^2 + prewitt_v_edge.^2); % Prewitt 엣지 이미지(그레디언트 크기)



figure, imshow(mat2gray(sobel_edge))

figure, imshow(mat2gray(prewitt_edge))


노이즈 이미지와 노이즈 이미지의 Sobel 및 Prewitt 엣지 이미지들을 살펴보자. 


그림4. 노이즈 이미지와 Sobel 엣지 및 Prewitt 엣지 이미지.


화이트 가우시안 노이즈를 첨가하고 Sobel 엣지와 Prewitt 엣지를 도출했는데, 둘 중 어떤 것이 더 나은 성능을 보인다고 말하기 어려울 정도로 결과 영상에 큰 차이가 없다. 테스트 이미지를 바꿔보고, 노이즈의 강도를 조절하면서 체크해봤는데도 큰 차이를 느끼지 못했다. 그렇다고 이 결과로 [1]의 내용을 완전히 부정할 수는 없다. 



▶ 글을 마무리하며..


Roberts 연산자, Prewitt 연산자, Sobel 연산자는 1차 미분을 이용한 엣지 검출방법이다. 반면, LoG(Laplacian of Gaussian)은 2차 미분을 이용한 엣지 검출방법이다. 




<참고자료>

[1] Rafael C. Gonzalez, Richard E. Woods, "Digital Image Processing" (3판), Pearson

오늘은 이미지 품질 평가(image quality assessment) 분야에서 가장 영향력이 있는 SSIM이라는 알고리즘과 SSIM의 변형 발전시킨 알고리즘들을 살펴보겠다. SSIM은 이미지 품질 평가의 필요성과 중요성을 학계에 강하게 알렸다고도 말할 수 있는 알고리즘이다. SSIM의 저자들 중 Zhou Wang 교수와 Alan C. Bovik 교수는 이미지 품질 평가분야에서 핵심 인물들이다. 아래는 두 교수가 담당하고 있는 연구실들의 홈페이지 주소들이다.


Zhou Wang 교수의 연구실 Waterloo 대학교 IVC 홈페이지:

http://ivc.uwaterloo.ca/


Zhou Wang 교수의 개인 홈페이지: 

https://ece.uwaterloo.ca/~z70wang/


Alan C. Bovik 교수의 연구실 텍사스 대학교 LIVE 홈페이지: 

http://live.ece.utexas.edu/index.php


특히 Alan C. Bovik 교수의 텍사스 대학의 LIVE 연구실은 계속적으로 이미지 품질 평가에 관한 영향력있는 논문들을 게재하고 있다. 개발한 알고리즘의 소스코드도 대부분 공개하고 있어서 이미지 품질 평가 발전에 큰 공헌을 하고 있다. (개인적으로 나도 나중에 이러한 연구실을 하나 꾸리고 싶다.)



▶ SSIM (structural similarity)


해당논문: Z. Wang, A. C. Bovik, H. R. Sheikh, and E. P. Simoncelli. Image quality assessment: from error visibility to structural similarity. IEEE transactions on image processing, 13(4):600, 2004.


사람 시각 시스템은 이미지에서 구조 정보를 도출하는데 특화되어 있기 때문에 구조 정보의 왜곡 정도가 지각 품질에 가장 큰 영향을 미친다. 이것이 바로 SSIM의 기본이 되는 핵심 가설이다. 구체적으로 원본 이미지 x와 왜곡 이미지 y의 밝기, 콘트라스트, 구조를 비교한다. 


우선 두 이미지의 평균 밝기를 비교한다. 


...(공식1: 밝기 비교)


그리고 이미지의 표준편차값을 이미지의 콘트라스트로 정의하고, 두 이미지의 표준편차값을 비교한다.  


...(공식2: 콘트라스트 비교)


또한 구조는 이미지에서 평균 밝기를 빼주고, 표준편차로 나눠준 것이라고 정의했다: 


.


저자들은 이 둘의 상관계수를 구하는 것과 x, y의 상관계수를 구하는 것이 등가라고 판단해서, x, y의 상관계수를 구함으로 원본이미지와 왜곡이미지의 구조를 비교했다.  


...(공식3: 구조 비교)


이 세가지 비교 항목을 아래와 같이 하나로 묶어주어, 품질 맵을 만든다.  


...(공식4: SSIM 맵)


저자들은 이 SSIM을 전역적으로 적용하지 않고 지역적으로 적용했다. 그렇게 얻은 SSIM 맵의 픽셀 값들을 평균냄으로 최종 품질 점수를 얻었다. 


다음 원본 이미지와 왜곡 이미지에 SSIM을 적용해 얻은 밝기비교맵, 콘트라스트비교맵, 구조비교맵, 그리고 최종적인 SSIM맵을 확인해보자. 밝을 수록 해당 지역의 품질은 좋은 것이고, 어두울 수록 품질이 나쁜 것이다. 


그림1. 원본 이미지. (약 10년전 사진인데 참 촌스럽다 ㅋㅋ) 그림2. 왜곡된 이미지. JPEG 압축이 과도하게 되었다.


이 두 이미지의 밝기를 비교한 밝기비교맵이다(공식1 참고).   


그림3. 밝기비교맵.


전반적으로 흰색에 가깝기 때문에 밝기 부문에서는 왜곡 현상이 크지 않다는 것을 알 수 있다. 


이번에는 콘트라스트를 비교한 콘트라스트비교맵이다(공식2 참고).


그림3. 콘트라스트 비교맵.


벽돌들의 질감이 무뎌진 것과 하늘에 블락현상이 생긴 것을 잘 반영하고 있다.


이번에는 구조를 비교한 구조비교맵이다(공식3 참고).


그림5. 구조비교맵.


대략적인 윤곽을 제외하고는 구조정보가 압축에 의해 많이 손상되었음을 알 수 있다.


마지막으로 이 세 가지를 종합한 최종적인 SSIM 맵이다. 


그림6. SSIM 맵.


이 맵을 통해 우리는 벽돌의 질감이 무뎌진 것과 하늘에 블락현상이 생긴 것, 또한 인물의 디테일함이 사라진 것들이 지각 품질에 나쁘게 영향을 미쳤음을 알 수 있다. SSIM 점수는 1점 만점에 0.7967이었다. 



▶ MS-SSIM (multi-scale SSIM)


해당 논문: Z. Wang, E. P. Simoncelli, and A. C. Bovik. Multiscale structural similarity for image quality assessment. In Signals, Systems and Computers, 2004. Conference Record of the Thirty-Seventh Asilomar Conference on, pages 1398–1402 Vol.2, 2004.


MS-SSIM은 SSIM에 스케일 스페이스의 개념을 추가시킨 것이다. 여러 스케일에서 SSIM 점수를 산출한 다음에 가중곱해서 최종 스코어를 얻는다. 



▶ IW-SSIM (information content weighting MS-SSIM)


해당 논문: Z. Wang and Q. Li. Information content weighting for perceptual image quality assessment. IEEE Transactions on Image Processing, 20(5):1185–1198, 2011. 


IW-SSIM은 MS-SSIM을 좀 더 발전시켜, SSIM 맵을 평균내서 점수를 내지 않고 정보 중요도에 따라 다른 가중치를 부여해서 점수를 냈다.   



▶ CW-SSIM (complex wavelet SSIM)


해당 논문: M. P. Sampat, Z. Wang, S. Gupta, A. C. Bovik, and M. K. Markey. Complex wavelet structural similarity: a new image similarity index. IEEE Transactions on Image Processing, 18(11):2385, 2009.


CW-SSIM은 컴플렉스 웨이블릿 도메인으로 SSIM을 확장시켰다. 기존 SSIM이 기하학적 왜곡과 스케일 왜곡에 매우 민감하다는 것을 개선하기 위해 CW-SSIM이 개발되었다. CW-SSIM의 핵심 아이디어는 작은 기하하적 이미지 왜곡은 지역 웨이블릿 계수에서 일관된 위상 변화를 일으키는데, 이 위상 변화는 이미지의 구조를 바꾸지는 않는다는 것이다. 그러니까 이미지의 구조를 바꾸지 않는 작은 기하학적 왜곡들은 용인해내도록 SSIM을 변형시킨 것이다. 



▶ FSIM (feature similarity) 


해당 논문: L. Zhang, L. Zhang, X. Mou, and D. Zhang. Fsim: A feature similarity index for image quality assessment. IEEE Transactions on Image Processing, 20(8):2378–2386, 2011.


FSIM의 저자들은 원본이미지와 왜곡이미지를 그대로 놓고 비교하면 불필요한 정보들까지도 비교하게 된다고 보았다. 그래서 엣지와 zero-crossing등 저차원의 중요한 특성들을 가지고 품질을 비교하는 것이 더 낫다고 판단했다. 그들은 원본 및 왜곡 이미지에서 PC(phase congruency) 맵과 GM(gradient magnitude) 맵을 도출한 다음에 그 맵들간 유사도를 비교해서 지역 품질 맵을 만들었다. 그리고 PC 맵을 가중치로 이용해서 지역 품질 점수를 하나의 최종 품질 점수로 모았다.  



▶ GSM (gradient similarity based metric) 


해당 논문: A. Liu, W. Lin, and M Narwaria. Image quality assessment based on gradient similarity. IEEE Transactions on Image Processing, 21(4):1500–1512, 2012.

그레디언트는 이미지의 구조와 콘트라스트 변화를 잘 나타낸다. GSM은 그레디언트 정보의 유사도를 비교했다. 또한 이미지 밝기의 유사도를 추가적으로 비교했다. 최종적으로 그레디언트 유사도와 이미지 밝기 유사도를 하나의 스코어로 묶어주었다. 


<참고자료>

[1] Ren Y , Sun L , Wu G , et al. DIBR-synthesized image quality assessment based on local entropy analysis[C]// International Conference on the Frontiers & Advances in Data Science. IEEE, 2018. => SSIM 관련 알고리즘들 설명을 잘 해놓았음. 


오늘은 공분산(covariance)과 상관계수(correlation coefficient)에 대해서 알아보자. 



▶ 공분산


공분산은 확률변수 X의 편차(평균으로부터 얼마나 떨어져 있는지)와 확률변수 Y의 편차를 곱한 것의 평균값이다. 


...(공식1: 공분산)


여기서 는 각각 X와 Y의 평균값들이다. 


공분산이 0보다 크면 X가 증가할 때 Y도 증가한다는 뜻이다. 공분산이 0보다 작으면 X가 증가할 때 Y는 감소한다. 공분산이 0이면 두 변수 간에는 아무런 상관 관계가 없다. 이처럼 공분산을 통해 우리는 X의 증가에 따라 Y가 증가하는지 감소하는지에 대해서 알 수 있다. 다른 말로, 공분산은 두 변수 간에 양의 상관관계가 있는지, 음의 상관관계가 있는지 정도 알려준다. 하지만 상관관계가 얼마나 큰지는 제대로 반영하지 못한다. 


공분산의 문제는 확률변수의 단위 크기에 영향을 많이 받는다는 것이다. 이를 보완할 수 있는 것이 바로 상관계수다. 



▶ 상관계수


상관계수는 확률변수의 절대적 크기에 영향을 받지 않도록 공분산을 단위화시킨 것이다. 즉, 공분산에 각 확률변수의 분산을 나눠주었다.


...(공식2: 상관계수) 


상관계수는 양의 상관관계가 있는지 음의 상관관계가 있는지 알려줄 뿐만 아니라, 그 상관성이 얼마나 큰지도 알려준다. 1 또는 -1에 가까울 수록 상관성이 큰 것이고, 0에 가까울 수록 상관성이 작은 것이다. 


상관계수의 종류에는 피어슨 상관계수, 스피어만 상관계수, 켄달 상관계수 등이 있다. (참고: https://bskyvision.com/116) 피어슨 상관계수는 선형관계의 정도를 판단하고, 스피어만 상관계수와 켄달 상관계수는 단조관계의 정도를 판단한다. 




<참고자료>

[1] http://destrudo.tistory.com/15, 진지환님 티스토리글, 공분산과 상관계수

[2] https://m.blog.naver.com/yunjh7024/220819816790, 제이님 네이버블로그글, Story 5.1 선형관계의 척도: 공분산, 상관계수

▶ 스테레오스코피


스테레오스코피(stereoscopy)인간이 두 눈으로 살짝 다른 장면을 보는 것과 같이 두 개의 카메라를 이용해서 살짝 다른 시점에서 촬영한 영상 정보를 두 눈에 각각 입력되게 하는 방식이다. 스테레오스코피 방식은 3D 안경을 필요로 한다. 3D 안경의 종류에는 적청안경, 셔터글래스, 편광안경이 있다. 세 방식 모두 각 눈에 각 눈에 해당하는 영상을 입력시켜주는 것이 핵심이다. 


이중 가장 간단한 것은 적청안경이다. 적청안경의 한쪽은 붉은색으로 다른 한쪽 렌즈는 푸른색이다. 붉은색 렌즈에서는 붉은색 이미지가 보이지 않고 청색 이미지만 보이고, 청색 렌즈에서는 붉은색 이미지만 보인다. 색상을 제대로 표현해내지 못한다는 단점 때문에 거의 사용되지 않는다. 


셔터글래스 방식은 양쪽 눈을 교대로 가린다. 이 교대로 가리는 속도에 맞춰서 왼쪽 눈과 오른쪽 눈에 맞는 영상이 번갈아 상영된다. 화질이 좋고 시야각이 넓다는 장점이 있지만, 깜빡거림으로 인해 피로감이 심하다는 단점이 있다. 안경도 비싼 편이다. 


편광안경 방식은 화면에서 왼쪽 눈에 맞는 영상은 수직 방향의 진동으로 출력하고, 오른쪽 눈에 해당하는 영상은 수평 방향의 진동으로 출력한다. 편광안경은 한쪽은 수직 방향 진동만 받을 수 있고, 다른 한쪽은 수평 방향 진동만 받을 수 있다. 눈의 피로감이 적고 안경도 가볍지만, 셔터글래스에 비해 화질이 떨어진다. 현재 영화관에서 상영하는 3D영화는 주로 편광안경 방식을 사용하고 있다. 




DIBR


DIBR(depth image based rendering)은 2차원 영상과 그에 해당하는 깊이 지도를 이용하여, 기존에 존재하지 않는 새로운 시점의 영상을 만들어 내는 방식이다. 이 방식은 모든 시점의 영상을 가지고 있는 스테레오스코픽 방식에 비해 용량이 작아 저장과 전송이 용이하고 사용자의 편의에 따라 깊이 인자 값을 조정할 수 있다는 장점이 있다. 이러한 장점들 때문에 사용자의 위치에 따라 다양한 시점을 보여주는 멀티뷰(multi-view), 닌텐도3DS와 같이 3D 안경 없이 입체영상을 볼 수 있는 오토스테레오스코픽(autostereoscopic), 기존에 촬영된 2D 영상을 3D 영상으로 변환시키는 작업 등에 다양하게 활용된다. 



<참고자료>

[1] https://www.copyright.or.kr/information-materials/trend/tmis/download.do?brdctsno=41696&brdctsfileno=12915

[2] https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%85%8C%EB%A0%88%EC%98%A4%EC%8A%A4%EC%BD%94%ED%94%BC, 위키백과 스테레오스코피

[3] http://it.donga.com/4242/?page=2, 아이티 동아

이미지의 대표적 왜곡(distortion) 유형에는 JPEG, JP2K, Gaussian white noise, Gaussian blur등이 있다. 먼저 이러한 왜곡 유형으로 손상된 이미지들의 엔트로피를 구해서 어떤 왜곡 유형이 정보첨가왜곡(information-additive distortion)인지 정보손실왜곡(information-loss distortion)인지 판단하려고 한다. 또한 엔트로피와 이미지 지각 품질 사이에 어떠한 관계가 있는지 살펴보려고 한다. 



정보 엔트로피와 이미지 품질 사이의 관계


여기서 말하는 정보는 정보이론에서 말하는 정보로서, 놀람의 정도 또는 불확실성의 정도를 의미한다. 발생확률이 적은 사건은 더 큰 놀람을 야기하기 때문에, 그러한 사건은 큰 정보량을 갖는다고 말한다. 반면 발생확률이 큰 사건은 놀람을 거의 야기하지 않기 때문에, 그러한 사건은 작은 정보량을 갖는다. 엔트로피는 모든 발생가능한 사건의 평균 정보량이다. 정보량과 엔트로피에 대한 자세한 설명은 링크를 참고하자. (참고: https://bskyvision.com/389)


그러면 위에서 언급한 JPEG, JP2K, Gaussian white noise, Gaussian blur는 이미지내 정보량을 늘릴까 아니면 이미지내 정보량을 감소시킬까? 하나씩 살펴보자. 


1) JPEG 압축 왜곡


5장의 JPEG 이미지가 있다. 우측으로 갈 수록 왜곡의 정도가 크다. 각 이미지의 엔트로피를 계산해보았다. 


그림1. JPEG 왜곡 이미지들(오른쪽으로 갈 수록 왜곡 정도가 심하다)


7.9117 > 7.9107 > 7.9071 > 7.5637 > 7.0420


엔트로피가 왜곡의 정도가 심해질수록 작아지므로 JPEG은 정보손실왜곡이다. 



2) JP2K 압축 왜곡


그림2. JP2K 왜곡 이미지들(오른쪽으로 갈 수록 왜곡 정도가 심하다)


7.9108 > 7.9105 > 7.9074 > 7.9070 > 7.8861


엔트로피가 왜곡의 정도가 심해질수록 작아지므로 JP2K도 정보손실왜곡이다. 



3) Gaussian white noise


그림3. Gaussian white noise 왜곡 이미지들(오른쪽으로 갈 수록 왜곡 정도가 심하다)


7.9137 < 7.9164 < 7.9220 < 7.9277 < 7.9349


엔트로피가 왜곡의 정도가 심해질수록 커지므로 Gaussian white noise은 정보첨가왜곡이다. 



4) Gaussian blur


그림4. Gaussian blur 왜곡 이미지들(오른쪽으로 갈 수록 왜곡 정도가 심하다)


7.9011 > 7.8931 > 7.8779 > 7.8475 > 7.7941


엔트로피가 왜곡의 정도가 심해질수록 작아지므로 Gaussian blur도 정보손실왜곡이다. 



4개의 왜곡 유형을 분석해본 결과, JPEG, JP2K, Gaussian blur는 정보손실왜곡으로, Gaussian white noise는 정보첨가왜곡으로 판명되었다. 또한 정보손실왜곡으로 손상된 이미지의 경우 엔트로피의 크기가 감소함에 따라 이미지 품질도 나빠지는 정상관관계를 갖고, 정보첨가왜곡으로 손상된 이미지의 경우 엔트로피가 증가함에 따라 이미지 품질이 나빠지는 음상관관계를 갖는다. 






주님이 우리 예배 가운데 임재하셔야만 우리 예배는 의미가 있습니다. 주님을 만나야만 우리의 삶에 변화가 있습니다. 바울이 다메섹 도상에서 예수님을 만나고 완전히 변화되었던 것처럼, 야곱이 브니엘에서 하나님을 만나고 완전히 변화되었던 것처럼 우리도 만나주십시오. 



1. 예수 우리 왕이여

A코드, 4/4박자 

참고영상: https://www.youtube.com/watch?v=SmeqgyeHtk8, 양양 피아노


예수 우리 왕이여
이곳에 오소서
보좌로 주여 임하사
찬양을 받아 주소서

*주님을 찬양하오니
주님을 경배하오니
왕이신 예수여 오셔서
좌정하사 다스리소서


2. 성령의 비가 내리네

G코드, 2/4박자



성령의 비가 내리네
하늘의 문을 여소서
성령의 비가 내리네
하늘의 문을 여소서


3. 임재

A코드, 4/4박자



하늘의 문을 여소서
이곳을 주목하소서
주를 향한 노래가 꺼지지 않으니
하늘을 열고 보소서

이곳에 임재하소서
주님을 기다립니다
기도의 향기가 하늘에 닿으니
주여 임재하여 주소서

*이곳에 오셔서
이곳에 앉으소서
이곳에서 드리는 예배를 받으소서
주님의 이름이 주님의 이름만이
오직 주의 이름만 이곳에 있습니다



4. 우리 함께 기도해

E코드, 4/4박자

참고영상: https://www.youtube.com/watch?v=rJ8GZJ3YqMg, 마커스 워십


우리 함께 기도해
주앞에 나와 무릎꿇고
긍휼 베푸시는 주
하늘을 향해 두손들고

*하늘 문이 열리고 은혜의 빗줄기
이 땅 가득 내리도록
마침내 주 오셔서 의의 빗줄기
우리 위에 부으시도록


5. 나의 백성이

E코드, 4/4박자

참고영상: https://www.youtube.com/watch?v=NZUQNHjMDu0, 디사이플스


1나의 백성이 다 겸비하여 내게 기도하며
나의 얼굴을 구하여서 그 악한 길 떠나면
하늘에서 듣고 죄를 사하며
그들의 땅을 고치리라

*아버지여 고쳐주소서
이 나라 주의 것 되게 하소서
주 하나님 간절히 기도하오니
상한 이땅 새롭게 하소서

2무릎 꿇고 다 겸비하여 주께 기도하리
주의 얼굴을 구하여서 그 악한 길 떠나리
주님의 자비로 죄를 사하며
주님의 자비로 임하소서









최대신호대잡음비(peak signal-to-noise ratio, PSNR)는 신호가 가질 수 있는 최대 전력에 대한 잡음의 전력을 나타낸 것이다. 주로 영상 또는 동영상 손실 압축에서 화질 손실 정보를 평가할 때 사용된다. 



▶ PSNR 


PSNR은 다음과 같이 계산한다. 


...(공식1: PSNR)


여기서 는 해당 영상의 최댓값으로서, 8비트 그레이스케일영상의 경우는 255가 된다. 또한 는 평균제곱오차로써 다음과 같이 계산할 수 있다. 


...(공식2: MSE)


여기서 I는 m x n 사이즈의 그레이스케일 이미지이고, K는 I에 잡음이 포함된 이미지, 즉 왜곡된 이미지를 의미한다. 공식1의 분모에 MSE가 있으므로, MSE(평균제곱오차)가 작을수록 더 큰 PSNR을 갖게 되는 것이다. 따라서 품질이 좋은 이미지는 비교적 큰 PSNR을 가질 것이고, 품질이 나쁜 이미지는 비교적 작은 PSNR을 가질 것이다. 



▶ PSNR과 이미지 품질 사이의 관계


동일한 원본이미지에서 다른 정도로 JPEG 압축 손실된 이미지들의 PSNR을 구해보자. 

그림1. 원본 이미지와 다른 정도로 JPEG 압축 손실된 이미지들.


JPEG 압축 손실된 이미지들의 PSNR을 보면 압축률이 클수록 PSNR도 작아진 것을 확인할 수 있다. 


34.8227dB -> 30.9394dB -> 25.8699dB


오른쪽으로 갈수록 왜곡 현상이 점점 심해짐을 우리 눈으로 확인할 수 있다. 


34.8227dB (품질이 괜찮다) -> 30.9394dB (품질이 조금 나쁘다) -> 25.8699dB (품질이 매우 나쁘다)


단, 이상의 세 개의 손상 이미지만 가지고 PSNR이 품질을 나타내는 지표로 적당한지 판단하기엔 부족하다. 그래서 779개의 원본 및 손상 이미지와 그에 대한 지각 품질 점수(DMOS)를 라벨 값을 갖고 있는 LIVE 데이터베이스에서 실험을 진행했다. PSNR 점수와 라벨 간 상관성이 클수록 PSNR이 품질을 잘 반영한다고 볼 수 있다. 스피어만 상관계수(SROCC)를 산출했다. 


-1 또는 1이 완벽한 상관관계를 나타내므로, -0.8197은 꽤 강한 음상관관계를 갖고 있음을 나타낸다. 따라서 사람의 지각 품질을 PSNR이 어느 정도 잘 반영하고 있다고 볼 수 있다. 여기서 말하는 지각 품질 또는 인지 품질이란 우리가 어떤 이미지를 눈으로 보고 뇌로 처리해서 느끼는 품질을 의미한다. 



▶ PSNR의 한계


PSNR은 공식1에서 보듯이 단순히 원본 이미지와 왜곡 이미지 사이의 수치적 차이로 이미지 품질을 평가하기 때문에, 종종 사람이 느끼는 것과 일치되지 않은 품질 점수를 산출한다. 아래 두 이미지와 그에 해당하는 PSNR을 확인하자. 우선 왼쪽이미지는 JPEG 압축 손실된 이미지이고, 오른쪽이미지는 blur된 이미지이다. 


그림2. 비슷한 PSNR 값을 갖지만, 지각 품질은 사뭇 다른 이미지들.



두 이미지의 PSNR은 유사하다. 그러나 우리는 아래 이미지의 품질을 상대적으로 더 나쁘게 느낀다. 아마 100이면 100 모두 왼쪽 이미지의 지각 품질이 나쁘다고 평가할 것이다. 하지만 PSNR은 이러한 지각 품질을 제대로 반영하지 못한다. 이러한 한계를 극복하기 위해서 사람의 시각 시스템을 반영하기 위해 PSNR을 발전시켜 PSNR-HVS, PSNR-HVS-M등의 방법이 개발되었고, PSNR과 완전히 다른 접근법을 가진 SSIM, VIF와 같은 방법들도 제안되었다. 


참고로 위의 두 이미지에 대해 SSIM 점수를 구하면 다음과 같다. SSIM 경우 1에 가까울 수록 품질 점수가 좋은 것이다. 



SSIM 방법은 오른쪽 이미지에 더 큰 점수를 주었다. 우리가 느끼는 지각 품질에 좀 더 가까운 결과를 냄을 알 수 있다. 또한 LIVE 데이터베이스의 779개 이미지에서 실험을 진행하면 아래와 같은 결과가 나온다. 



PSNR보다 좀 더 나은 성능을 보임을 알 수 있다. (참고로 PSNR과 SSIM는 매트랩 내장 함수로 계산했다.)






<참고자료>

[1] https://ko.wikipedia.org/wiki/%EC%B5%9C%EB%8C%80_%EC%8B%A0%ED%98%B8_%EB%8C%80_%EC%9E%A1%EC%9D%8C%EB%B9%84, 위키백과

정보이론은 신호에 존재하는 정보의 양을 측정하는 이론이다. 정보이론의 핵심은 잘 발생하지 않는 사건은 자주 발생하는 사건보다 정보량이 많다는 것이다. 



▶ 정보량이란?


우선 정보이론에서 '정보량'이 무엇을 뜻하는지 알 필요가 있다. 정보이론에서 정보량이란 '놀람의 정도'를 의미한다. 놀람의 정도라는 것은 모두가 알만한 정보가 아니라 새롭고 특이해서 사람들로 하여금 놀람을 일으키는 정도라고 볼 수 있다. 식상한 정보일수록 정보량이 적고, 놀라움을 주는 정보일수록 정보량이 크다. 


정보량이 무엇인지 직관적으로 이해하기 위해 하나의 예를 들어보겠다. 한 대학 수업에서 교수님이 강의를 마치기 전에 아래와 같은 말 중 하나를 했다고 가정해보자.


A. 다음 시간에 봅시다.

B. 다음 시간에는 다른 교수님이 대신 수업하실 거에요.

C. 이 수업 모두에게 A학점 줄거에요. 그리고 이번 학기 더이상 수업 없습니다. 


어떤 말을 들었을 때 학생들이 가장 놀랄까? 바로 C이다. 일반적이지 않고, 일어날 확률이 매우 작기 때문이다. 학생들은 매우 놀람과 함께 좋아서 난리를 칠 것이다. 반면 A는 가장 일반적이기에 학생들을 전혀 놀랍게 하지 않는다. 아주 당연하게 받아들일 것이다. B는 학생들에게 약간의 놀라움을 줄 수도 있다. 이 중 정보량이 큰 순서로 나열하면, C > B > A이다. 


또 다른 예를 들어보자. 지난해 2018 러시아 월드컵에서 우리나라와 독일이 맞붙었다. 가능한 결과는 세가지였다. 한국 승, 독일 승, 무승부. 이 중에서 어떤 결과가 가장 사람들을 놀라게 할까? 바로 한국 승이다. 그 다음은 아마도 무승부일 것이다. 독일이 이기는 결과는 별로 사람들에게 놀라움을 선사하지 않는다. 우리나라가 독일을 이길 확률이 매우 적기 때문에 우리나라가 독일을 이긴 것은 정보량이 큰 정보라고 말할 수 있다. 우리나라의 승리는 실제로 전세계를 놀랍게 했다. 반면 독일이 우리나라를 이기는 것은 정보량이 작은 정보라고 말할 수 있다. 


그러면 놀람의 정도를 반영하는 '정보의 양'을 수치화할 수 있을까? 놀랍게도 정보량은 다음과 같이 계산될 수 있다. 누가 만들었는지 참 신박하다. 참고로 R. V. Hartley라는 사람이 처음 제안했다. 


...(공식1: 정보량)


여기서 p(x_j)는 x_j가 발생할 확률이다. 확률이므로 0이상 1이하의 어떤 실수이다. 로그의 밑 a는 어떤 정보를 측정하느냐에 따라 임의로 결정된다. 주로 2를 많이 사용한다. 또한 밑이 2일 때 정보량의 단위는 비트(bit)고, 밑이 e일 때 정보량의 단위는 nat(natural unit)이다. 


왜 이런 공식을 사용할까? 이 공식이 정보량을 나타낼 수 있을까? 이해를 돕기 위해 그래프를 그려보았다. 


그림1. 정보량 그래프(우측)


오른쪽 그래프를 보면, P(x)가 0에 가까울 수록 정보량 I(x_j)은 무한대로 커지고, P(x)가 1에 가까울 수록 정보량은 0에 가까워짐을 확인할 수 있다. 정보량은 음수가 될 수 없다. 따라서, 위 공식1은 발생 확률이 적은 사건은 큰 정보량을 갖고, 발생 확률이 큰 사건은 작은 정보량을 갖는다는 뜻을 반영한다. 


미국 통계분석사이트인 '파이브서티에이트'는 2018 러시아 월드컵에서 한국이 독일에게 승리할 확률을 5%로 예측했고, 독일이 승리할 확률은 81%로, 비길 확률은 14%로 예측했다.

(출처: http://news.chosun.com/site/data/html_dir/2018/06/23/2018062300599.html


이를 기반으로 각 사건의 정보량을 계산해보자. 독일이 한국을 이기는 경우 정보량은 다음과 같다:



그리고 한국이 이기는 경우 정보량은 다음과 같다:



마지막으로 두 팀이 비기는 경우 정보량은 다음과 같다: 



계산한 바와 같이 한국이 이기는 경우가 독일이 이기는 경우와 비기는 경우보다 훨씬 더 정보량이 많다. 



즉, 매우 놀라운 사건이라는 것이다. 두 팀이 비기는 것도 독일이 한국을 이기는 것보다 정보량이 훨씬 크다. 사실 두 팀이 비기는 것도 놀라운 결과였다는 것이다. 



▶ 엔트로피란?


일반적으로 특정 결과와 관련된 정보량보다 가능한 모든 결과들의 평균 정보량에 더 큰 관심을 갖는다. 엔트로피가 바로 정보량의 기댓값(평균)을 의미한다. 엔트로피는 다음과 같이 계산한다. 


...(공식2: 엔트로피)


여기서 는 기댓값을 구하는 함수다. 엔트로피는 평균 놀람의 정도 또는 평균 불확실성으로 생각할 수 있다. 모든 결과가 비슷한 확률로 일어날 때 엔트로피가 가장 크다.  

한국과 독일이 축구경기를 했을 때 엔트로피를 계산해보자. 즉, 평균 정보량은 다음과 같이 계산된다.


 

비교를 위해 스웨덴 vs 멕시코 전의 엔트로피도 계산하려고 한다. 미국 통계분석사이트인 '파이브서티에이트'는 2018 러시아 월드컵에서 스웨덴이 멕시코에게 이길 확률을 36%, 멕시코가 이길 확률을 34%, 비길 확률을 30%로 잡았다. 매우 박빙의 승부로 예측한 것이다. 그러면 스웨덴과 멕시코 경기의 엔트로피는 얼마일까? 


 

1.5809비트로 한국과 독일전의 0.8595비트보다 약 두 배가량 크다. 따라서 스웨덴 vs 멕시코 전이 한국 vs 독일 전보다 정보량이 더 큰 경기였다고 볼 수 있다. 결과가 뻔히 예상되는 사건일 수록 엔트로피가 작고, 결과 예측이 힘들수록 엔트로피가 크다. 




<참고자료>
[1] Rodger E. Ziemer, Willian H. Tranter, "Principles of communications: systems, modulation, and noise", sixth edition, WILEY

[5] http://blog.naver.com/PostView.nhn?blogId=gyrbsdl18&logNo=221013188633, 네이버 블로그 글, 개인적으로 가장 유용하게 읽었다. 

+ Recent posts

티스토리 툴바