pizzaplanet

Image에서의 Feature Extraction 본문

Univ./Pattern Recognition lecture

Image에서의 Feature Extraction

scio 2018. 5. 20. 13:32

Feature Extraction


피쳐는 예측모델에 들어갈 데이터이다. 예측을 위해서 데이터를 입력할 때 Raw Data가 아닌 Feature를 입력해야 한다.

쉽게 예를 들면 게임 내에서 무언가를 예측한다고 하자.

Raw Data는 각 유저의 접속시간 종료시간이 있을때 이 두개를 이용(종료시간-접속시간)하여 플레이 시간 예측모델에 Feature로 입력하는 것.

이 외에도 각 유저의 총 log 갯수 등을 Feature로 이용할 수도 있다.

또 다른 예로 들자면 Raw Data로 각 생선의 이미지를 준다면 Feature는 이미지 속 생선의 색, 가로길이 등이 될 수 있다.



클래스 내 변동성: 같은 클래스에 속한 오브젝트간의 차이를 일컫는다.



클래스 간 변동성 - 서로 다른 클래스의 오브젝트 차이를 일컫는다.



Statistical Features


First-order Statistics (Histogram)

통계적으로 뽑을 수 있는 Feautre들이다.

- 평균( 또는 중앙값)

- 표준편차

- 최대, 최소간의 차이

- 왜도

- 첨도


Skewness(비대칭도, 왜도)

확률 분포에서 평균에 대한 비대칭 측정. 실수 값 확률 변수의 확률 분포 비대칭성을 나타내는 지표이다. 말이 참 어렵다. 

쉽게 말하면 분포가 어디로 편향되어 있나 뜻이다. 그림을 통해 보자.

Cs=3*(Mean-Median)/Mode

Positive Skew(정적편포): Cs > 0 / 그림과 같이 왼쪽으로 치우치고 오른쪽으로 긴 꼬리를 가지는 분포를 이룬다. 자료가 좌측에 더 많이 분포.

Symmetrical Distribution(정규분포): Cs == 0 / Mean, Median, Mode 값이 일치하면 정규분포를 이룬다.

Negative Skew(부적편포): Cs < 0 / 오른쪽으로 치우치고 왼쪽으로 긴 꼬리를 가지는 분포를 이룬다. 자료가 우측에 더 많이 분포.


kurtosis(첨도)

확률분포의 뾰족한 정도를 나타내는 척도. 분포가 얼마나 퍼져있는지 알 수 있다.



Geometric Features




Compactness(Roundness)

우리가 판독해야 할 Area에 대해  얼마나 조밀하게 Perimeter을 그었는지를 뜻한다.

원의 경우 C=1(minimum)이 되며 모양이 복잡해질수록 C는 증가한다.


Curvature

기울기 변화율을 나타낸다.

연속적인 경우: 미분을 써서 구해주자.


이산인 경우:

- 한 포인트를 찍고 간격을 설정한다. (예, 3픽셀 간격)

- 한 포인트에서 다음 3픽셀이후 포인트 사이의 곡률을 구한다.

- 모든 곡률값의 합을 구한다.

- 더 복잡한 모양일수록 c(curvature)는 증가한다.



Diameter(Major-Minor axis)

- Major axis(Diameter): Perimeter을 연결하는 최장거리

- Minor axis: Major axis의 수직방향 중 최장거리

- Eccentricity(이심율): 타원의 찌그러진 정도를 뜻한다.


Bounding Box

- Extent


- Solidity



Texture Features


텍스쳐를 설명해보라 하면 설명하기가 쉽지 않은데 아래와 같이 정의를 해볼 수 있다.

- 일정한 변화율을 가지고 반복되는 것
- 이미지 강도의 공간적 배열에 대한 설명

- 텍스쳐공간을 나타내는 텍셀의 배열로 표현(텍셀은 텍스쳐의 기본단위)


Aspects of Texture


Edge

- 엣지란 변화가 일어나는 곳

- 변화는 미분으로 측정 가능하다.

- 1차 미분은 최대 크기를 가짐


- 2차 미분계수는 0


Image Gradient

- 이미지의 Gradient는 미분을 통해서 구한다.


- 기울기 방향은 다음 식에 의해 주어진다.


- Edge strength는 gradient magnitude로 나타낸다.


Edge Detection

엣지를 디텍션하는 방법이 여러가지(Sobel, Prewitt etc...)가 있겠지만 Canny Edge Detector가 성능이 좋아 CED를 쓰고 있다.



GLCM(Gray Level Co-occurrence Matrix)

왼쪽 매트릭스에 0~2의 수. 즉, 3(N)가지 수가 있다. 이를 이용하여 3 x 3(N x N) 매트릭스를 만들며 각 셀에 값을 매겨주는데 이 방법을 알아보자.

1. x픽셀의 값에서 바로 오른쪽 y픽셀의 값이 연결되는 상황을 카운트

0 -> 0= 4 (좌측매트릭스의 0,0=0, 0,1=0 이므로 1개가 카운트가 되고 이와 같은 상황을 모두 찾는다)

0 -> 1= 4

0 -> 2 = 1

1 -> 1 = 3

1 -> 2 = 1

2 -> 2 = 1


2. 각 카운트 된 값을 N x N 매트릭스의 픽셀에 대입

값은 (x,y), (y,x)에 대입하면 된다. 0 -> 2 = 1을 예로 들면 (0,2)와 (2,0)에 1을 대입하면 되는 것.

이렇게 N x N의 매트릭스를 완성하면 우측 매트릭스와 같이 결과가 나오며 앞에 1/20은 임의로 넣은 값이다.

만약 N이 255라면 NumLevel을 9로 설정하여 9 x 9 매트릭스가 도출되도록 한다.

Numlevel 1 = 0~28

Numlevel 2  = 29 ~ 57

.

.

.

Numlevel 9 = 227 ~ 255 인 셈.


GLCM의 Features

- Contrast(대비)


- Energy(엘리먼트 제곱의 합)

- Homogeneity(GLCM 대각선에 대한 GLCM 엘리먼트의 근접성)

- Entropy(Randomness of gray level intensities)



Gabor Filters






Local Binary Pattern(LBP)

픽셀의 그레이 레벨과 해당 지역의 이웃을 비교한다. 그림을 통해 빠른 이해를 해보자.



좌측 매트릭스의 센터이는 6이 있고 그 주변 픽셀들이 이웃 픽셀이 된다. 센터값보다 이웃픽셀의 값이 크면 1을 매겨주면 중앙 매트릭스를 구할 수 있다. 그리고 우측매트릭스처럼 Weights를 부여하여 LBP값을 도출할 수 있다.


- Multiscale LBP

LBP 스케일을 다양하게 할 수 있는데 이웃 픽셀을 늘리면 된다. 지금은 이웃픽셀이 8개 였지만 16개로 늘리면 스케일이 증가하게 된다.



- LBP: Uniform Patterns

White dot이 값이 채워진 것(1)이라 보면 되고 각 값에 대해 위와 같은 패턴을 같는다.



- LBP: Rotation Invariance

위치만 다를 뿐 모두 같은 패턴이다. 그리고 이러한 성질을 이용하여 값일 shift하여 최소값을 취한다.


위와 같은 경우에는 000111000, 01110000 등이 올 수 있으며 이 중 00000111을 취하는 것.


Comments