공용체란 C언어 문법 책 뒷쪽에, 구조체(structure) 다음에 꼽사리로 나오는 데이터 구조.
예를 들어, 아래와 같은 공용체가 정의되어있다고 하자.

typedef union _data {
    char a;
    int b;
    float c;
} data;


이 경우, 이 공용체는 전체 8바이트의 크기를 갖는다. 이 8바이트 중에서 첫 번째 바이트는 a 변수가 사용하고, 처음 네 개의 바이트는 b가 사용하고, 처음부터 끝까지 여덟 바이트는 c가 사용한다. 즉, 세 멤버 변수 a, b, c 는 중첩된 메모리 공간을 같이 사용한다. 그러므로, a 변수에 값을 저장하면, b와 c에 저장된 값은 전혀 다른 값으로 바뀌게 된다.

"도대체 이런 구조를 왜 써야할까???" 하는 의문을 바로 몇 달전 C 프로그래밍을 가르치면서 다시금 떠올렸었다.

그러다가 OpenCV 책을 번역하면서 발견한, union의 효과적인 사용 예를 기록해보려고 한다.

OpenCV의 행렬 구조체의 정의는 다음과 같다.

typedef struct CvMat
{
	int type;
	int step;
	int* refcount;
	int hdr_refcount;
	union {
		uchar* ptr;
		short* s;
		int* i;
		float* fl;
		double* db;
	} data;
	union {
		int rows;
		int height;
	};
	union {
		int cols;
		int width;
	};
} CvMat;


CvMat 라는 구조체 내부에 union이 두루 사용된 것을 볼 수 있다. 먼저 아래쪽 두 개의 union을 보면 rows 와 height 두 개를 union으로 감싸고 있다. 이 경우, rows 와 height 는 같은 메모리 공간을 지칭하는 변수가 된다. 즉, 행렬의 행의 크기를 나타내는 값을 rows 라는 변수로도 접근할 수 있고, height 라는 변수로도 접근할 수가 있는 것이다. 이건, 꽤 괜찮다. ^^;

두 번째, 위 구조체 정의 중간에 있는 data 라는 이름을 할당한 union은 5 가지 종류의 포인터 변수를 가지고 있는데, 이 또한 꽤 그럴싸하다. 어차피 포인터 형 변수라면 항상 4바이트(win32 환경의 경우)를 갖게 되니까 data 변수는 결과적으로 4바이트를 갖는다. 그런데 data.ptr 을 사용할 수도 있고, data.s, data.i, data.fl, data.db 를 사용할 수도 있다. 즉, CvMat 행렬이 실제 저장하고 있는 값이 무슨 타입이냐에 따라 실제 데이터가 저장된 메모리 공간을 가리키는 변수를 선택적으로 사용할 수 있는 것이다. 그러면 뭐가 좋을까??? 포인터 연산을 통해 주변 원소로 이동할 때 캐스팅을 따로 하지 않아도 되는 장점이 생긴다. (물론 주의해서 사용해야 하는 점은 존재한다.) 음... 어려울려나?? 암튼 좋은거다. ^^;

암튼, union을 사용해서 도움이 되는 예제를 처음 보다시피하여 기록해보았다. 도움이 될라나.. 흠..


Posted by kkokkal
:
대화 상자 기반의 프로그램을 만들고, 에디트 컨트롤같은 텍스트 입력 컨트롤을 올려놓은 후 엔터(ENTER) 키를 누르면 대화 상자가 종료되는 현상이 발생한다. 이를 방지하기 위해서 엔터키 입력을 따로 처리해주어야 하는데, 이 경우 PreTranslateMessage() 함수를 오버로딩 해주어야 한다.

예를 들어 CTestDlg 클래스가 대화 상자를 나타내는 클래스라면 아래와 같이 코드를 추가한다.

BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
	if( pMsg->message == WM_KEYDOWN )
	{
		if( pMsg->wParam == VK_RETURN ) return TRUE;

		if( pMsg->wParam == VK_ESCAPE )
		{
			SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
			return TRUE;
		}
	}

	return CDialog::PreTranslateMessage(pMsg);
}

즉, 대화 상자 클래스에서 윈도우 메시지를 처리하기 전에 이미 WM_KEYDOWN 키 중에서 RETURN 키에 대해서는 아무 일도 하지 않도록 만들고, ESC 키에 대해서는 프로그램을 최소화하도록 하는 코드이다.


Posted by kkokkal
:

러시아에서 날아온 동화같은 영화. 영화의 원제 루살카(Rusalka)는 슬라브족의 고대 신화에 등장하는 여신이다. 물속에 살고 있는 루살카는 밤이면 뭍으로 나와 아름다운 노래와 춤으로 남성들을 물속으로 끌어들인다... 는데, 세이렌같은 건가? 그래서 제목이 인어공주가 된건가? 흠...

감독: 안나 멜리크얀
출연: 마리야 샤라에바(알리사)

줄거리:
바닷가에서 헤엄을 치던 엄마와 우연히 그곳을 지나던 해군 아빠가 물속에서 사랑을 나누고, 그렇게 잉태되어 태어난 알리사는 아빠 없이 자란다. 남편없이 알리사를 키우는 엄마는 여러 남자들을 유혹하고, 이를 못마땅하게 생각하는 알리사는 집에 불을 지르고, 일식이 있던 날 다시는 입을 열지 않기로 마음먹는다. 어느덧 10대 후반이 된 알리사는 가족과 함께 모스크바로 이주하고, 그곳에서 술에 취해 강으로 뛰어든 남자 사샤를 만난다. 그리고, 그에게 반한다.


이 영화는 '아멜리에'를 떠오르게 한다. 동화책같은 색감과 톡톡 튀는 주인공의 행동들. 그러나 전체적인 분위기와 완성도에서 아멜리에를 뛰어넘지는 못한다. 주인공의 외모에서도... 아무래도... 흠.


알리사와 사샤가 공원에서 하는 놀이는 재미있어보인다. 일명 시체 놀이인데, 한 사람이 죽은 척하고 누워서 아무런 반응을 하지 않는 놀이. 웃어도 안되고 그냥 죽어있는 듯이... 눈은 뜬 채. 무표정으로 숨만 쉬면서 30분 이상을 버티면 같이 놀던 친구들이 119에 신고해서 엠블런스를 태워줄지도 모르는 일이니까..

(내가 알기로는) 전 세계에서 우리나라에서 제일 먼저 개봉한 것으로 아는데.. 그래서 IMDB에도 그닥 정보가 있지 않아서 신기했고... 사진도 그닥 많지 않고...

그러나 이 영화는 무책임하다. 가파른 산길을 차츰차츰 걸어 올라가다가 벼랑끝에서 떨어지는 느낌이랄까... 이 영화를 아직 보지 않은 '내'가 있다면 아마 난 추천하지는 않을 듯 싶다.

ps. 아... 생각해보니 모스크바 시내의 모습을 볼 수 있었던 점은 정말 좋았다. 모스크바가 이렇게 생겼었구나... 싶은.


'Story > 영화/공연' 카테고리의 다른 글

룸바 (Rumba)  (0) 2009.07.30
용산 아이파크몰 스타 관람~  (1) 2009.07.21
간만의 연극, 똥강리 미스터리  (0) 2009.07.02
렛미인(Let me in)  (0) 2008.12.18
도쿄(Tokyo)  (0) 2008.10.27
Posted by kkokkal
:

10월에 본 3국의 옴니버스 영화 '도쿄'에 이어, 11월부터 제 3국의 영화들을 골라서 보고 있다.
11월 17일 본 영화는 '렛미인(let me in)'. 나를 들여보내줘...

금발의 미소년 포스터로 관객을 유혹하는 이 영화는 눈덮힌 스웨덴을 배경으로 만들어진 소년과 뱀파이어와의 우정(어쩌면 사랑) 이야기이다. 얼마전 부천 국제 판타스틱 영화제에서 최우수 감독상과 관객상을 받았고, 그 외 다수의 영화제에서도 최우수 작품상, 감독상, 판타지상 등을 수상하였다. (예전에도 한 번 밝힌 적이 있지만, 난 상받은 영화에 약하다)

감독: 토마스 알프레드슨
출연: 오스칼(카레 헤더브란트), 이엘리(리나 레안데르손)

줄거리:
못된 아이들의 괴롭힘에 시달리는 외로운 소년 오스칼은 어느 눈 내리던 밤, 창백한 얼굴을 한 수수께끼의 소녀 이엘리를 만난다. 둘은 곧 서로에게 하나밖에 없는 친구가 되고, 어느 새 가슴 설레는 감정이 싹튼다. 하지만 이엘리의 등장 이후 마을에서 피가 모두 사라진 채 죽임 당하는 기이한 사건이 계속되고, 비상한 두뇌의 오스칼은 그녀가 뱀파이어라는 사실을 눈치 채는데... (출처: 씨네21)


영화는 뱀파이어라는 소재를 다루고 있고, 주인공은 두 어린 소년 소녀이고, 그럼에도 간혹 사람을 죽여서 피를 공급받는 장면은 섬뜩하고... 그러니까 어린이를 위한 판타지 무비는 아닌거다. 마치, 작년에 봤던 <판의 미로 - 오필리아와 세 개의 열쇠>같은 어른을 위한 판타지 영화랄까..

그럼에도 영화의 스토리 자체는 특별히 예상의 범주를 벗어나지는 않는다. 소녀는 자신의 약속을 지키기 위해서 사라진 후에도 소년을 지켜주고, 그런 소녀를 소년은 지켜주게 되는 결말이랄까...

벌써 한 달이 지난 후이고, 오늘 새벽부터 할 일에 대한 스트레스가 증폭됨을 느끼기에.. 길게 쓰는 것은 자제해야겠다. 암튼, 영화를 보고 기억나는 것은...

카레 헤더브란트의 우윳빛 얼굴과 금발...
리나 레안데르손의 검은 머리칼과 눈동자... 특히나 마지막 수영장 장면에서의 눈동자는... 매혹적.


'Story > 영화/공연' 카테고리의 다른 글

룸바 (Rumba)  (0) 2009.07.30
용산 아이파크몰 스타 관람~  (1) 2009.07.21
간만의 연극, 똥강리 미스터리  (0) 2009.07.02
나는 인어공주(Rusalka)  (0) 2008.12.19
도쿄(Tokyo)  (0) 2008.10.27
Posted by kkokkal
:

Coffee & Donuts

Story/사진 2008. 12. 10. 13:28 |

Coffee & Donuts and Christmas...


'Story > 사진' 카테고리의 다른 글

연꽃 테마 파크 출사  (1) 2009.07.06
사탕  (0) 2009.03.20
Venus & Jupiter  (2) 2008.12.02
명동에서  (2) 2008.10.29
내가 그린 기린 그림  (0) 2008.09.28
Posted by kkokkal
:

Venus & Jupiter

Story/사진 2008. 12. 2. 18:23 |


달 아래 밝은 별이 금성, 그 옆에 작은 별이 목성

내일은 A200으로 찍어봐야지!!!


'Story > 사진' 카테고리의 다른 글

사탕  (0) 2009.03.20
Coffee & Donuts  (2) 2008.12.10
명동에서  (2) 2008.10.29
내가 그린 기린 그림  (0) 2008.09.28
종로에서  (0) 2008.05.17
Posted by kkokkal
:
2차원 평면 상에서 어느 한 점의 위상(phase)을 알고 싶을 때, 쉽게 말해서 x축과 이루는 각을 알고 싶을 때 사용할 수 있는 함수가 atan2(아크 탄젠트 투) 이다. 이 함수의 원형은 다음과 같다.

double atan2(double y, double x)

이 함수는 atan(y/x) 결과 값을 반환하며, 반환값의 범위는 -pi 부터 +pi 까지이다. (즉, -3.14 ~ + 3.14)

이 함수를 사용할 때 주의할 점은 점의 y좌표를 먼저 써주어야 한다는 것이다. 너무나 당연스럽게 (x, y) 좌표 순서대로 써줄 경우 잘못된 결과를 얻게 될 수 있다.

몇몇 2차원 좌표에 대하여 atan2 함수를 적용하였을 때 결과값을 아래 그림에 정리하였다. 다시 한 번 말하지만, (x, y) 좌표가 서로 뒤바뀌어 써주어야 한다는 점에 주의하기 바란다.


Posted by kkokkal
:
여기에 적혀있던 한글 용어들은 모두 "영상 처리 프로그래밍" 홈페이지 게시판으로 옮깁니다. 향후 업데이트는 "영상 처리 프로그래밍" 홈페이지에서만 이루어질 것임을 알려드립니다. 아래 링크를 클릭하시면 해당 게시판으로 이동합니다.

http://www.ippbook.co.kr/xe/223

Posted by kkokkal
:

명동에서

Story/사진 2008. 10. 29. 21:45 |


간만에 가본 명동에서.

7개월 만인가??

'Story > 사진' 카테고리의 다른 글

Coffee & Donuts  (2) 2008.12.10
Venus & Jupiter  (2) 2008.12.02
내가 그린 기린 그림  (0) 2008.09.28
종로에서  (0) 2008.05.17
비와 민들레  (2) 2007.10.10
Posted by kkokkal
:

도쿄(Tokyo)

Story/영화/공연 2008. 10. 27. 13:30 |


"천재 감독의 무한 상상" 영화 도쿄는 레오카락스, 미셸공드리, 봉준호 감독이 도쿄를 배경으로 만든 옴니버스 영화이다. 각자 도쿄를 배경으로 자신만의 상상력을 동원하여 30분짜리 단편 영화를 만들었다.


미셸공드리(왼쪽)는 <이터널 선샤인>으로 유명해지고, 작년 <수면의 과학>으로 나에게 이름이 각인된 감독. 뮤직비디오쪽에서 활동하다가 최근 장편 영화도 찍고 있는, 상상력이 무한한 천재 감독.

봉준호(가운데) 감독이야 우리나라 사람이라면 거의 알만한.. <살인의 추억>, <괴물>을 만든 참신한 감독이랄까? <살인의 추억>에서는 아주 탄탄한 구성을 보여주고, <괴물>에서는 훔... 구성보다는 새로운 시도쪽에 더 점수를 주고 싶긴한데... (구성이 별로다라기 보다는, 사실 구성은 살인의 추억이 더 좋아서리..)

레오카락스(오른쪽). 고등학교 때 본 <뽕네프의 연인들>을 만들었던 천재 감독. 사실 프랑스 영화는 지루한 면이 있어서 그다지 좋아하지는 않는다. 그리고, 그 당시 나로서는 그런 영화보다는 <터미네이터 II>에 더 열광적이었으니... 그래도, <뽕네프의 연인들>의 OST와 맨 마지막 남자와 여자의 대사는 아직도 기억한다. 그 마지막 대화는 사랑스럽다. 너무나.

사진에서.. 봉감독님의 덩치가 젤 크다는 점이 좀 아이러니다. 표정도 아기곰 표정.. ㅋㅋ 그에 비해 레오카락스 감독의 포스는 ㄷㄷㄷ


첫 번째 이야기는 미셸공들이의 <인테리어 디자인>. 영화 감독 지망 남친을 따라 같이 상경한 히로코가 자신의 정체성, 미래 등에 대해 고민하다가 나무 의자로 변해가는 모습을 그린... 가슴 한 켠이 뻥 뚫리는 모습을 담아내는 감독의 상상력이 탁월하다. 히로코 역의 후지타니 아야코의 웃는 모습은 꽤 사랑스러웠다.


레오카락스의 <오물>. 개인적으로는 <광인>이라는 제목이 더 어울리지 않나 싶지만.. 스토리 자체는 단순하고 조금은 지루한 감이 없지 않은... 프랑스 영화라서 그런걸까... 훔. 일본 아나운서의 모습이 너무나 이국적이라서 일본스럽지 않은 느낌을 준다. 그래도 광인의 언어를 통역하는 모습은 살짝 웃기기도 하고, 무엇보다 광인의 연기는 진짜 멋있었다. 진짜 제대로 미친 사람을 보는 듯한 느낌...


봉감독이 선택한 소재는 히키코모리(사회생활에 적응하지 못하고 집안에만 틀어박혀 사는 병적인 사람). <흔들리는 도쿄>는 세 영화 중에서 (그나마) 사실적인 스토리로 이루어져있어서 보기 편했던 영화. 미셸공드리의 영화는 결말 부분에는 상상력이 앞서 나갔고, 레오카락스의 영화는 첨부터 스토리는 별 안중에 없었던 것 같고...

히키코모리 주인공(카가와 데루유키)은 10년간 집 밖에 나가지 않으면서 모든 물건을 깔끔하게 정리하면서 산다. 혼자만의 삶.. 자유로운... 화장실 문도 열어둔 채로 볼일을 보고, 그대로 변기 위에서 잠도 자고... (좋은 꿈을 꾼다나.. 훔)


필요한 물건들은 전화로 주문해서 받지만, 절대 배달원과 눈을 마주치지 않는다. 그러다, 피자를 배달하러 온 아오이유우(유우짱~~~ 키레이~~~~)와 눈이 마주치고, 세상이 흔들린다. 이 흔들림은 주인공의 마음이 흔들리는 것과 동일시된다. 아오이유우는 주인공의 집에서 완벽함을 느끼고, 본인도 히키코모리의 삶을 선택하려한다. 이를 막기 위해 10년만에 집 밖을 나서고, 아오이유우의 몸에 있는 문신(LOVE)을 누른다. 그리고, 다시 흔들린다.

아오이유우짱과 카가와데루유키라니... 흠... 이런 조합, 가능한 것인가??? (나도 기대해도 되는거야??)

봉감독의 메시지는 이거다. [봉준호] 메시지를 따지자면 서로 만지자, 뭐 이런 얘기다


지난 주, 김기덕 감독의 <비몽>을 보았다. 그 꿀꿀한 기분이 <도쿄>로 인해 정화되는 느낌.



'Story > 영화/공연' 카테고리의 다른 글

룸바 (Rumba)  (0) 2009.07.30
용산 아이파크몰 스타 관람~  (1) 2009.07.21
간만의 연극, 똥강리 미스터리  (0) 2009.07.02
나는 인어공주(Rusalka)  (0) 2008.12.19
렛미인(Let me in)  (0) 2008.12.18
Posted by kkokkal
: