JPEG2000 to PDF [ WITHOUT RECOMPRESSION ]

 현재 jpeg2000 형태로 압축된 이미지 파일을 PDF에 담을 수 있는 방법은 Adobe Acrobat을 이용하는 방법이 유일한데, 이를 무료 유틸리티들을 이용해서 할 수 있는 방법.

1. XnView 등 JPEG2000 컨버팅 기능이 있는 유틸리티를 이용해서 .jp2 파일로 컨버트
2. FreePic2PDF를 이용해서 PDF로 변환 (FreePic2Pdf_eng.RAR)
3. PDF Split And Merge (PDFSAM)을 이용해서 다른 내용의 PDF 파일과 병합 및 편집

 다소 복잡하긴 하지만 거대한 용량의 Adobe Acrobat을 불법으로 설치하기 싫을 경우 사용하는 방법.

 덧. 기타 PDF 생성에는 PDFCreator, PDF 뷰어로는 PDF-XChange Viewer 추천.

by openwrld | 2012/01/25 15:36 | 트랙백

소프트웨어 스테디 캠, avisynth 필터

 고화질의 동영상 촬영을 위해 소니의 WX5를 구입..!! 하지만 HX5V에 있는 스테디캠 기능이 없어서-_- 어차피 거치게 될 avisynth를 통한 디인터레이싱 등의 작업과 함께 스테디캠 기능도 구현을 해보고자 이런 저런 고민을 해보고 이에 대한 기록을 할까 함.


 서론을 좀 풀자면.. 캠코더나 동영상 기기들이 점차 작아지고 다양한 환경에서 영상촬영이 필요하게 되면서 기기 자체가 흔들리는 경우가 많아졌고.. 이걸 해결하기 위해 여러가지 방법이 동원되게 되었지. 그래서 스테디캠이라는 기법이 나왔는데.. 이런저런 물리적인 구조물을 통해서 캠코더의 흔들림을 막는 방법이 사용되었지. 돈과 물리적 공간을 투자할 수 있는 분야에서는 대단한 각광을 받으며 여러가지 한계를 뛰어넘을 수 있는 하나의 방법을 마련해 주게 되었다고 함.

 하지만.. 낮은 가격과 휴대성을 내세우는 핸디캠 같은 물건은 이런 것들을 주렁주렁 달고 다닐 수가 없는거지. 결국 이걸 캠코더 내부에서 소프트웨어적으로 해결을 하게 됨. 흔들림의 반대 방향으로 촬영된 영상을 흔들어 주는 것인데.. 이 방법은 촬영된 영상의 상하좌우를 여유로 사용해야 해서 화각이 다소 좁아지는 영향이 있는데, 결과물이 흔들리는 것보다는 훨씬 나으니 그냥 사용되는 경우가 많지.
 이런 소프트웨어적인 방법은 주로 캠에서는 가속도센서를 이용했었고, 이것이 프로세싱 능력이 향상되면서 촬영된 영상의 앞뒤 프레임의 분석만으로 흔들림이나 캠의 움직임을 알아낼 수 있게 되면서 가속도 센서가 불필요해지지 않았나 싶음.


 여튼, 이걸 캠이나 디카에서 할 수 있다면 이미 녹화된 영상을 가지고 PC에서도 할 수 있지 싶어. 그래서 방법을 찾아봄.

 대충 avisynth로 가능한 방법으로는..

 1. 버철덥 필터인 deshaker를 사용
 2. depan filter 사용 (mvtools2를 이용한 ME search 정보 사용 가능)

 deshaker의 결과물은 상당히 우수하지만.. 2 pass를 사용해야만 하는 불편함이 있어 패스. 예전에는 2pass고 뭐고 거침이 없었는데.. 나이먹다 보니.. -_- 귀찮은 것은 사실. 그리고 오늘 한 작업을 한달 뒤에 다시 하려면 2pass는 여전히 귀찮은 것이 될 가능성이 매우 농후하여 사용하지 않기로 함.

 그래서 Depan 필터를 사용했는데.. depan 필터와 함께 제공되는 depanEstimate 필터의 ME 검색 능력이 상당히 떨어져서.. rotate 같은건 잡아내지도 못하는 듯.

 결국 Depan + MVTools2 조합을 사용하게 되었음.


 WX5에서 만들어진 1080i 동영상에 사용된 Avisynth 코드는 :

--------------------------------

LoadCplugin("C:\Program Files\AviSynth 2.5\plugins\yadif.dll")
Yadif(mode=1,order=1)

Lanczos4Resize(1440,810)            # 원본 해상도 1440x1080 (디인터레이싱 -> progressive)

LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\mvtools2.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\depan.dll")

vectors = MSuper().MAnalyse(isb = true)
globalmotion = MDepan(vectors)
#DepanStabilize(data=globalmotion, cutoff=0.3, damping = 1.0, rotmax=15, dxmax=40, dymax=25, mirror=15)
DepanStabilize(data=globalmotion, method=1, cutoff=0.3, damping = 1.0, rotmax=15, dxmax=40, dymax=25, mirror=15)

crop(80,44,1280,720)               # 상하 80px, 좌우 44px 크롭하여 1280x720으로 리사이즈

--------------------------------

 avisynth와 virtualdub조합에서는 method를 1로 주어도 문제가 없는데, 키라라 인코더에서는 method를 1로 주면 에러가 남. 그래서 윗줄의 주석처리해 놓은 부분대로 사용해도 그럭저럭 쓸만한 결과물을 얻을 수 있음.

 기타 소스필터나 디노이즈는 취향대로 사용하면 되고.


 그나저나 키라라 인코더는 avisynth를 이용하는 아이디어 자체는 좋은데 세세한 면들에 있어 너무나 불편해서 어떻게 쓰라는 것인지.. (프리셋도 각자 따로놀아서 전체적으로 불러오는 것도 불편하고..) 차후에 Avisynth를 이용해서 여러 파일들 일괄처리만 하는 간단한 프로그램 하나 만들어 써야할 듯 -_-;



 예시 결과물로 디스트릭트9의 한장면을 편집하여 올려봄.. 4조각의 각각은..

 원본(Original) / 크롭만 적용(Cropped)
 디팬만 적용(Depanned) / 크롭+디팬(Depanned, Cropped)
 



동영상 내의 MNU 로고를 보면 대충 어떻게 스태빌라이징 하는지 알 수 있겠지.


고화질 동영상은 첨부된 파일(CamStabilizer2.avi)을 참조..


대략 써먹을 정도는 되는 듯.

아쉬운 점으로는.. depanstabilizer 필터가 조금 부족한 면이, 잘려나가는 부분을 앞뒤의 프레임에서 추출해서 이어붙여주면 좋으련만, 그 기능이 부족하여 mirror 옵션을 사용해야 함. 따라서 crop 시킨 부분을 넘어설 정도로 심하게 화면이 흔들리면 외곽에 약간 부자연스러운 형상이 나타날 수 있음.

by openwrld | 2010/11/29 01:17 | 트랙백

마이크로 프로세서에서 벡터폰트 사용하기..

 요새는 뭐 워낙 빠른 프로세서들이 많이 나와서 벡터폰트가 외각선까지 다듬어져 화면에 눈부시게 뿌려져도 신기할게 없는 세상이 되어버렸으니.. 벡터폰트가 뭐 대수냐 할 수도 있겠네.

 하지만.. 개발을 하다보면 항상 이렇게 강력한 프로세서들만 쓸 수 있는게 아니잖아? -_-;; 트루타입 폰트의 용량 자체도 제법 될 뿐더러, 베지어 커브니 뭐니 연산량이 엄청나지. 게다가 그래픽 가속 하드웨어가 없는 프로세서라면 점을 하나하나씩 연산해서 찍어야 하니..

 얼마전 이런저런 프로젝트를 하면서 작업용으로 TMS320C33이 올라간 하드웨어를 하나 받게 되었는데, 여기에 480x272짜리 컬러 LCD가 들어갔지. C33의 하드웨어로는 이 컬러 LCD를 제대로 구동하기 난감해서 FPGA 쪽의 도움도 받고.. 아무튼 메모리에 적절히 데이터를 넣고 FPGA쪽으로 전송하면 FPGA가 알아서 LCD의 리프레쉬를 하도록 개발이 되었지.

 128x64짜리에 (몇년간-_-) 사용하던 비트맵 폰트를 그대로 썼는데.. 폰트가 정말 연필심만 하더구만. 조금 과장이 있었지만-_- 가장 즐겨사용하던 폰트는 너무 작아서 안되겠더라고, 그래서 그나마 큰 것으로 되어 있던 폰트를 일단 활용을 해서 작업을 진행했는데.. 여튼 이런 이유로 벡터폰트에 대한 필요성이 대두되어서.. 트루타입폰트나 오픈타입도 알아봤는데 이거 뭐 도저히 c33으로는 폰트 그리다가 날 새겠더구만. 디스플레이보다 더욱 중요한 것들을 돌려야 하는데 말이지.

 그래서 알아보게 된 것이 Hershey Font. 포맷도 간단하고, 원리도 간단하고, 만들기도 쉬워보이고...


 이걸 이래저래 손을 봐서 3가지 크기로 디스플레이 한 것들.

  


 대충 손을 본 내역들은..
 1. Hershey폰트는 폰트 데이터가 텍스트 형태로 되어 있는데, c33의 특성에 맞게 32bit로 데이터를 패킹함 (메모리 용량 절약)
 2. 선 긋는 함수에 글자의 두께를 표현할 수 있도록 변경 (벡터 수가 적은 폰트라서, 그냥 그리면 얇은 글씨가 되어버림)
 3. 글자 그리는 알고리즘 최소화 (프로세서의 속도가 문제가 됨)
 
 이거 비트맵 폰트 쓸 때 보다 조금 느리긴 한데.. 그래도 저 정도는 20ms 내외로 그려내니 나쁘지는 않은 셈. (이 하드웨어에서 사용하는 메모리가 느린 것을 감안하면 다른 하드웨어에서는 더 빨라질 여지가 있으니..)

 여튼 용량과 성능이 제법 후달리는 마이크로프로세서에서도 벡터폰트를 사용할 수 있는 라이브러리 확보-_-

by openwrld | 2010/11/19 23:47 | 자작 | 트랙백

HDTV 시청 실시간 모션어댑티브 디인터레이싱

 HDTV 시청시 실시간 디인터레이싱은...? Bob 등으로 만족할 수 없을 경우;;

 인코딩에 사용하는 모션 어댑티브 디인터레이서인 yadif 필터 등을 실시간으로 적용하여 시청하는 방법.

 HDTV 시청 프로그램이 디인터레이서 필터를 지원하지는 않지만, 외부 디코더를 지원하므로 외부디코더를 이용하여 디인터레이싱 하는 방법을 쓰면 된다.

1. 우선 환경설정을 열어서


 


2. 외부 디코더로 ffdshow를 골라주고 다시 설정을 클릭



3. ffdshow 설정에서 deinterlacing 활성화, yadif를 double frame rate로 설정



 스틸샷 캡춰가 안되는 치명적 단점이 있지만.. 60fps로 실시간 고화질 인터레이싱 된 화면으로 TV시청이 가능함.

by openwrld | 2010/02/27 00:39 | 동영상처리 등 | 트랙백

사운드폰트를 사용하는 가상미디 디바이스 생성하기

 요즘같은 시대에 게임용, 혹은 감상용의 미디를 말한다는 것이 상당히 시대에 뒤쳐진 이야기가 될 수도 있을 듯..

 하지만 미디를 듣고자 하는 사람들이 여전히 있고, 고전 게임들을 즐기는 사람들에게는 미디장치가 아쉬울 수도 있을 것이라 봄.

 따라서.. 시대에 뒤떨어진 듯 한 재미있는 팁 하나를 소개하려 함!


 더 나은 미디음원!을 외치던 시절이 있었고, 그 시대를 풍미했던 사운드폰트..라는 것이 있었지. 미디 파일이라는 것은 MP3와 같은 PCM 음원과는 달리, 악기를 연주하기 위한 데이터만 가지고 있는 파일을 이야기하고, 이걸 재생하기 위해서는 악기소리를 내주기 위한 장치가 필요하지. 주로 미디모듈 사운드모듈 뭐 이렇게 불리는 것들이 이런걸 해주는 것이고. 아주 예~~전에, PC에서는 이걸 위해서 애들립카드 라는 것이 등장했었는데, FM방식의 약간은 조잡하지만 삑삑 소리만 내던 PC에서는 상당히 놀라웠던 소리를 들려주던 카드였음. 결국 PC용 사운드카드에도 사블을 위시해서 이 기능들이 강화되기 시작했지. 시간이 흐름에 따라 FM방식으로는 한계를 느끼고, 악기소리를 직접 녹음해서 그 소리들을 이용, 미디파일을 연주해주는 기능들이 사용되었고, 보통은 이 악기소리들을 모아서 롬형태로 모듈 혹은 사운드카드에 붙박이로 제공되었는데, 사운드블래스터 계열에서는 이 악기소리들에 대한 데이터를 표준화, 파일로 편집해서 사용할 수 있도록 했었지. 이게 사운드폰트라는 것. 따라서 각기 다른 사운드폰트로 각기 다른 악기소리를, 즉 미디파일을 다른 소리로 연주할 수 있다는 것이지.
 예전에는 사운드폰트가 사블만의 전유물이었지만, 요즈음에는 PC의 CPU 성능이 상당한 수준까지 올라오면서 CPU가 미디파일의 연주음을 (가볍게!) 합성할 수 있는 수준까지 되어 사운드폰트에 대한 장벽은 없는 것이나 마찬가지..

 하지만 요즘에는 게임들은 전부 MP3같은 PCM 음원의 음악을 사용하고, 작곡을 하는 사람들은 기가샘플러 같은 소프트웨어 음원들을 많이 사용하니 사운드폰트가 주종이 될만한 분야가 많이 사라져 버렀지.

 그래도... 필요한 사람들을 위하여~~~

* 그냥 사운드폰트로 미디파일 재생만 하면 된다!!
   - 이런 경우에는 그냥 synthfont나 xmplay를 사용하면 됨. 구글링하면 나오니 알아서 찾아 쓰길.

* 게임의 미디 BGM도 사운드폰트로 듣고 싶다!!! (이럴 경우 필요한 팁)
   - 이 경우에는 사운드폰트를 이용해서 미디음을 합성해주는 가상미디 장치를 생성해야 하지. 이걸 설명하는 팁.
   - 다음과 같은 설치가 필요함.
      1. 가상미디포트 설치 (MapleVMC) MapleVMCv356.exe
      2. [미디포트 입력->미디음 합성] 프로그램 설치 (SyFonOne v1.011) SyFonOneSetup.exe
      3. 혹 필요할 경우 ASIO로 출력해주는 ASIO4ALL을 설치  ASIO4ALL_2_10_beta1_English.exe
         (사운드카드가 ASIO를 지원하지 않고, 더 안정된 출력을 원하는 경우 설치)
      4. 제어판의 "사운드 및 오디오장치"의 "오디오" 탭에서 3번째 MIDI 음악재생을 Maple Port로 설정
   - 이후에 SyFonOne에서 사운드폰트를 지정하고, Sleep->Play 버튼을 눌러주는 등의 세팅을 해야 함
   - 1,3번은 이미 많이 사용되는 프로그램이고, 2번의 SyFonOne에 대하여는 다음을 참조.
      ( 참조 : http://www.synthfont.com/SyFon_news.html )

by openwrld | 2010/02/18 22:06 | 컴퓨터하드웨어 | 트랙백

◀ 이전 페이지          다음 페이지 ▶