디지털 신호처리(2)

Posted by 알 수 없는 사용자
2015. 5. 18. 11:22 프로그래밍/ETC

• 손실 압축 (비가역 압축)
디지털 비디오오디오에서 주로 사용되는 방식
장점 압축률이 높음 (불필요한 bit 제거)
  
단점 : 압축 후 복원하는 과정에서 원시영상에 대한 손실 발생
기법 반복 기법 ⇒ 푸리에 변환이산 코사인 변환
           
예측 기법 ⇒ DPCM, ADPCM, DM, ADM
           
양자화 ⇒ 스칼라양자화벡터 양자화
           
보간법

    변환 기법 – PCM 변환 

  - 변환 기법은 자료의 영역을 적당한 변환을 통해 다른 영역으로 옮김으로써 자료를 구성하는 단위 정보의 개수를 줄이는 기법 

  - PCM(Pulse Code Modulation) 변환

  - 아날로그 신호로 들어오는 데이터를 표본화(sampling), 양자화(quantization)를 거쳐 디지털 신호로 변형하는 가장 기본적인 기법

 

  PCM

   음은 공기의 진동에 의해 발생한다. 그 진동을 microphone을 통해 전기 신호로 변환해 Analog 파형으로 기록할 수 있다

   Analog로부터 Digital 로 변환하는 방법으로서 가장 많이 사용되고 있는 것이 음악 CD에 사용되PCM(Pulse Code Modulation)이라는 방식이다.

       PCMAnalog 파형을 시간의 경과와 전기신호 level의 두 가지 요소를 사용해 수치화하여 Digital화 한다. 시간의 경과를 분할해 수치화 하는 것을 표본화(sampling)이라고 하며, 1초간에 몇 번 표본화하느냐 하는 빈도를 표본화주파(sampling rate, 단위는 Hz)라고 한다.

     

      음악 CD44.1kHz, 16-bit로 녹음되어 있다. 말하자면 1초간에 44,100으로 분할해 수치로 변환하고 각각의 전기신호 level216 =  65,536 단계(양자화)로 기록하게 된다. 인간이 보통 들을 수 있는 음성(가청음)20Hz ~ 20kHz 정도, 재생주파수는 기록주파수의 약 ½이  됨으로 44.1kHz로 기록한다. 인간은 가청영역을 초과한 음도 진동으로 느낀다고 한다. 따라서 DVD-Audio 에서는 96kHz로 기록하고 있다. 참고로 CD의 음질 (44kHz, 16bit, 2-channel)Bit rate로 환산하면 44,100 * 16 * 2 = 1,411,200 1411kbps가 된다.


위와 같이 전기신호를 분할하여 수치화 하는 것을 양자화라고 하며 단위는 bit로 표시한다. Analog 전기신호 level 값은 실수도 무방하지만 양자화한 디지털 신호는 정수로 표현해야 함으로 값의 근사치를 택하게 된다. 
 예 ) 전기신호 level 9.2인 경우 9(1001(2)) 이라는 값으로 처리한다.



Sampling이나 양자화의 단계가 많을수록 Analog 파형과 근접하여 원음에 가까운 높은 음질의 녹음이가능하지만 file size는 커지므로 적당한 조절이 필요하다.


사람의 귀에 들어오는 오디오는 Digital program과 달라 몇 bit 정도 삭제되어도 거부감이 없이 들을 수 있다. 따라서 인간의 그러한 귀의 특성을 이용해 음질 열화를 감지 못하는 범위 내에서 원래의 data 일부를 솎아 극적으로 압축률을 높이는 손실 압축기술방식을 많이 용하고 있다.


푸리에 변환 (Fourier transform)

시간영역에서의 신호를 주파수영역으로 변환해서 각각의 합성신호를 분석하는 방법

- 푸리에 변환을 통해 기본파와 고주파의 합으로 나타낼 수 있다. 따라서 하나의 파형이 이어지면 그 파형이 어떤 주파수 성분으로 구성되어 있는지를 알 수 있다. 기본파나 고주파도 파형으로서는 정현파(正弦波)이기 때문에 아무리 복잡한 파형이라도 각각의 주파수의 정현파 합성을 통해 만들어지는 것을 푸리에 변환이 나타내고 있다.

- 기본파와 고조파의 주파수 및 진폭을 알 수 있다면, 이것을 합성해서 하나의 파형으로 나타낼 수도 있다. 이것을 역푸리에 변환 또는 푸리에 합성이라고 한다.


1. DFT(Discrete Fourier Transform -이산(불연속) 푸리에 변환
:
연속적인 신호를 시간에 따라 sampling을 한 형태의 신호로 생각하여 퓨리에 변환식을 그대로 계산.


2. FFT (Fast Fourier Transform-고속 퓨리에 변환)
: DFT가 계산시간이 너무 오래 걸리기 때문에 고안된 방법sampling된 신호의 전부를 변환시키는 것이 아니라 필요한 신호만을 골라내어서 최소화하여 연산.
) 100개의 DFT신호가 있을경우 그중 10개를 골라낸후 10개의 신호를 단순히 연결함으로써 제외된 신호들의 예상치를 적용. 변환시간의 문제로 인해 실제적으로는 거의 대부분 FFT를 사용하고 있습니다. DFT를 사용할 경우보다 최고 1000배의 차이 발생.

연속 푸리에 변환은 컴퓨터가 Digital 이므로 사용 할 수 없기 때문에 불연속 푸리에 변환 사용. 보통 아날로그 신호를 받아 처리하는 기술 중 하나로 사용되기 때문에 항상 실시간으로 진행.


푸리에 변환을 하는 이유

1. 음성신호의 주파수 data를 분석하면 현저히 큰 음성 성분이 섞여 있다. 따라서 주파수 data를 큰 음성 성분과 그 이외의 음성 성분으로 나누어 분석함으로써 효율적인 압축이 가능.

2. 인간의 청각은 모든 음성 data를 인식하지 못한다. 인간의 귀로는 듣기 어려운 음을 식별하여 redundancy를 감소. 전형적으로는 고주(가청주파수 대역 밖의 음역)나 큰 소리와 함께 섞여 있는 작은 소리 등을 파악, 정확도를 감소하여 부호화 하거나 부호화 대상에서 제외한다.
결론 : 압축의 전처리 과정으로 효율적인 압축을 하기 위해

        압축률 ↑, 불필요한 중복↓




'프로그래밍 > ETC' 카테고리의 다른 글

디지털 신호처리(1)  (3) 2015.05.18

Sourcetree를 이용한 Github 시작하기

Posted by 알 수 없는 사용자
2015. 5. 18. 11:22 시스템인프라/여러가지툴사용법

 



    github를 사용법을 설명하기전에 sourcetree를 사용한 이유는 명령어를 사용해서 github를 사용할 수도 있다.하지만 그것보다 개발되어 있는 인터페이스 클라이언트들이 많아서 그 중에 무엇을 공부해볼까 생각중에 http://www.slant.co/topics/2089/compare/~sourcetree_vs_git-bash_vs_github-for-windows 에 Git-bash와 github windows, 그리고 sourcetree 의 장단점을 비교한 글이 기재되어 있는데 이것을 보고 sourcetree가 제일 낫다고 생각하여 sourcetree로 github사용법을 작성하였습니다.





1. http://git-scm.com/downloads 에 접속해 git을 설치해줍니다.





2. https://github.com 깃허브에 접속후 가입을 해줍니다.



 





3. 로그인을 한후에 New repository 클릭을 해서, 자신의 repository(저장소)를 설정해 주는 페이지로 이동하게 됩니다.




4.Repository name은 도메인을 설정해주는 부분입니다. 자신의 repository는 저장소를 의미하고 Description은 이 repository를 설명해주는 부분입니다.







5. 빨간색 칸의 주소는 SourceTree와 Github를 연동할 때 사용되는데, 이건 저장소의 도메인 주소입니다.








6. https://www.sourcetreeapp.com (소스트리 : gui 환경에서 git을 사용할 수 있게하는 프로그램) 접속하여 소스트리를 다운받는다. 여기까지면 github를 사용하기 위한 프로그램 설치가 완료 됩니다.



7. SourceTree를 실행하여 주면, 저장소를 만들어주기 위해 왼쪽 상단에 Clone/New를 선택하여 줍니다.




8. Create New Repository탭을 선택하여 Destination Path 항목에 자신이 작업할 디렉토리의 경로를 작성해주고 create 버튼을 클릭하여 repository를 생성해 줍니다.





9. 예시로 작업할 파일에 hellow_world라는 text파일을 생성하여줍니다. 이걸로 github에 push를 해줄것입니다.



10. uncommitted 라고 하나의 로그가 생기는데 이것을 클릭해서 왼쪽상단에 커밋을 눌러주면 이것을 자신의 로컬에 커밋을 하여 버전을 생성하게 됩니다. 하단에는 그 버전의 설명을 작성할 수있습니다.







11. 이제 원격저장소인 github에 연동하기위해 repositort탭에서 repository settings 항목을 클릭하한뒤 Add를 클릭하면 오른쪽 창이 뜨는데 5번에 복사한 주소를 URL/Path에 입력을 한 후에 OK버튼을 눌러줍니다.






12. 이제 hellow_world라는 텍스트를 github에 저장해주기위해 SourceTree 상단탭에서 Push를 클릭한뒤, 현재 branches인 master 항목에 체크를 해준뒤 OK버튼을 클릭해줍니다.




13. 다시 Github 홈페이지의 자신의 저장소로 접속하면 hellow_world가 정상적으로 Push된 것을 확인할 수 있다.







'시스템인프라 > 여러가지툴사용법' 카테고리의 다른 글

git이란?  (484) 2015.05.18
[이슈관리도구] redmine  (481) 2015.04.12

<ASP.NET> Razor

Posted by 알 수 없는 사용자
2015. 5. 18. 11:21 프로그래밍/.NET




ASP.NET은 ASP.NET 3.5부터 기존 웹(Web-Form) 방식에서 MVC(Model - View - Controller) 패턴을 지원합니다.(확장자 cshtml)


(ASP.NET강좌)웹 폼


  




 






 WebMatrix 

 경량화한 웹 개발 도

 Razor 

 ASP.NET MVC에서 지원되는 View 엔진으로써, 개발자들이 더 편리하게 View단을 개발할 수 있도록 돕는 엔진

 

WebMatrix 

웹 메트릭스는 레이저 엔진을 사용할 수 있는 통합환경입니다. 개발도구부터, 웹 서버, 데이터베이스 세가지 요소를 제공

 15MB 용량으로 빠르게 웹 개발 환경을 갖출 수 있습니다.(.NET Framework 4.0 이 설치 안되어 있다면 약 50MB)



Razor


ASPX 마크업 문법으로 구현한다면 우리는 HTML 마크업 내의 코드를 표현하기 위해 아래와 같이 <%= %> 를 사용 하지만 



Razor에서는 @ 문자를 이용하여 코드의 시작과 끝을 표시할 수 있습니다. <% %> 태그와 달리 Razor는 코드 블록을 명시적으로 닫을 필요가 없습니다.



if 구문

foreach 예제와 마찬가지로 if 구문(혹은 C#이나 VB외의 다른 언어 구조)에서도 명시적인 코드 블록의 시작과 끝을 지정하지 않고도 콘텐츠를 포함할 수 있습니다. 예제를 살펴보겠습니다.


다중 구문

또한 @{ code } 블록내에 여러 줄의 구문을 포함할 수도 있습니다.










'프로그래밍 > .NET' 카테고리의 다른 글

[ASP.NET MVC] Controller에서 데이터 전달  (4) 2015.07.11
[ASP.NET MVC] Project 생성, MVC Hello World!  (4) 2015.06.26
<.NET> .NET FRAMEWORK 란?  (4) 2015.05.18
<ASP.NET> ASP.NET 이란?  (3) 2015.05.18
<ASP> ASP 기초, 문법  (3) 2015.04.12