Search Results
'2ne1'에 해당하는 글들
- 2009/06/06 2NE1, 라디오 첫방 - 라이브 공연
- 2009/05/06 2NE1. 첫번째 싱글 "Fire". 내가 기대한건 이게 아니었는데
- 2009/04/30 아이폰으로 만들어본 작품 이미지
- 2009/04/10 HSV 컬러모델 - Hue 는 무엇인가?
- 2009/04/01 OpenCV 코딩좀 해볼까 (2)
2NE1, 라디오 첫방 - 라이브 공연
Fire 를 보면서 언제나 느끼는건 Lollipop 때가 더 좋았다는 사실과 박봄은 뭔가 겉돈다는 느낌이 계속 돈다. 힙합여전사의 이미지를 가지고 왔다고 하는데 .... 어쨌든 라이브 들어보니 이정도면 괜찮은듯. Fire 는 됐고, 다음곡을 기대해 볼련다.
2NE1. 첫번째 싱글 "Fire". 내가 기대한건 이게 아니었는데
2NE1 의 첫번째 싱글 앨범이 발표되었다. Lollipop 으로 주가를 뛰어놓고, 드디어 본격적인 모습을 드러내긴 했는데, 어째서일까 그다지 마음에 들지 않는다. 뮤직비디오도 그렇고 노래도 그렇고 아무런 느낌이 없다. T.T 롤리팝의 영향이 너무 강해서 그런가 예상치 못했던 모습에 조금은 당혹스럽기까지 하다. 지금 4번째 듣고 있는데... 듣다 보니 조금은 귀에 박히긴 하는데, 뮤직비디오는 Space 버전이나 Street 버전이나 영 아니올시다. Lollipop 의 컬러풀한 그건 어디갔냐 이거야 T.T
아이폰으로 만들어본 작품 이미지
아이폰(or 아이팟터치)의 OOOOOO 라는 Application 으로 영상편집을 한번 해봤습니다. 나름대로 예술적인(?) 감각을 살려서 가슴속 깊이 숨겨져 있는 분노(?)를 영상편집으로 승화시킨 작품입니다. 나름 꼼꼼함이 들어가는 작품이라 손가락에 쥐가 나는줄 알았네요. 원본부터 살펴보겠습니다.

저는 이 사진이 좋습니다. 컬러풀한 의상에서 뿜어져 나오는 다채로운 느낌이랄까 어쨌든 좋습니다. 아직 데뷔도 하지않은 신인이지만, 나름 기대를 하고 있는 가수 입니다. 그렇습니다. 팬이지요. ㅋㅋ 연예인에 크게 매달리고 그런건 아니지만, 같이 작업(? = 영상처리작업) 하면서 많이 정이 들어버렸네요. 특히 산다라박이 괜찮ㅅ브니다. 하늘높이 솟아오른 저 머리가 왠지 모르게 눈길이 간다고 할까요. 좀 특이하잖아요? 어쨌든 작업을 해서 제 산다라박에 대한 제 느낌을 표현해봤습니다.

다른 사람들은 눈에 안 들어온다 이겁니다. 아이폰에서 스크롤 돌리고 화면 긁어가면서 열심히 만들어본 작품입니다. 좀 괜찮나요? 산다라박이 눈에 확 들어오진 않습니까? 특히 저 머리, 아~ 저도 머리 길러서 저렇게 한번 해봐야겠습니다. 그 전에 두장을 합쳐서 Motion GIF 를 만들어 봤습니다. 나이트가 되어 버렸군요. T.T

제가 만들긴 했지만, 너무나도 멋진 영상이 되어버렸습니다. 진짜로 나름 잘 만들었다고 자부심 가지고 있는데....................나중에 이 애플리케이션 리뷰한번 제대로 하도록 하도록 하죠. 아직미출시.
HSV 컬러모델 - Hue 는 무엇인가?
영상처리를 하다보면 HSV 라는 컬러모델을 접하게 되는 경우가 많다. 우리가 평소에 접하는 컬러모델은 RGB 라서 그런지 조금은 생소한 느낌이 드는건 사실이다. RGB는 이미 다들 아는것처럼 Red, Green, Blue 로 이루어진 컬러모델로써, 모든 컬러를 Red, Green, Blue 의 가산혼합으로 표현하는 방식이다. 우리가 사용하고 있는 모니터가 RGB를 사용하는 대표적인 장치라고 볼 수 있겠다.
그렇다면 HSV 는 무엇일까? 어디선가 어렴풋이 본 기억이 날것이다. Hue, Saturation, Value 로 이루어진 컬러모델로써 모든 컬러를 Hue, Saturation, Value 로 표현하는 방식이다. Hue 는 색상, Saturation 은 채도. Value 는 명도를 의미한다. 정리해보면 다음과 같다.
색상 : Hue
채도 : Saturation
명도 : Value
HSV 를 그림을 살펴보면 아래와 같다. 잘 이해가 안가시는가? 처음에는 이해가 잘 안갈수도 있다. 하지만 이 그림이 머리속에 자리잡고 있다면 HSV 를 이해해서 그것을 사용하는데 참 편리하다. 이 그림만 이해한다면 HSV 는 끝이다.
(HSV 에 대해서 원론적인 설명은 인터넷에 많이 있다. 검색을 해서 찾아보자)

Hue, Saturation, Value 각 채널의 값들은 아래와 같은 범위를 가지고 있다. 위의 그림이 이해가되었다면 Hue 가 왜 360° 의 범위를 갖는지 알게 될 것이다.
Hue : 0° ~ 360°
Saturation : 0% ~ 100%
Value : 0% ~ 100%

OpenCV 라이브러리의 예를 들어보도록 하겠다. OpenCV 가 무엇인지는 다음의 링크로 살펴보시면 되겠다. http://www.rainless.com/blog/184
OpenCV 에서 각 채널이 1바이트인 RGB 컬러모델 (총 3바이트) 을 각 각 채널이 1바이트인 HSV 컬러모델 (총 3바이트) 로 변환하게 되면 다음과 같은 결과를 가지게 된다
Hue : 0~180
Saturation : 0~255
Value : 0~255
Saturation 과 Value 는 직관적으로 이해가 될 것이다. 하지만 Hue 는 조금 이상하게 느낄 수도 있다. 쉽게 생각하자. 각 채널이 1바이트라서 표현할 수 있는 범위가 0~255 까지 줄었기 때문에 1/2 크기로 줄여서 표현햇을 뿐이다. 즉, 0=0°, 1=2°, 2=4°, 3=6° ..... 120=240° ..... 180=360° 를 의미하게 된다.
한가지만 더 살펴보도록 하자. 포토샵에 있는 Hue/Saturation 기능을 살펴보자. 이 기능을 사용하면 영상의 Hue, Saturation, Value 값을 조절해서 자신이 원하는 영상을 생성할 수 있다.

여자빅뱅이라고 불리우고 있는 2NE1 의 사진을 포토샵에서 열었다. Hue 테스트를 하는데 있어서 이처럼 좋은 이미지는 없다. 모든 색상값들이 훌륭하게 분포되어있는 아주 컬러풀한 이미지다. 이 영상의 Hue 를 조절하면 어떻게 변하는지 살펴보도록 하자. 특히 왼쪽에서 세번째에 있는 노란색에 검정색 땡땡이 입고 있는 산다라박의 파란색 스타킹을 유심히 바라도록 하자. 그녀의 파란색 스타킹은 약 240° 의 Hue 값을 가지고 있다는 것을 알 수 있다. 위의 Hue 이미지를 살펴보면 왜 240° 인지 알 수 있다.

Hue 값을 +120° 이동시켰다. 과연 영상은 어떻게 변했을까?

Hue 값을 120° 이동시킨 영상이다. 왼쪽에서 3번째 있는 산다라박의 스타킹을 보자. 빨간색임을 볼 수 있다. 즉 변환 이전에 Hue 값이 파란색으로 약 240° 정도의 값을 가졌던게 120° 이동시킴으로써 빨간색 약 360° 의 값으로 변환되었다.
좀더 살펴보자 왼쪽에서 두번째에 있는 CL 을 살펴보자. 변환이전에는 분홍색의 쫄쫄이를 입고 있지만, 변환이 되고 난 이후에는 연두색의 쫄쫄이를 입고 있다. Hue 값이 어떻게 변화되었는지 살펴보면 변환이전의 분홍색은 약 310° 정도의 Hue 값을 가지고 있었지만 변환된 후에는 약 70° 정도의 Hue 값을 갖는 연두색으로 변화했음을 알 수 있다.
HSV 컬러모델은 인간의 시각시스템과 유사한 컬러모델이라고 한다. 그래서 그런지 영상의 검출및 인지 시스템 등을 만들때 HSV 컬러모델을 많이 사용하긴 한다. 알고리즘마다 차이는 있겠지만, 내가 봤었던 어떤 논문에서는 사람의 얼굴을 검출하기 위해서 1차적으로 HSV 의 Hue 값을 이용했었다. Hue 의 쓰임새는 많다. 이참에 HSV 의 Hue 에 대한 이해를 확고히 했으면 좋겠다.
OpenCV 코딩좀 해볼까
VC6 을 실행해서 새로운 프로젝트를 하나 만들었다. 간단하게 콘솔 화면에서 개발하기 위하여 File -> New -> Projects -> Win32 Console Application 으로 프로젝트를 생성하고 main.c 파일을 하나 생성하였다.
자 이제 코딩을 한번 해보자!!
.
.
.
.
.
.
.
그런데 뭐 부터 시작하지. ㅡㅡ;;
좀 난감하다. 뭘 할지 아직 생각을 안했다. T.T
하지만!!
이건 확실하다. 영상처리를 할 이미지가 한 장 필요하다는 사실.
그래서
요즘 잘 듣는 노래 "Lollipop" 과 관련된 2NE1 의 사진을 어디선가 한 장 엎어왔다.
짠!!

앞으로 이놈(?) 으로 작업을 해보자.
일단 copy 해서 위에서 생성한 프로젝트 폴더에 복사해놓자. 이름은 2ne1.jpg 이다.
자! 이제 소스코드를 구해보자.
구글링을 하던 네이버링을 하던 찾아보면 코드는 많다.
#include <cv.h>
#include <highgui.h>
int main(int argc, char **argv)
{
int i;
IplImage * src_img = 0, *dst_img[3];
if (argc >= 2)
src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if (src_img == 0)
exit (-1);
for (i = 0; i < 3; i++)
dst_img[i] = cvCloneImage (src_img);
cvSmooth (src_img, dst_img[0], CV_BLUR, 5, 0, 0, 0);
cvSmooth (src_img, dst_img[1], CV_GAUSSIAN, 11, 0, 0, 0);
cvSmooth (src_img, dst_img[2], CV_MEDIAN, 5, 0, 0, 0);
cvNamedWindow("Blur", CV_WINDOW_AUTOSIZE);
cvShowImage ("Blur", dst_img[0]);
cvNamedWindow ("Gaussian", CV_WINDOW_AUTOSIZE);
cvShowImage ("Gaussian", dst_img[1]);
cvNamedWindow ("Median", CV_WINDOW_AUTOSIZE);
cvShowImage ("Median", dst_img[2]);
cvWaitKey (0);
cvDestroyWindow ("Blur");
cvDestroyWindow ("Gaussian");
cvDestroyWindow ("Median");
cvReleaseImage (&src_img);
for (i = 0; i < 4; i++) {
cvReleaseImage (&dst_img[i]);
}
return 0;
}
이 코드를 사용하자. 아직 실행은 안해봤는데, 보아하니 블러(Low pass filter) 인듯하다. 컴파일 해보자. 복사해서 main.c 파일에 붙여놓고 컴파일 해보자.
에러 발생한다. 라이브러리 없댄다. 셋팅값 수정좀 하자. Project -> Settings -> Link 이동 Object/library modules: 에 다음을 추가하자.
cxcore.lib cv.lib highgui.lib
라이브러리 추가하면 컴파일이 잘 될 것이다. 해봤더니 잘 되네. 컴파일 & 링크 성공.
실행하면

에러가 발생한다.
excore110.dll을(를) 찾을 수 없으므로 응용 프로그램을 시작하지 못했습니다. 이 문제를 해결하려면 응용 프로그램을 다시 설치하십시오
해결하자. DLL 없다고 에러나는거니 환경변수에 Path 설정하거나 해당 DLL 파일 복사해오거나 둘중에 하나 하면 될것 같다. Path 설정은 다음에하고, 그냥 복사해와야겠다.
C:\Program Files\OpenCV\bin
해당 경로를 나중에 환경변수 Path 에 추가하고, 일단은 DLL 복사해와야겠다. 일단 눈에 보이는 DLL은 전부 복사해서 위에서 생성한 프로젝트 경로의 Debug 라는 폴더에 복사했다. Debug 폴더는 이미 만들어져 있다. 복사 완료했으면 다시 실행해보자.
또 문제 발생.

응용 프로그램을 제대로 초기화하지 못했습니다(0xc0150002). 응용 프로그램을 마치려면 [확인]을 클릭하십시오
슬슬 스팀이 올라오기 시작한다. 이 문제는 가늠하기가 힘들다. 검색을 해보자.
해봤더니......
1.0을 설치하면 샘플은 VC++ 6.0으로 컴파일되어 있습니다.
XP에는 6.0용 라이브러리가 ....\system32\에 기본적으로 설치가 되어 있어서 바로 실행이 되죠. 그러나 1.1은 VC 2005버전으로 컴파일된 것이 설치가 됨으로 VC++ 2005(or with SP1) 런타임 파일이 없으면 실행이 안됩니다. PS. 라이센스 걱정없는 VC++ 2008 Express 버전으로 개발해서 데모를 보여주시면 될텐데요?
MFC는 사용못하지만 Win32 API 및 WTL(특정 SDK 필요)은 사용할 수 있습니다.
그럴싸하고, 설득력이 있다.
현재 내가 사용하는 버전은 위에서 말한것처럼 1.1 이다. 그런데 개발은 VC6.0 에서 할려고 했으니 이런 문제가 발생하는것이다. 해결방법은 2가지가 있다.
1. VC2005 이상버전을 사용
2. VC2005 런타임 환경을 설치 (VC6.0은 계속사용)
VC6.0에 익숙한 나로써는 2번의 해결책을 사용하기로 하였다. 그래서 VC2005 런타임 환경을 찾아봤다.
http://www.microsoft.com/downloads/thankyou.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&displayLang=en
다운로드 받아서 설치해보자
설치해서 다시 컴파일 & 실행을 해봤더니....
에러가 없다. 다행이다. T.T
에러도 없지만 아무런 반응도 없다.
소스코드를 유심히 보니, 인자값으로 2ne1.jpg 값을 줘야 할것 같다.
Project -> Settings 이동 Program arguments 에 2ne1.jpg 를 입력했더니 결과물이 제대로 나온다.


