인공지능관련/이미지 프러세싱

이미지 스무딩1

학위논문통계 2016. 11. 30. 13:19

 

 

지난번에 작업한 데이터를 다시 한번 보죠

 

  

 

 

지금 하려고 하는 것은 주식시장에 나오는 주가변화의 며칠 이동평균선이라는 것을 하려고 합니다. 사실 이동평균(ma: moving average)선이라는 용어는 이론적으로 안 맞는 용어이고, 수식모양으로 보면 자기회귀(AR: Auto regressive)가 더 맞는 표현 같은데 하여간 딱 맞는 표현은 없는 것 같습니다.

 

예들 들어 2일 평균(p=2)라고 하고 주가가 y<-(100, 150, 200, 300) 이라 하면 2일 이동평균은 w는

 

w[1]<-100*1/2+150*1/2

w[2]<-150*1/2+200*1/2

w[3]<-200*1/2+300*1/2

 

이렇게 됩니다. 3일 평균, 즉 p=3이면 1/2을 곱하는 것이 아니라 1/3을 곱하면 됩니다.

 

 

위 데이터를 5일 평균(p=5), 20일 평균(p=20), 100일 평균(p=100)을 구해 그래프를 그려 보겠습니다.

 

p=5;

 

  

 

p=20;

 

 

 

   

p=100;

 

  

 

위와 같이 p를 크게 할수록 높은 주파수가 점점 더 많이 제거하고 낮은 주파수 함수만 남게 됩니다. 이런 걸 공학에서 Lowpass filtering 이라 합니다. 낮은 주파수만 내보낸다는 것이죠. 

 

 

 

위 작업을 한 S와 R 코드를 한번 보죠. S에 ar이라는 함수가 이미 있는데 이건 통계학의 시계열 분석시 AR 모형 추정하는 것이라서 여기서 쓸 수 없습니다. 제가 제가 직접 짰습니다. x는 원 데이터, p는 평균할 기간을 이야기 합니다.

 

 

myar<-function(x, p){

len<-length(x);

coef<-rep(1/p, p);

y<-rep(NA, len-p);

for (i in 1:(len-p)){

y[i]<-x[i:(i+(p-1))]%*%coef;

}

z<-1:(1000-p);

plot(z, y, type="l");

}

 

 

 

먼저 제 위 그래프의 y 데이터를 구한 다음 source("myar.txt")하고 그 다음에 myar(y, 5), myar(y, 20), myar(y, 100) 하면 각각 위의 그래프가 그려집니다.

 

 

여기서 %*%는 S와 R에서 행렬 곱하기인데 벡타인 경우 내적(inner product)이 됩니다. 이와 같이 시계열 데이터나 아니면 이미지 같은 2차원 공간 데이터를 각 시간별, 픽셀별로 이 내적을 계속 적용시키면 이게 convolution operator라고 하고 인공지능의 CNN의 C가 이 convolution의 약자입니다.

 

 

 

2차원 데이터를 위의 방식을 적용하면 어떻게 될까요. p=3일 경우 각 픽셀마다 그 주변 3*3 이미지 값에 3*3크기의 1/9 값을 곱하기 하면 됩니다. p=5 일 경우 픽셀 주변의 5*5 이미지 값에 5*5크기의 1/25 곱하기 하면 됩니다. 이렇게 적용하면 우리가 흔히 이야기하는 모자이크가 됩니다. p 값이 크면 클수록 사물을 알아보기 힘들고 이미지가 희미해집니다. 즉 contrast가 매우 낮은 이미지가 됩니다. contrast가 낮다는 것은 청바지 색 바랜것 처럼 이미지 값들의 변화가 없는 것을 말합니다.

 

다음에는 이 작업을 구체적으로 설명하겠습니다.

'인공지능관련 > 이미지 프러세싱' 카테고리의 다른 글

윤곽선 드러내기.  (0) 2016.12.14
윤곽선 드러내기1  (0) 2016.12.07
스무딩2  (0) 2016.12.01
화질 개선1  (0) 2016.11.29
이미지프로세싱1  (0) 2016.11.21