int 형 데이터 자리수 구하기

알고리즘 2014. 10. 22. 06:00


1
2
3
4
5
6
7
8
9
10
11
12
// int형 데이터 자리수 구하기
// 10으로 계속 나누어 자리수를 구한다.
 
int len = num;
int count = 0;
do {
    num = int(num/10);
    count++;    
}while(num > 0)
 
// 출력
printf("자리수 = %d\n", count);


'알고리즘' 카테고리의 다른 글

c언어 시계방향으로 최소값 구하기  (0) 2014.10.22
문자열 비교(strcmp)  (0) 2014.10.22
c언어 char int변환  (0) 2014.10.22
C언어 최대공약수 최소공배수 구하기  (0) 2014.10.22
동적계획법  (0) 2014.01.28

C언어 최대공약수 최소공배수 구하기

알고리즘 2014. 10. 22. 05:58


1
2
3
4
5
6
7
8
9
10
11
12
13
// 최대 공약수
int gcd(int a, int b)
{
    if(b == 0)
      return a;
    gcd(b, a%b);       
}
 
// 최소 공배수
int lcm(int a, int b)
{
   return a * b / gcd(a, b);    
}


'알고리즘' 카테고리의 다른 글

c언어 시계방향으로 최소값 구하기  (0) 2014.10.22
문자열 비교(strcmp)  (0) 2014.10.22
c언어 char int변환  (0) 2014.10.22
int 형 데이터 자리수 구하기  (0) 2014.10.22
동적계획법  (0) 2014.01.28

카테고리 없음 2014. 10. 20. 07:52

전화 벨소리가 방 안에 요란하게 울립니다.

그녀입니다...

그녀에게 전화를 걸려다

한참의 망설임 끝에 그냥 내려놓은 내게,

그녀는 이렇게 쉽게 전화를 하네요...

오늘은 그와 좀더 친해졌다며

기쁜듯 말하는 그녀의 이야기를 들으며

난 이렇게 또 내 감정을 숨깁니다...

그녀는 그를 보고

난 그런 그녀를 바라봅니다.

내 마음도 모르는 바보 같은 그녀를..

웃는 모습이 참 예쁜 그녀를..

내가 사랑하는 그녀를..

많이 사랑해 주세요..

내가 주지 못하는 사랑까지...


윤도현의 러브레터 


영상처리 색공간 변환

컴퓨터비전/영상처리 2014. 10. 20. 07:26

지난 포스트 영상처리 색변환 에 이어 색 모델에 관해 정리한다.

사람의 색 인지방법 등 기초적인 색 모델에 관심있으면 지난 포스트를 참조 바란다.


RGB와 CMY 색공간

 색의 3원소라는 말이 있다. 이 용어가 의미하는 것은 세가지의 색의 기본 원소만 있으면

이들을 조합하여 어떠한 색이든(모든색)을 만들수 있는 것을 의미한다. 이 용어가 가리키는

중요한 점은 사람이 인식할 수 있는 색은 3차원 공간에서 표현된다는 것이다.


       [그림 1] RGB 색공간 모형(3차원)


컴퓨터와 디지털 영상 처리에서 색상 표현에 가장 널리 사용되는 RGB 색 공간은 빨간색과 초록색,

파란색 총 3가지 색이 기본 축으로 이 세가지 색이 빛의 3원색이다.

빛의 3원색에서 각 색을 더하면 더 밝은 색이 나온다. 다른 색의 조명을 같은 곳에 비추면 더 밝은

빛이 나는것과 동일한 원리다. 실제 색의 3원색 은 하늘색(Cyan), 자홍색(Magenta), 노란색(Yellow)로

여러 물감을 섞으면 검정색이 되는것과 같은 원리다. RGB 색공간 모형은 [그림 1]과 같이 표현 할

수 있다.


색의 3원색에 해당하는 색공간을 CMY 색공간 이라고 한다. 빛을 이용한 장치(모니터 등)은 RGB색 

공간을 사용하는 반명, 색깔을 이용하는 장치(프린터 등)은 CMY 색공간을 사용한다. 이 세가지 색을

조합하면 어떤 원하는 색이든 출력이 가능하다.


CMY 색상은 RGB색상의 보색에 해당하므로([그림 1] 참조) 색상 사이 변환은 

흰색에서 R, G, B 각 채널 값을 빼면 된다.



프린터로 출력하는 경우 검정색 글씨를 많이 사용하기 때문에 검정색 잉크를 별도로 추가한

CMYK 색 공간을 쓰는 경우가 많다. K 는 검정색을 의미하며 K = min(C, Y, K)로 정의한다.

K는 C, Y, K 각 채널 중 최소값으로 정의한다. 이렇게 하면 잉크를 절약할수 있는 장점이 있다.

프린터 출력할때 CMY 채널이 공통으로 가지는 양은 검정색 잉크를 K만큼 사용, 

각 채널별로 초과하는 부분만 C, Y, K 각각의 채널에 할당된 잉크를 사용하면 된다.



1수식을 토대로 2수을 계산해 최종 C, M, Y 를 계산한다.


YIQ, YUV, YCbCr 색공간

앞의 색공간은 세 종류의 색을 이용한 축이지만, 지금 소개할 색상은 색상의 특성을 이용하여 

축을 구성한다. 세 원소에 동일하게 포함된 Y 채널은 색상의 밝고 어두움을 나타내는 성분을

의미한다. 그리고 나머지 두 축을 이용해 색상 정보를 표현한다. 이 기법은 텔레비전 신호나

비디오 데이터를 효율적으로 전송하기 위해 개발되었다. 방송국에서 흑백 TV, 컬러 TV에 신호

를 전송할 때, 흑백 TV에서는 밝기 신호(Y성분)만 사용하고, 컬러 TV에서는 나머지 정보를 모두

사용하면 되므로 효율적인 신호 전달이 가능했다.


YUV색 공간은 컬러 비디오 표준에서 사용하는 색 표현 기법으로, Y축을 밝기 성분으로 하고

U, V 두축을 이용하여 색상(chrominance)를 표현한다. U축은 파란색에서 밝기 성분을 뺀

값이고, V축은 빨간색에서 밝기 성분을 뺀 값이다. RGB 색 공간에서 YUV 색 공간으로 변환

하는 것은 다음과 같이 RGB 각 채널에 가중치를 적용하여 더하는 방식으로 계산한다.


RGB 색공간 YUV 색공간

YUV 색공간  RGB 색공간


YIQ 색 공간은 컬러 TV의 표준에서 사용하는 모델이다. YUV와 같은 원리를 사용하며

RGB 색 공간에서 Y(밝기)성분을 구하는 방법은 같고, I, Q값을 구하는 방법은 다르다.


RGB 색공간  YIQ 색공간

YIQ 색공간  RGB 색공간


YCbCr 색 공간은 디지털 텔레비전 시스템에서 사용하는 색 공간이다. 이 색 공간은

YPbPr이라는 아날로그 신호의 색 공간을 디지털화 한 것이다. 


RGB 색공간 → YPbPr 색공간

여기서 RGB 채널 값이 아날로그 신호로서 0에서 1사이의 값이라고 하는 YPbPr 색 공간으로

변환한 결과값은 다음 범위를 갖는다.



YCbCr 색 공간은 YPbPr 색 공간의 디지털 버전임으로, RGB채널이 0~255 값을 가지므로

YCbCr 변환의 결과값도 0~255 값을 가져야하므로 다음과 같이 변환한다.


이 결과 YCbCr은 다음과 같은 범위를 갖는다.



YCbCr 색공간  RGB 색공간




HSV, HSL, HSI 색 공간

HSV 색 공간은 [그림 2] 와 같이 육각뿔의 형태로 표현 할 수 있다. 육각뿔의 높이는 밝기 값인

V이고, 육각뿔 축으로부터 거리가 색의 진한 정도(채도)를 나타내는 S(Saturation)값이다.

S값이 0이면 원뿔의 축에 해당하여 아무런 색채값이 없는 회색이 된다.

V값이 0이면 육각뿔의 아래 꼭짓점에 해당하는 검은색이 된다. 반면 S값이 증가할 수록

점점 색이 진해져 원색에 가까워진다.

H(Hue)값은 빨주노초파남보와 같은 색상을 표현하는 값으로, 육각뿔에서의 각도를 나타내며

0도가 빨간색, 60도가 노란색, 120도가 초록색, 180도가 하늘색, 240도가 파란색, 300도가 

자홍색에 해당한다.


   

                      [그림 2] HSV 색 공간 모델


HSL 색 공간은 [그림 3] 과 같이 나타낼수 있는데, 이중의 뿔 구조로 이루어져있다.

색상 값 H와 채도 값 S는 HSV 색 공간과 거의 같지만, 밝기를 나타내는 축으로 검은색 꼭지점의

반대 방향에 해당하는 꼭지점이 하나 더 있다. 


           

                  [그림 3] HSL 색 공간 모델


RGB에서 HSV와 HSL 색 공간으로 변환하는 방법을 정리하면

두 색 공간이 공통으로 갖는 색상 H는 다음과 같다.




H는 0도에서 360도 사이의 각도 값을 갖는다(음수라면 360을 더하면 된다)

HSV 색 공간의  밝기 V와 채도 S는 다음과 같이 계산할 수 있다.



HSL 색 공간의 밝기 L과 채도 S값은 다음과 같이 계산할 수 있다.



HSI 색 공간의 밝기 I와 채도 S값은 다음과 같이 계산할 수 있다.



'컴퓨터비전/영상처리' 카테고리의 다른 글

Tracking Learning and Detection(TLD)  (0) 2014.10.30
random tree(임의 숲)  (0) 2014.10.25
특징 기술자, 관심 기술자  (0) 2014.10.18
모라벡 알고리즘  (0) 2014.10.13
지역 특징(Local Feature)을 찾는법  (0) 2014.10.13

특징 기술자, 관심 기술자

컴퓨터비전/영상처리 2014. 10. 18. 13:36

특징 기술자, 관심 기술자란 무엇일까?

먼저 특징 기술자에 설명하면 매칭이나 인식과 같은 단계에서 같은 그림의 여부를 판단하기 

위해 사용하는 기술자를 말한다. 이때, 몇가지 요구 조건을 만족해야 한다.


첫째, 기술자의 분별력(discriminating power)이 높아야 한다. 

                                         [그림 1] 기술자의 기준이란


[그림 1]을 보면 a와 b에서 구한 기술자는 서로 달라야 한다. 그래야 다른 영상과 매칭할 때

자신에 해당하는 점과 대응할 것이다.


둘째, 다양한 변환에 불변(invariant)해야 한다.

                                         [그림 2] 다양한 변환


[그림 2]의 경우 원래 영상을 기준으로 회전, 축소, 뒤틀림 등 여러가지 변환이 이루어진 

모습을 볼 수 있다. 만약에 기술자를 면적으로 사용한다고 했을때, 회전 했을 경우  면적은

원래 영상과 같다. 하지만 크기를 축소하는 변환이 일어나면 면적이 변한다. 따라서 면적은 

크기에 불변이 아니다.(공변이다 - convariant) 이제 주축을 생각하면 영역 a는 수직 방향으로 

길기 때문에 주축은 대략 수직 방향이 된다. 주축은 축소가 일어나도 변하지 않는다. 


마지막으로, 특징 벡터의 크기(차원)이다. 매칭은 특징 벡터(기술자) 간의 거리를 계산하여

판단하므로 차원이 높으면 계산 시간이 비례하여 늘어난다. 보통 한 영상에서 발생하는 특징의

개수가 수천에 이르기 때문에, 거리 계산에 걸리는 시간을 단축하는 일은 매우 중요하다. 

계산 효율 측면에서 보면 차원이 낮은 기술자 일수록 좋다.


이제 관심 기술자에 대해 살펴보자.

관심 기술자란 관심점을 위한 기술자로 관심점으로 선정된 화소에 대한 

올바른 매칭을 위한 기술자를 말한다.


   

            [그림 3] 다양한 변환속의 관심점 기술자


관심점 기술자를 추출하려면 (y,x)를 중심으로 윈도우를 씌우고 윈도우 내부를 살펴봐야 하는데,

이때 몇 가지 고려할 점이 발생한다. 윈도우의 모양과 크기, 그리고 어떤 것을 살펴봐야 할지를

정해야 한다. [그림 3]을 보면 a는 원래 영상이고, b는 카메라 위치를 이동해 찍은 사진이다.

c는 이동해 찍은 사진을 회전한 사진이다. a와 b라고 표시한 두 곳에서 관심점이 검출되었다고 

가정하면, 오른쪽 영상들은 왼쪽 영상에서 검출된 관심점에 21×21 크기의 윈도우를 씌워서,

그 영역을 확대하여 보여준것이다. 단순히 카메라의 위치 이동만 발생했을 경우 윈도우 영역이

비슷하여 어떤 기술자를 사용하든 큰 어려움 없이 매칭에 성공할 것으로 기대할 것이다.

하지만 회전과 크기 변환이 일어난 경우 크기와 회전 변환에 불변한 기술자를 고안해야 성공적인

매칭이 가능할 것이다. 영상의 스케일에 따라 윈도우 크기를 줄이고, 회전된 윈도우를 사용해야 한다.

또한 만약 햇빛이 강해져 조명이 바뀔 수도 있을 것이다. 이러한 기하 변환과 광도변환에도 불구하고 

비슷한 기술자를 생성해 주는 알고리즘을 고안해야 한다.


참조 : 컴퓨터비전(오일석)


'컴퓨터비전/영상처리' 카테고리의 다른 글

random tree(임의 숲)  (0) 2014.10.25
영상처리 색공간 변환  (0) 2014.10.20
모라벡 알고리즘  (0) 2014.10.13
지역 특징(Local Feature)을 찾는법  (0) 2014.10.13
기하 연산  (0) 2014.10.10

분산과 표준편차 구하기

수학 2014. 10. 17. 23:52

분산이란 변수의 흩어진 정도를 계산하는 지표이다.


분산이란?

데이터 혹은 원소 들이 얼마나 흩어져있느지를 나타나는 것이다. 

분산이 크다는 것은 데이터들이 많이 퍼져있다는 것을 의미하며, 분산이 작다는 것은 데이터들이 평균에 근접해

있다는 것을 의미한다.


표준편차란?

분산의 음이 아닌 제곱근을 의미한다.(분산에 루트 씌운것)


분산을 구하는 방법은 다음과 같다.

편차는 평균과의 차이를 의미한다.


만약 다음과 같은 데이터 집합이 있다고 가정할때,

85

87

76

69 

92 

74 

데이터 집합의 평균을 구하면


가 나온다.


편차(평균과의 차이)를 구하게 되면

4.5

6.5

-4.5

-11.5

11.5

-6.5 

이다.

따라서, 편차의 제곱을 하면

20.25

42.25

-20.25

132.25

132.25

42.25


이 나오고, 분산을 구하면 

이다. 따라서 분산의 양의 제곱근이 표준편차 이므로 표준편차는 

이다.


'수학' 카테고리의 다른 글

내리막 경사법(gradient descent method)  (0) 2014.11.03
베이즈 정리(베이지언 확률)  (0) 2014.10.24
고유값, 고유벡터  (0) 2014.10.14
Newton_Raphson Method  (0) 2014.09.03
다각형 나머지 한점 구하기(다각형의 넓이)  (1) 2014.03.02

블로그 이미지 css

카테고리 없음 2014. 10. 14. 18:19





고유값, 고유벡터

수학 2014. 10. 14. 02:53

고유값(eigenvalue)과 고유벡터(eigenvector)의 기본 개념을 정리한다.

 

행렬의 고유벡터 구하기


행렬의 고유값 구하기






'수학' 카테고리의 다른 글

베이즈 정리(베이지언 확률)  (0) 2014.10.24
분산과 표준편차 구하기  (0) 2014.10.17
Newton_Raphson Method  (0) 2014.09.03
다각형 나머지 한점 구하기(다각형의 넓이)  (1) 2014.03.02
사인법칙  (0) 2014.02.26

모라벡 알고리즘

컴퓨터비전/영상처리 2014. 10. 13. 23:51

모라벡 알고리즘

모라벡 알고리즘은 다음 식과 같다.


                         [식 1] 모라벡 알고리즘


[식1]은 제곱차의 합(SSD-Sum of Squared Difference)를 사용해 화소에 특징점의 여부를 판별하는 식이다.

f(..)는 입력 영상이고, w(..)는 마스크이다. w의 크기는 비교할 범위를 나타내며, 박스 내의 화소에 대해서만 

비교 연산을 하면 된다.


         

         

                             [그림 1] 12x12 이미지


[그림 1]의 이미지는 12×12크기의 이미지 속 삼각형을 나타내는 이미지이다.

현재 점은 b(5, 3)의 위치에 있다고 가정하고 제곱차 합을 계산해 보겠다. 마스크의 크기는 3x3이다.



a, b, c 세 지점에서 S(u,v)맵을 구해보면 다음과 같다.


     

                    [그림 2] a, b, c위치에 따른 S(u,v)맵


[그림 2] 를 보면 세 지점에서 S(u,v)맵이 각각 다르게 나타냄을 확인할 수 있다.

화소 c의 경우 변화가 전혀 없으며 아홉 개의 요소 모두 0을 갖는다. 

화소 b의 경우 에지는 세로 방향인데, 그 방향으로는 낮은 값을 갖는 반면, 에지와 수직인 

가로 방향으로는 큰 값을 갖는다. 물체의 코너에 해당하는 a는 모든 방향에서 모두 큰 값을 갖는것을 확인할 수 있다.

즉, 제곱차의 합은 어떤 점이 다른 곳과 얼마나 두드러지게 다른지 측정해 주는 역할을 한다.

물체의 코너는 두드러지게 다른 곳이므로 S를 코너일 가능성 정보로 해석할 수 있다.


            

                  [그림 3] 원래 영상


       

[그림 4] 9×9 마스크로 측정한 S맵(밝을수록 큰값)


[그림 3]을 보면 a, b, c의 화소에 따라 S맵을 출력한 결과 [그림 4]를 볼 수 있다.

[그림 4]를 보면 화소 a의 경우 사슴의 눈으로, 모든 방향에서 명암의 변화가 심하다. 따라서 S맵의

모든 화소가 큰 값을 갖는다. b는 대각선 방향의 에지에 위치하는데, 에지 방향으로는 낮은 값을 갖지만

에지에 수직한 방향으로는 큰  값을 가진다. 변화가 거의 없는 c는 아주 낮은 값을 갖는다.


모라벡은 3×3 크기의 박스형 마스크를 사용하였으며, 동서남북 네 방향으로 한 화소만큼

이동시켜 얻은 네 개의 값 S(0, 1), S(0, -1), S(1, 0), S(-1, 0)만 사용하였다. 모라벡은 어떤

점이 코너라면 네 방향 모두 변화가 커야 한다고 보고, 네 값의 최소값을 지역 특징일 가능성 값

으로 간주하였다.

            


모라벡 알고리즘은 한 화소에대해 네 방향만 보고 특징점 여부를 계산하고, 

잡음에 대한 대처 방안이 없다는 단점이 존재한다.



참조 : 컴퓨터비전(오일석)

'컴퓨터비전/영상처리' 카테고리의 다른 글

영상처리 색공간 변환  (0) 2014.10.20
특징 기술자, 관심 기술자  (0) 2014.10.18
지역 특징(Local Feature)을 찾는법  (0) 2014.10.13
기하 연산  (0) 2014.10.10
bilateral filter  (0) 2014.10.10

지역 특징(Local Feature)을 찾는법

컴퓨터비전/영상처리 2014. 10. 13. 22:38

대응점을 찾기 위해 무엇을 특징점으로 쓸 것인지 결정하는 문제를 위해 사람들은 여러가지 고민을 했다. 

초기에는 에지의 경우 물체의 경계에 위치하므로 특징점으로 적합하다고 생각하고 접근했다. 지만 

에지는 그 자체로 매칭을 위해 어떤 구실을 하지 못했다.  에지가 가진 정보는 에지 강도와 방향에 불과해

 매칭에 부적합했던 것이다. 따라서 독립적으로 매칭에 참여할 정도로  풍부한 정보를 지닌 특징점을 

검출하는 새로운 접근 방법이 필요했다. 이러한 아이디어는 1970년대부터 나타나기 시작했다. 

이 시기의 사람들은 에지화소를 연결해서 얻은 에지 토막에 의지하였다. 특징점을 검출하는 기본 

원리는 에지 토막에서 곡률(curvature)이 큰 지점을 찾고 그곳을 코너(corner)특징으로 취하는 것이다.

이때 에지 토막은 디지털 공간에서 정의된 곡선이므로 곡률을 계산하는데 어려움이 발생했다.

또한 작은 물체와 큰 물체 사이의 스케일 변화를 적절히 다루어야 하는 문제도 발생한다. 

에지 토막을 이용하는 연구 결과는 1980년대 왕성하게발표되었다가 1990년대에 소강 국면에 

접어들고, 2000년대에는 드물게 나타난다.


이후 지역특징(local feature)의 접근 방법이 떠오르며 에지에 의존하는 대신 명암 영상에서

직접 검출하는 방법으로 접근했다. 다른 곳과 두드러지게 다르고 풍부한 정보를 가진 위치를 찾는

정교한 연산자를 설계하는 일이 핵심이었다. 


지역 특징은 종류에 따라 조금씩 다르지만 대략 위치, 스케일, 방향, 특징벡터 정보로 구성된다.

검출 단계는 위치와 스케일, 기술 단계는 방향과 특징 벡터를 알아낸다. 이때 검출은 여러변환에

공변(covariant)이어야 한다. 물체가 이동 또는 회전하거나 스케일이 달라지면 그에 따라 

위치, 스케일, 방향 정보도 변하기 때문이다. 하지만 물체 입장에서 보면 같은곳이므로 불변이다.

어떤 점에서 특징이 검출되었다면, 변환이 일어나도 같은 점에서 같은 특징이 검출되어야 하기 때문이다.

또한 특징 벡터를 추출하는 기술단계는 불변(invariant)이어야 한다. 매칭 알고리즘은 특징 벡터를 비교하여

비슷한 경우 대응점으로 판단하기 때문이다. 


                 

                                                 [그림 1] 그림간의 대응점 찾기


[그림 1]을 보면 두 점간의 대응점을 보면 배의 꽁무니 주변 영역의 명암을 확대하여 보여주는데,

각기 다른 시점에서 찍은 영상이기 때문에 배라는 물체의 명암이 다를수밖에 없다. 하지만 본질적인

명암 구조는 같으므로 스케일, 회전, 조명 변화에 무관하게 같은 값을 갖는 특징 벡터를 추출하는 

알고리즘을 구상할수 있다. 


수백만 개의 점으로 구성된 영상에서, 훌륭한 곳을 어떻게 찾을수 있을까?


                  

                                                 [그림 2] 특징점 간 비교


[그림 2]를 보면 a, b, c로 표시된 세곳이 있다. 왼쪽 영상에서의 a, b, c 위치를 오른쪽 영상에서의

어느 위치인지 찾는것이 문제로 주어졌을때, 어떤 것이 가장 쉽고 어떤것이 가장 어려울까?

c가 가장 어렵고, a가 가장 쉬울 것이다. 왜 그런 결과가 나타날까?

a는 주변과 비교했을때 여러 방향으로 밝기가 변하지만, C는 모든 방향으로 밝기가 비슷하여 찾기 

어렵기 때문이다. b는 이제 방향으로 변화가 적고 에지에 수직인 그레디언트 방향으로 큰 변화가 일어난다.

컴퓨터는 사람과 마찬가지로 a를 찾는것이 더 쉬울것이다. 


출처 : 컴퓨터비전(오일석)

'컴퓨터비전/영상처리' 카테고리의 다른 글

특징 기술자, 관심 기술자  (0) 2014.10.18
모라벡 알고리즘  (0) 2014.10.13
기하 연산  (0) 2014.10.10
bilateral filter  (0) 2014.10.10
영상처리의 기본연산  (0) 2014.10.10