2007년 6월 25일 월요일

[본문스크랩] 신약개발을 위한 화학정보학

    작 성 자 : 이 성 광, 노 경 태

                소속기관 : (사단법인) 분자설계연구소

                부 서 : Chem & Bioinformatics 팀

                직 책 : 책임연구원, 연구소장

                메 일 : leesk@qspr.pe.kr, ktno@bmdrc.org

    [도 입]-[주요 개발분야]-[결 론 ]-[참고문헌]

    I. 도 입

    인간 게놈분석의 완성을 토대로 점차 유전자의 기능이 규명되면, 지금보다 훨씬 많은 의약타겟이 알려질 것으로 예상된다. 그러므로 많은 의약타겟에 대하여 적합한 선도물질(lead compound)을 확인하고 최적화하는 과정이 체계적으로 필요하므로 화학정보학의 도입이 시급하다고 하겠다. 화학정보학(cheminformatics 또는 chemoinformatics)은 컴퓨터과학과 화학이 주가 되는 학제적인 연구 분야이지만, 그 분야를 정확하게 정의하기에는 다소 어려운 점이 있다. 일반적으로 화학정보학은 신약의 선도물질(Lead compounds)을 탐색하고 최적화하는 과정을 보다 빠르고 효율적으로 진행시키기 위하여 여러 가지의 자료를 정보(information)화하고 지식(knowledge)으로 변환시키는 과정을 모두 통틀어서 정의1)할 수 있다. 이 분야는 고효율 검색(high throughput screening, HTS) 및 화합물군(library) 합성과 같은 신약개발 과정에서 생겨난 혁신적인 기술로 말미암아 기하급수적으로 증가하는 데이터를 효율적으로 처리하기 위해서 화학 및 수학 분야가 융화되어 발전되고 있다. 최근 컴퓨터 성능의 급속도로 발전하면서 보다 많은 화학데이터들을 처리할 수 있게 됨으로써 정보화 및 지식화 과정을 체계화하는 연구들이 등장하게 되었다. 최근에 와서 화학정보학에서는 실험실에서 얻은 실험데이터를 분석하는 것뿐만 아니라, 분자모델링을 통해서 계산으로 얻어진 화학구조의 물리화학적 특성들을 분석하는 과정들도 모두 포함하고 있다.

    <그림 1> 화학정보학에서 데이터와 정보, 지식과의 관계

    화학정보학을 통해 데이터를 기반으로 얻어진 정보와 지식은 신약설계에 중요한 역할을 한다. 특히 유기합성과 생물학적 정량(bioassay)과정과 같이 고비용이 소요되는 신약개발 과정은 화학정보학을 통한 화합물의 정보와 지식을 바탕으로 진행되어야 비용절감 뿐만 아니라 보다 넓은 범위의 영역을 효율적으로 탐색할 수 있다. 그림 2는 신약개발과정에서 유기합성과 생물학적 정량과정과 같은 현실세계와 컴퓨터 내(in silico)에서 진행되는 가상 화합물들과 검색과정과의 관계를 나타낸 것이다.

    <그림 2> 신약개발과정에서 현실과 가상세계와의 관계

    최근 신약개발 분야에서 고효율 검색(HTS) 방법과 화합물 합성을 위한 자동화시스템의 도입으로 광범위한 화합물로부터 신약후보물질을 탐색할 수 있게 되었고, 이에 적용할 화합물 군을 설계하고 결과를 분석하는 다양한 계산방법들이 속속 등장하게 되었다. 현재 이론적으로 만들 수 있는 화합물군은 1040개 이상으로 예상되며2), 이러한 화합물들을 합성 또는 천연물에서 추출하고, 생물학적 검증을 하도록 결정할 수 있는 합리적인 시스템이 필요한 것은 당연하다. 화학정보학은 이러한 면에서 화합물군에서부터 실제 신약후보 대상물질을 여과해 내고 설계하는 방법으로 사용될 수 있다.

    일반적으로 새로운 선도물질을 탐색하기 위하여 적용되는 화합물군의 다양성(diversity)은 시스템내의 지식의 양과 반비례하는 관계를 나타낸다<그림 3>. 즉 수용체에 대한 정보가 적을수록 선도물질을 찾기 위하여 다양한 화합물군이 적용되어야 하며, 이러한 면에서 신약개발을 위한 소요 경비(인력, 시간 등)가 증가하게 된다. 이런 점에서도 화학정보학은 신약설계 및 분석과정을 단계별로 데이터베이스화하고 그로부터 관련된 지식을 유도해낼 수 있는 적합한 시스템을 설계함으로써, 선도물질을 확인하고 최적화하는 과정을 수행할 수 있다. 이렇게 다양한 가능성을 지닌 화학정보학 분야 중에서 최근 개발중인 몇 가지 연구분야를 소개하고자 한다.

    <그림 3> 구조의 다양성과 지식과의 관계

    II. 주요 개발분야

    1. 구조-활성의 정량적 상관관계(QSAR) - 구조활성을 이용한 설계

    구조-활성과의 정량적 상관관계(Quantitative Structure-Activity Relation- ships, QSAR)는 화학구조에 대한 특성을 나타내는 표현자(descriptor)와 화합물의 생리 활성값과의 관계를 통계적인 방법으로 모델화하는 방법이다3). 주로 몇 가지 선도물질이 알려진 경우에 적용되며 QSAR방법에 사용되는 표현자들은 600여가지 정도로 추정된다. 이들은 대개 분자간의 상호작용이나 구조의 입체적 장애, 구조의 구성요소, 구조의 유사성 등을 표현한다. 이러한 표현자 중에서 활성의 유무에 따라 상관성을 지니는 표현자를 선택하여 모델을 세움으로써, 생리활성을 평가하지 않은 다양한 구조에 대하여 활성을 예측해 볼 수 있다. 이러한 연구는 QSAR 데이터를 바탕으로 가상적인 수용체를 만들어서 작용부위의 물리화학적 특성을 표현하기도 하며, 구조 데이터베이스를 검색하여 pharmacophore에 대한 모델을 세울 수도 있지만, 주로 선도물질을 최적화하는 과정에 널리 이용된다. 이러한 연구는 근래에 들어 3D QSAR이라는 분야로 발전되고 있으며 대표적인 방법으로 CoMFA4)(Comparative Molecular Field Analysis), RSA5)(Receptor Surface Analysis), MSA6)(Molecular Shape Analysis)등이 있다.

    <그림 4> 3D QSAR의 방법들 (A) RSA ; 가상적인 수용체의 표면을 만들어서 물리화학적 특성을 표현함.

    (B) CoMFA ; 생리활성이 높을 수 있는 치환기 부분을 장(field)으로 표현하여 선도물질을 최적화하는 방법

    2. 데이터 분석 - 화학구조 유사도를 이용한 설계

    수용체와 선도물질에 대한 정보가 없다면, 조합화학과 고효율 검색(HTS)을 통하여 먼저 선도물질을 검색하는 것이 유리하다. 검색에 사용될 화합물군(chemical library)은 정확한 설계단계를 거쳐서 구성이 되어야 하는데, 사용되는 화합물군은 구조적으로 다양하고 유사한 화합물 그룹들을 대표할 수 있어야 한다. 이러한 화합물군의 합리적인 설계는 최종적으로 유기합성과 생물학적 검증을 감소시켜 소요경비를 절감하는 효과를 얻을 수 있을 뿐만 아니라 보다 넓은 범위의 화합물들을 탐색함으로써 신약후보물질을 도출해낼 가능성도 높아지게 된다.

    가상적인 화합물군으로부터 화학구조들의 유사도와 다양성을 평가하기 위해서는 화학구조를 표현자로 전환하는 과정이 먼저 필요하다. 각각의 화학구조는 수치 값의 나열이나 벡터 또는 bit형태(0 또는 1)의 줄로 표현되고, QSAR방법에서 사용되는 표현자뿐만 아니라 화학구조를 변별하기 위하여 사용되는 다양한 표현자들이 적용된다. 이들은 크게 분자의 일부분을 수치화 하는 분자인식기술(molecular fingerprint)7)과 분자전체의 특성을 수치화 하는 총괄적 표현기술(holistic description)8)로 구분되어진다.

    과거에는 화합물들에 대하여 일부 표현자들의 수치차이로 구조 유사성을 평가하였지만, 수용체와의 3차원적인 상호작용을 인지하여 pharmacophore를 구상한 실질적인 유사도를 고려하였을 때, 상호작용과 입체성을 나타내는 다양한 표현자들로 구성한 공간상에서 유사도를 평가하여야 하는 것이 지배적인 의견이다. 특히 유사한 화학구조는 유사한 활성을 나타낼 것으로 예상되므로 유사성 구조검색과정도 화학정보학의 필수적인 연구분야이다. 유사성과 비유사성을 지닌 화합물을 설계하기 위하여 쉽게 계산되면서 명확하게 구분할 수 있는 새로운 표현자들의 개발이 필요하며 이에 대하여 많은 연구가 진행되고 있다.

    표현자들의 공간에 의해 배열된 다양한 화학구조들로부터 대표성을 지닌 화합물들을 선택하여 화합물군을 형성하는 과정도 중요하다. 선택방법으로는 군집기반 선택법(cluster-based selection)9), 분포기반 선택법(partition-based selection)10), 비유사도기반 선택법(dissimilarity-based selection)11), 최적기반 선택법(optimization-based selection)12)등이 있고, 이밖에 유사도와 선택과정을 통시에 고려하는 연구들이 진행되고 있다. 이러한 방법으로 선택된 화합물군은 또한 유기합성이 용이하여야 하고 실제 의약품으로 사용가능한 기본적인 특성을 고려하여 선택되어야 한다. 이 과정은 구조 검색과정 뿐만 아니라 실제 가상화합물군에 적용할 데이터베이스를 구축하는 과정에서도 고려되어야 한다.

    <그림 5> 화합물군 형성을 위한 선택방법. (A) 군집기반 선택법 : 유사그룹내에서의 대표가 되는 구조를 선택하는 방법 (B) 분포기반 선택법 : 일정간격의 구간 내에 존재하는 구조에서 선택하는 방법

    화학 DB의 구축과 검색엔진 그리고 이에 관련된 활용기술 개발은 화학정보학에서는 필수적인 분야다. 화학 DB는 목적에 따라 유사한 약효를 검색하기 위한 유사도 검색DB와 유기반응을 모은 합성 DB, 실험이나 계산으로 얻은 특성을 모은 물성 DB, 생물학적 검증 데이터를 모은 활성 DB 등으로 다양하게 구분된다. 이러한 화학DB는 먼저 구조활성에 관한 설계면에서는 높은 활성을 지닐 수 있는 대상화합물 그룹을 선정해주고, 유사도에 의한 설계면에서는 구조의 유사성을 통해 약효가 유사한 화합물을 제안하며, 그리고 구조에 바탕을 설계면에서는 보면 pharmacophore를 제안하며 이에 부합되는 신약후보물질을 검색할 수 있게 해준다<그림 6>. 또한 DB를 최대한으로 활용하기 위해서는 구조검색엔진의 개발이 수반되어야 하며, 일반적으로 구조검색의 경우는 정확한 구조에 대한 화학정보검색과 유사구조 검색, sub- structure검색 등으로 나누어져 개발되고 있다.

    몇 가지 공개된 DB를 소개하자면, 미국의 National Cancer Institute에서 구축한 NCI DB13)는 대략 25만건의 화합물을 포함하고 있으며 2차원 3차원 화학구조와 일부 AIDS와 암에 관한 생리 활성값을 포함하고 있다<그림 7>. NIST(National Institute of Standard Technology)에서 구축한 Webbook14)은 열역학적 데이터와 UV/VIS, IR, Mass와 같은 분석실험결과를 DB화하였으며, Cambridge Soft에서 시약 판매회사들의 카탈로그를 모아 만든 ACX15)는 20만건의 화합물과 물리화학적 물성들을 포함하고 있다.

    <그림 6> 화학 DB를 이용한 신약개발 구도

    <그림 7> NCI DB를 검색할 수 있는 검색엔진

    그밖에 X-ray crystal 구조를 모아둔 Cambridge crystallographic Data16), 상용으로 요금을 부과하는 Beilstein Abstracts17),나 Advanced Chemistry Development사의 property DB18), 그리고 MDL사19)의 ACD, MDDR, CMC, CHC, CSM 등등의 DB, ChemWeb20)의 CCD, POC, Daylight사21)의 MedChem, Maybridge, CCR, WDI등이 있다.

    3. 화학정보학에 적합한 소프트웨어 개발

    화학정보학을 위해 개발되는 많은 프로그램들은 그 프로그램을 잘 활용하기 하기 위해서는 화학정보학에 관련된 전문가적 지식을 필요로 한 것이 현실이었다. 그러나 최근에서는 의약화학을 전공한 사람들에게 쉽게 응용될 수 있는 프로그램들의 개발이 진행되어 있으며, 특히 MSI사에서 제공하는 WEBLAB22) 프로그램 시리즈가 대표적인 예라고 할 수 있다.

    인터넷이 널리 보급되어 Web을 통해서 텍스트와 이미지형태의 정보를 모두 취급할 수 있으므로 Web은 화학정보학 개발의 중요한 환경으로 자리 매김을 하고 있다. 아직 기술적으로 원하는 정보를 표현하기에는 어려운 점이 있으나, XML(extensible mark-up language)를 응용한 CML(chemical mark-up language)까지 등장하면 활기를 띄고 있는 실정이다. 또한 개발환경도 다양한 시스템환경에서 구현되는 네트워크상에서의 통합시스템으로 발전하고 있으며 visualization, simulation, application을 네트워크 내에서 동시에 수행하도록 진행되고 있다. 이러한 대표적인 예로 Chemical Computing Group사23)의 MOE(Molecular Operating Environment)를 들 수가 있겠다<그림 8>.

    <그림 8> MOE의 개발환경

    그밖에 Afferent system사, Oxford molecular사, Tripos사, Synopsys사 등에서 화학정보학에 관련된 많은 프로그램들을 개발 및 판매를 하고 있다24-27).

    III. 결 론

    지금까지 화학정보학의 필요성과 주요개발분야에 대하여 간단히 살펴보았다. 대랑 물량의 화학데이터들로부터 신약개발을 뒷받침할 지식과 정보로 전환시키는 화학정보학은 점차 급속도로 발전할 것으로 믿어 의심치 않는다. 그러나 국내에서는 아직도 이 분야에 대한 연구가 미흡할 뿐만 아니라, 화학정보학의 기초가 되는 화학데이터베이스도 제대로 구축되지 않은 형편에 있다.

    국외에서는 화학정보학의 범위가 신약선도물질을 검색하기 위하여 화학구조의 다양한 특성을 표현하는 새로운 표현자(descriptor)개발과 수용체의 구조에 기반을 둔 다양한 신약설계 정보기술, 조합화학(combinatolrial chemistry)을 위한 화합물군 설계, 구조-약효 상관관계를 이용한 신물질 탐색과정, 화학정보처리를 위한 통계적인 방법과 이를 이용한 실제적용, 화학정보를 분류-관리-분석, 그리고 시각적으로 표현하는 기술 및 이에 따른 하드웨어의 개발 등으로 점차 확산되고 있는 추세에 있으며, 다양한 분야간의 체계적인 종합학문으로 발전시키고 있다.

    지속적인 개발에도 불구하고 공동적인 문제점은 그동안 각자 연구배경이 다른 과학자들(화학, 전산학, 생물학 등등)이 서로 다른 용어와 컴퓨터 장비를 이용하여 독자적으로 진행된 부분이 많고, 탐색에 사용되는 화학데이터들의 표준이 명확하게 결정되어 있지 않기 때문에 연구교류를 통하여 발전을 방해하는 것이다. 이러한 면에서 우선적으로 이러한 문제를 해결해 나감으로써 학제간 연구의 기틀을 마련하는 것이 시급하다고 하겠다.

    IV. 참고문헌

    1) a) Brown, F. K. "Chemoinformatics: What is it and how does it impact drug discovery" Annu. Rep. Med. Chem. 1998, 33, pp 375-384. b) Hann, M. and Green, R. " Chemoinformatics - a new name for an old problem?" Curr. Opi. in Chem. Bio. 1999, 3, pp379-383.

    2) Martin, Y. C. "Challenges and prospects for computational aids to molecular diversity" Perspect. Drug Discov. Des. 1997, 7/8, pp159-172.

    3) Katiritzky, A. R. ; Lovanov, V. S.; Karelson, M. Chem. Soc. Rev. 1995, 24, pp 279-287.

    4) Cramer, R. D., III; Patterson, D. E.; Bunce, J. D. "Comparative molecular field analysis (CoMFA). 1. Effect of shape on binding of steroids to carrier proteins J. Am. Chem. Soc. 1988, 110, pp 5959-5967.

    5) Hahn, M., "Receptor surface models: 1. Definition and construction", J. Med. Chem., 1995, 38, pp 2080-2090.

    6) Tokarski, J. S. and Hopfinger, A. J. "Three-Dimensional Molecular Shape Analysis- Quantitative Structure-Activity Relationship of a Series of Cholecystokinin-A Receptor Anatagonists", J. Med. Chem. 1994, 37, pp 3639-3654.

    7)Bayado, D. M.; Hamersma, H. van Geerestein, V. J. "Molecular diversity and representativity in chemical database", J. Chem. Inform. Comput. Sci. 1999, 39, pp 1-10.

    8) Lewis, R. A.; Mason, J. S.; McLay, I. M. "Similarity measures for rational set selection and analysis of combinational libraries: the Diverse Property-Derived(DPD) approach", J. Chem. Inform. Comput. Sci. 1997, 37, pp 599.

    9) Willett, P.; Barnard, J. M.; Downs, G. M. "Chemical similarity searching" J. Chem. Inform. Comput. Sci. 1998, 38, pp 983-996.

    10) Pearlman, R. S.; Smith, K. M. "Novel software tools for chemical diversity", Perspect. Drug Discov. Des. 1998, 9/10/11, pp 339-359.

    11) Lajiness, M. S. "Dissimilarity-based compound selection techniques", Perspect. Drug Discov. Des. 1997, 7/8, pp 65-84.

    12) Mount, J.; Ruppert, J.; Welch, W.; Jain, A. N. "IcePick: a flexible surface based system for molecular diversity", J. Med. Chem. 1999, 42, pp 60-66.

    13) NCI 3D

    14) NIST Webbook

    15) Cambridge Soft ACX

    16) Cambridge crystallographic Data

    17) Beilstein Abstracts

    18) Advanced Chemistry Development Inc

    19) Molecular Design Limited Informational Systems Inc

    20) ChemWeb

    21) Daylight Chemical Information Systems Inc

    22) Molecular Simulations Inc, Weblab.

    23) Chemical Computing Group Inc.

    24) Afferent Systems Inc.

    25) Oxford Molecular Inc.

    26) Tripos Inc.

    27) Synopsys Scienctific Systems

    .

2007년 6월 14일 목요일

[본문스크랩] 3.라플라스 변환 및 전달함수



라플라스 변환 자체는 자주 사용되지는 않지만 복소영역의 대변자 역할로서 라플라스 변수(s)에 대한 부분은 전강좌에 걸쳐 나타나므로 꼭 기억해야 합니다.




변환(Transform) 종류들은 대개 한 영역에서 해석하기 어려울 때 다른 영역에서 쉽게 풀어 원래의 영역으로 되돌아 오기 위한 수단으로 많이 쓰입니다.
즉, 상기의 특징 중 첫번째처럼 미분방정식을 라플라스 변환을 하면 대수방정식으로 바뀌고 이를 푼 다음, 역라플라스 변환을 하여 원미분방정식을 풀 수 있는 것입니다.

기타 완화된(초기조건 = 0) LTI시스템의 출력/입력을 전달함수로 정의 함으로써 동적시스템의 기본적 모델을 만들 수 있습니다.

아래의 식들은 제어공학에서 자주 사용하는 라플라스 변환의 예이므로 반드시 숙지하도록 하세요.




마지막 시간추이 부분의 1(t - T)T초의 시간지연을 갖는 계단함수를 표현한 것입니다.
교재에 따라 u(t - T)와 같이 표시한 곳도 있으나 본 강좌에서는 입력에 대한 변수로서 u(t)를 사용하기 때문에 위와 같은 Convention을 따랐습니다.


아래 함수들의 라플라스 변환 또한 제어공학에서 자주 사용되는 예입니다.
많은 부분들은 테이블화 되어 있지만 앞장의 함수들과 함께 숙지 되어야 할 기본적인 변환 예이며 MATLAB의 Symbolic Math Toolbox를 이용하여 라플라스 변환을 수행한 예를 보인 것입니다.







전달함수의 일반적인 정의는 정의2와 같으며 정의2의 입력을 임펄스로 하면 결국 정의1과 같은 꼴입니다.
정의1의 경우, 임의의 시스템(블랙박스)에 임펄스를 가하면 그 출력은 시스템의 시간영역 특성과 일치하므로 시스템의 특성을 알기 위한 방편이기도 합니다.

그러나, 0부터 무한대의 주파수를 포함하는 임펄스입력은 무한소의 시간에 무한대의 크기를 가지는 입력을 주어야 하므로 실험적 구현이 어렵기 때문에 통상 백색잡음을 입력으로 하여 시스템 특성을 실험적으로 구하는 방법을 택합니다.


블록선도의 외형적 기능은 전달함수의 시각화가 그 주된 기능이며, 내재적으로는 블록연산을 통해 단순화를 꾀할 수 있습니다.

익히 알고 있는 신호흐름선도나 본드그래프 등도 해당 선도의 연산기능을 가지고 있기 때문에 유용한 것입니다.
만약, 단순화 기능이 없다면 단지, 표현상의 모양디자인에 불과할 것입니다.

[본문스크랩] jpeg과 JFIF

http://web.usxchange.net/elmo/jpeg.htm

jpeg 압축

JPEG과 JFIF

JPEG은 "Joint Photographic expert group"의 머리글자어(acronym)이고, JFIF는
"JPEG File Interchange Format"의 머리글자어이다. 우리가 보통 생활에서
jpeg화일을 말할때는 보통 JFIF파일을 일컫는 것이다. 만약에 여러분이
어떤 jpeg 화일을 memory dump해 보면 jpeg화일안에는 JFIF글자가 7번째
글자부터
있음을 알 것이다. TFIF는 jpeg압축 알고리즘을 사용한다. 여기서는 우리는
JFIF
화일에 대해서만 다루겠다.

jpeg 포맷에 대한 설명들은 인터넷에 별로 많이 없는 것 같다. jfif포맷에 대한
정보는 "C-cube microsystems, inc. spec"에는 jfif포맷에 대한 정보들이
많이 있는 것 같은데, 그런데 그 정보들은 jjfif에 대한 특별한 요구사항만을
기술한 것이고, 그리고 독자들은 이미 jpeg에 대한 specs들을 이미
알고 있다고 한 듯하다. 그리고 그곳에는 jpeg압축 알고리즘에 대한 이야기도
많이
있는데, 그러나 program을 할 수 있을 정도로 자세하게 설명하지는 않았다.

여러분은 "Independent JPEG Group"에서 만든 source코드로부터
jpeg에 대해서 공부할 수도 있겠지만, 그러나 그 코드는 "여러가지
platform"에서도 돌아가도록, 그리고 "최상으로 돌아가도록" 프로그램이
짜져 있어서, 그 프로그램을 분석하는데는 상당한 어려움이 있을 것이다.


jpeg에 대한 ISO규격들은 online으로 얻을 수 있다. 얻고자 하면
"Independent JPEG group information"에서 얻기 바란다.

난 ISO규격을 사지 않았다. 난 나의 대부분의 정보를 미국 국방부(DoOD)의
"National Imagery Transmission Format Standard(NITFS)"의 MIL-STD-188-198A
로부터 얻었다. 이 표준은 비록 JFIF랑은 같지 않지만, 그러나 jpeg의 압축과
복원에 대한 상당한 설명을 해주고 있다.

그리고 또 유용했던 논문은 Gregory K. Wallace가 쓴, "The JPEG still
Picture Compression Standard"라는 논문이 있다.




손실 압축

jpeg압축은 GIF, BMP, RLE, pkzip과 같은 압축과는 본질적으로 다른 면이
있다. 그런 압축방법들은 압축과 복원 과정에서 손실이 발생시키지
않고, 그리고 그 방법들은 "정보의 반복됨"을 이용하여 압축효과를
얻는 방법이다. jpeg은 연속적인 이미지, 예를들어 사진 같은 것을
압축하는데 쓰이는 방법이다. 이들 이미지들은 "정보의 반복됨"이 그리 많지
않아서 그 "정보의 반복됨"을 이용하여 압축을 할려고 하면 별로 좋은
결과를 얻지 못한다. 그래서 jpeg은 주어진 정보 중에서 압축전에 정보를
버리는데, 바로 이 때문에 JPEG은 "압축과 복원"을 거치면 손실이 발생한다.
이때문에 jpeg은 "손실 압축"이다. 이런 손실압축이 별로 마음에 안들지
모르지만
사진이라는 것에는 없애버려도 우리 인간이 알아챌 수 없는 그런 정보가
상당하기 때문에, 이런 정보를 버릴 수가 있다. 또 GIF와 8 bit BMP화일들은
256가지 색깔밖에 나타낼 수 없는데, jpeg은 항상 24비트이고ㅡ 그래서 대략
16.8백만 색깔을 표시할 수 있다는 것을 생각해 보자. jpeg이 별로 성능을
발휘할 수 없는 분야가 있다면, 그것은 "이미지 편집"의 분야일 것이다.
이미지를 편집할때는 이미지가 수시로 변경되고 수시로 압축되고 수시로
저장되어야 하기 때문이다. 압축을 할때마다 이미지 손실이 발생하기 때문이다.
마치 녹음된 오디오 테입으로 또다시 녹음을 하는 과정을 계속할때처럼...



색깔 세계

..........빨강
..........|
..........|
..........|
..........|
........../---------녹색
......../
....../
..../파랑

VGA카드는 빨강, 파랑, 녹색의 세 색깔의 강도를 조절함으로써 여러가지 색깔을
표시할 수 있다. 세 색깔축이 x, y, z좌표계의 축을 형성한다. 그러면
좌표에서 한점은 한 색깔을 나타낸다. 그런데 한 색깔을 나타낼려면 꼭
이처럼 (빨강, 파랑, 녹색) 쌍 방식으로만 할 수 있는 것은 아니다.
회색의 경우 빨강, 파랑, 녹색의 강도를 모두 같게해서 만들 수 잇다.

우리는 (빨강, 파랑, 녹색)의 값이 모두 같은 값을 갖는 x=y=z인 새로운 축을
생각할 수 있다.

..........빨강
..........| /
..........| /
..........| /
..........| /
........../---------녹색
......../
....../
..../파랑

이 축을 광도(luminance)라고 부를 수 있다. 그리고 우리는 이 광도에서 빨강과
파랑성분을 빼서(subtracting), 두 새로운 축을 만들어 낼 수가 있다.
이 두 새로운 축을 "빨강 색도(red chrominance)", "파랑 색도(blue
chrominance)"라고 한다. 광도는 Y로 표시하고, 파랑색도는 U, 빨강색도는
V로 표시한다. 이 새로운 세 축은 jpeg 이미지 파일에서 사용되는 세 성분이
된다. (빨강, 파랑, 녹색)의 색깔체계와 (광도, 빨강색도, 파랑색도) 사이의
색갈 변환은 다음의 식으로 가능하다.


Y = 0.299 R + 0.587 G + 0.114 B
U = -0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128

R = Y + 1.402 (V-128)
G = Y - 0.34414 (U-128) - 0.71414 (V-128)
B = Y + 1.772 (U-128)

(RGB포맷에서는 R, G, B가 모두 양수값을 갖고 또 0에서 255 사이값만을 갖는
다는 것에 주위해야 한다)

YUV 포맷을 사용하는데는 이유가 있다. 인간의 눈은 색도(chrominance) 보다는
광도(luminance)에 훨씬 더 민감하게 반응하기 때문이다. 대개의 경우 jpeg은
압축전에 색도정보의 3/4를 버린다. 이렇게 버리면 이미지의 정보의 양은
1/2로 줄어든다. 예를들어 4개의 픽셀을 생각해 보자. 4개의 픽셀의 색깔성분은
원래 4 * 3 = 13개 였으나, 색도성분의 3/4를 버리면... 1 * 4 +
2 * 1 = 6개의 성분만이 남게 된다.


Data Unit과 Minimum Coded Units.


jpeg에는 2가지 데이타 유닛(data unit)이 있다. 기본 데이터 유닛은 8x8
블락이다. 이 데이타 유닛의 data들은 Y, U, V중에서 한가지 색깔만을
나타낸다.

jpeg은 위에서도 말했듯이 압축전에 색도 성분의 3/4를 버린다. jpeg 헤더에는
각각의 색깔성분에 대한 "수평 sample factor"와 "수직 sample factor"의
값을 가지고 있다. Y색깔은 최대한으로 sampling한다. 즉 각각의 픽셀에는
항상 Y가 존재한다. 값을 가지고 있다. 대개의 경우, (항상 그런 것은
아니지만), Y색깔의 "수평/수직 sample factor"는 2이고, 색도성분들에 대한
"수평/수직 sample factor"들은 1이다. 이경우 4개의 픽셀은 Y성분 4개,
(아래 그림처럼) U성분 1개, V성분 1개로 sampling된다.

+-------+-------+
| Y | Y |
| ____|___ |
| | | |
+---+U V +---+
||_______| |
|Y | Y |
+-------+-------+

"수평/수직 sample factor"중에서 제일 큰 값들이, Minumum Coded Unit(MCU)의
"폭/높이"가 된다.

위의 그림의 경우, MCU는 2개의 8x8 블락 높이에, 2개의 8xb 블락 폭으로
구성되어, 전체 4개의 8x8 블락으로 구성된다. 이 블락들은 화일에 Y성분들을
모두 저장하고, 그다음 U성분을 저장하고, 그다음 V성분을 저장한다. 이경우
MCU하나는 4개의 Y 8x8블락, 1개의 U 8x8 블락, 1개의 V 8x8블락을 포함하게
된다.

DOD의 NITFS문서는 다음과 같이 말하고 있다.

---------

"압축프로세서는 이미지의 오른쪽, 바닥쪽에 샘플을 넣어서 블락의 숫자가
"정수"가 되도록 하여야 한다. 만약에 이미지가 충분한 데이터가 없어서
이미지 오른쪽과 아래쪽에 8x8 블락을 만들 수가 없을 때는, 이미지
오른쪽에서는
가장 오른쪽값들을 오른쪽으로 계속 반복시키고, 이미지 아랫쪽에서는
가장 아랫쪽값들을 아래쪽으로 계속 반복시켜야 한다. 이미지를 복원시킬때는
header로부터 이런 여분의 샘플값들이 있다는 것을 알아내서 인위적으로
첨가시킨 이 샘플들을 지워야 한다."

---------

(가로가 150픽셀인 그림을 생각해 보자. 19 x 8 = 152이므로 만약에 위의 말이
맞다면 그림의 폭은 152가 되어야 말이 맞을 것이다. 그렇지만 152를 넓이로
해서 그 그림을 display할려고 하면 픽셀들이 깨졌다. 만약에 MCU의 정수배인
16 x 10 = 160을 사용해서 해보았더니 그림이 제대로 나왔다. 이것을 보면
정수배가 되어야 하는 것은 "블락크기"가 아니고, "MCU의 크기"였던 것 같다)




Discrete Cosine Transform

JPEG압축의 기본 아이디어는 공학에서 나온 것이다. 전기신호나 음파신호는
시간에 따라 진동하는 값으로 생각할 수 있다. 평면에 그려진 그림은
각각의 색깔성분이 x축과 y축에 따라 변화하는 것으로 생각할 수 있다.
Fast Fourier Transform(FFT)이랑 닮은 DCT는 이미지의 품질에는
별 영향을 미치지 못하는, 이미지의 "높은 주파수 정보"를 버리는데
사용된다. 여기서 주파수라는 것은 "시간상의 주파수"가 아니고 "공간상의
주파수"를 말한다.

64개의 data값이 있는 8x8블락 f(x, y)를 생각해보자. Forward DCT를 사용하면
프랜스폼된 F(x, y)를 얻을 수 있다. 그후 Inverse DCT를 사용하면 F(x,
y)로부터
fx, y)를 얻을 수가 있다. 이들 트랜스폼 공식은 다음과 같다.


7 7 [(2x+1)up] [(2y+1)vp]
F(u, v) = 1/4 C(u)C(v) Sigma Sigma f(x, y) cos[--------]cos[--------]
x=0 y=0 [ 16 ] [ 16 ]

7 7 [(2x+1)up] [(2y+1)vp]
f(x, y) = 1/4 Sigma Sigma C(u)C(v) F(u, v)cos[--------]*cos[--------]
u=0 v=0 [ 16 ] [ 16 ]


(여기서 u=0이면 C(u) = 1/sqrt(2)이고 u != 0이면 C(u) = 1)


이론적으로 이 트랜스폼에서는 정보손실이 일어나지 않는다. 그러나 실제로는
실수값이란게 정확하게 저장될 수 없다보니 항상 어느정도 손실이 일어난다.

위의 방정식들은 삼각함수와 수학함수를 써서 쉽게 프로그램할 수 있다.
그렇지만 위의 알고리즘을 수식 그대로 프로그램하면 위의 계산이 느려터져
실제적으로 사용할 수 없을 것이다.

복원시에는 IDCT를 하여야 하는데, Independent JPEG Group의 source에는
3가지 방식을 제공해주고 있다. 그 source 화일은 각각 jidctflt.c
jidctfst.c jidctint.c이다.






JPEG 압축


위에서 말했듯이 이미지는 8x8블락으로 조각내고, 각각의 8x8블락들이
모여 MCU(Minumum Coded UNIT)을 이룬다. 이미지는 MCU단위로 처리된다.
MCU내에서는 각각의 색깔들은 차레대로 8x8단위로 처리된다. Y성분이 처리되면
U가 처리되고, 그다음에는 V가 처리된다.


다음은 8x8블락을 압축하는 과정이다.

1. block의 각 값들을 shift한다.

2. block을 FDCT한다.

3. Quantize한다.

4. Subtract the last DC coefficient from the current DC coefficient

5. Zigzag the block

6. Zero run length encode the block

7. Break down the non-zero coefficients into variable-length binary
numbers & their lengths

8. Entropy encode the run lengths & binary number lengths

9. Write the entropy encoded information & binary numbers to the output


구체적으로 설명해 보면...


118 91 123 125 124 114 117 104
100 93 88 85 87 100 115 105
94 101 78 99 112 87 109 115
104 82 83 78 92 118 124 88
119 93 99 104 76 111 86 112
83 119 104 92 111 76 112 100
97 85 90 100 106 125 123 86
99 86 85 105 81 99 115 119

위의 주어진 data가 있을때

1. 위의 data가 0에서 255사이값을 갖으므로, 128을 빼서 -128에서 127값을
갖게한다. 이렇게하여 FDCT를 거치면 64개 값의 평균값은 DC성분으로 나올
것이다. 다음은 128을 뺀 값이다.

-10 -37 -5 -3 -4 -14 -11 -24
-28 -35 -40 -43 -41 -28 -13 -23
-34 -27 -50 -29 -16 -41 -19 -13
-24 -46 -45 -50 -36 -10 -4 -40
-9 -35 -29 -24 -52 -17 -42 -16
-45 -9 -24 -36 -17 -52 -16 -28
-31 -43 -38 -28 -22 -3 -5 -42
-29 -42 -43 -23 -47 -29 -13 -9

2. FDCT를 한다. 다음은 FDCT를 한 결과이다. 맨왼쪽 맨위쪽의 -217은 주파수가
0인 성분, 즉 DC성분이다. 나머지들은 모두 AC성분들이다.

-217.625 -32.686 15.582 16.972 -1.376 21.802 -7.132 2.729
15.022 5.594 -3.423 3.416 7.983 -1.074 3.717 10.550
21.737 -8.150 -13.483 -6.075 6.168 13.366 -0.490 3.289
23.404 24.748 -19.724 -10.992 -5.045 -3.321 7.425 9.585
12.124 4.600 4.754 4.605 6.875 20.625 30.096 -12.687
14.610 -9.347 -27.242 27.260 -9.347 7.631 -4.987 14.890
10.343 6.876 -4.990 -29.439 16.523 -18.653 -24.266 11.388
13.292 6.131 -5.968 -2.067 20.673 1.179 14.921 -16.733



3. 다음에는 quantization table을 사용해서 quantize한다. 여기서
quantization
이란 각각의 DC, AC성분 값들을 어떤 값으로 나눈다음, 정수화하는 것을
말한다.
quantization table은 각각의 성분들이 얼마나 중요하느냐에 따라 정해진다.
quantization을 심하게 하면 이미지 품질이 떨어지고, quantization을 약하게
하면 압축능률이 떨어진다. 이 quantization table은 jpeg file의 헤더에
들어가 있어, decompressor는 이미지를 복원시에는 각각의 계수를 이
quantization table값으로 곱할 것이다.


8 6 6 7 6 5 8 7
7 7 9 9 8 10 12 20
13 12 11 11 12 25 18 19
15 20 29 26 31 30 29 26
28 28 32 36 46 39 32 34
44 35 28 28 40 55 41 44
48 49 52 52 52 31 39 57
61 56 50 60 46 51 52 50

Quantization Table

위와 같은 quantization table을 사용하여 quantization을 하면

-27 -5 2 2 0 4 0 0
2 0 0 0 0 0 0 0
1 0 -1 0 0 0 0 0
1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

가 된다.



4. 그 다음에는 DC성분을 "바로전의 블락의 DC"성분값으로 뺀다(subtract).
지금
계산하고 있는 블락이 이미지의 첫 블락인 경우에는 "바로전의 블락"이라는
것이 없으므로 0을 뺀다. DC성분의 값들이란 것이 보통 값이 크기 때문에
"현재값과 이전값의 차이를 코딩하는" ADPCM처럼 DC의 차이값을 저장하여
값의 크기를 줄이려는 것이다.


5. 그 다음에는 다음의 그림처럼 zigzag식으로 순서를 매긴다.

+----+----+----+----+----+----+----+----+
| 0 | 1 |5 |6 | 14 | 15 | 27 | 28 |
+----+----+----+----+----+----+----+----+
| 2 | 4 | 7 |13 | 16 | 26 | 29 | 42 |
+----+----+----+----+----+----+----+----+
| 3 | 8 | 12 | 17 | 25 | 30 | 41 | 43 |
+----+----+----+----+----+----+----+----+
|9 | 11 | 18 | 24 | 31 | 40 | 44 | 53 |
+----+----+----+----+----+----+----+----+
| 10 | 19 | 23 | 32 | 39 | 45 | 52 | 54 |
+----+----+----+----+----+----+----+----+
| 20 | 22 | 33 | 38 | 46 | 51 | 55 | 60 |
+----+----+----+----+----+----+----+----+
| 21 | 34 | 37 | 47 | 50 | 56 | 59 | 61 |
+----+----+----+----+----+----+----+----+
| 35 | 36 | 48 | 49 | 57 | 58 | 62 | 63 |
+----+----+----+----+----+----+----+----+

그럼 블락은


-27 -5 2 1 0 2 2 0
0 1 0 1 -1 0 0 4
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

처럼 된다.

그 다음에는 다음처럼 "zero run length encoding"(zero 데이터가 몇번 나왔고
어떤 데이터가 몇번 나왔고... 하는 방법으로 encoding하는 방법)을 한다.

-27 0 -5 0 2 0 1 1 2 0 2
2 1 1 1 0 -1 2 4 0 0

위의 숫자들은 다음을 뜻한다.


1. DC성분은 -27이다.
2. AC성분 0이 0개 이후에는, AC성분 -5가 온다.
3. AC성분 0이 0개 이후에는, AC성분 2가 온다.
4. AC성분 0이 0개 이후에는, AC성분 1가 온다.
5. AC성분 0이 1개 이후에는, AC성분 2가 온다.
6. AC성분 0이 0개 이후에는, AC성분 2가 온다.
7. AC성분 0이 2개 이후에는, AC성분 1가 온다.
8. AC성분 0이 1개 이후에는, AC성분 1가 온다.
9. AC성분 0이 0개 이후에는, AC성분 -1가 온다.
10. AC성분 0이 2개 이후에는, AC성분 4가 온다.
11. 나머지 AC성분들은 모두 0이다.


6. 그다음에는 "run length encoding"되어 나온 계수들(-5, 2, 1, 2, 2, 1
등등)은 "가변 길이의, 즉 길이가 정해지지 않는" 이진 숫자들로 변환과정을
거친다. 다시 말하면, 이들 계수 c는 다음처럼 변환된다.

c가 0보다 크면 첫번째 비트는 '1'이고, 우리가 아는 이진숫자의 형태를
갖는다.
예를들어 5인 경우 101으로 된다.

c가 0보다 작으면, c 첫번째 비트는 '0'이다.(음수의 경우 "1의 보수"와 상관이
있음을 알 수 있을 것이다)


-17 01110
-16 01111
-15 0000
-14 0001
-13 0010
-12 0011
-11 0100
-10 0101
-9 0110
-8 0111
-7 000
-6 001
-5 010
-4 011
-3 00
-2 01
-1 0
0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
16 10000

[table_1]

위의 변환테이블처럼 변환된다.

복원과정은 "양수"인 경우는 신경을 안써도 되고, 음수인 경우는 (-14였던
0001의 경우...)

(a) 0001에 1을 더한다. 그러면 0010이 된다.
(b) 0010앞에 1을 앞쪽에 padding시킨다. 그러면 11110010이 된다.
(c) 11110010은 0xf2가 되어 unsigned char인 경우, -14가 된다.




8. 위의 "bitstring 계수"들의 비트 갯수들은 "zero run length"와 결합된다.
윗쪽 바이트(즉 0xf0의 위치에 있는 곳)는 "zero run length,
즉 0의 반복횟수"를 나타내고, 아랫쪽 바이트(즉 0x0f의 위치에 있는 곳)은
bitstring된 AC계수의 비트의 갯수를 나타낸다.


특별히 신경써야 하는 부분도 있는데,

(a) "zero run length"와 "bitstring의 길이"가 모두 0인 경우에는, 그 다음
나머지 모든 AC계수가 0이라는 것을 나타낸다.

(b) "zero run length"가 15이고, "bitstring의 길이"가 0인 경우에는,
"zero run length"가 16이라는 의미이다.


결국
(a) "(아까 설명한 대로 ADPCM처럼 변환되었던) DC성분의 길이"와
(b) "zero run length" + "bitstring의 길이"
가 entropy encoding된다.

entropy encoding이란 "자주 반복하는 데이터"에게는
짧은 비트열을, "자주 등장하지 않는 데이터에게는" 긴 비트열을 할당해서
인코딩하는 방법이다. JFIF에서는 entropy coding방법으로 Huffman코딩 방식을
사용한다.

Huffman coding방법이라는 것은, 어떤 데이터 집합과 그리고 그 데이터들의
각각의 출현확률이 정해져 있을때, 각 데이타 당 필요로 하는 비트 숫자를
최소화할 수 있는 code set을 찾는 방법이다.


huffman(x)를 x를 huffman coding시킨 bitstring을 나타낸다고 하고,
table_1(x)을 [table_1]을 통해 얻은 bitstring을 나타낸다고 하고,
bit_length(x)을 x라는 bitstring의 길이를 나타낸다고 하면,


결국

=======
-27 0 -5 0 2 0 1 1 2 0 2
2 1 1 1 0 -1 2 4 0 0
=======


huffman(bit_length(-27),
table_1(-27),

huffman((0 << 4) + bit_length(table_1(-5))),
table_1(-5),
huffman((0 << 4) + bit_length(table_1(2))),
table_1(2),
huffman((0 << 4) + bit_length(table_1(1))),
table_1(1),
huffman((1 << 4) + bit_length(table_1(2))),
table_1(2),
huffman((0 << 4) + bit_length(table_1(2))),
table_1(2),

huffman((2 << 4) + bit_length(table_1(1))),
table_1(1),
huffman((1 << 4) + bit_length(table_1(1))),
table_1(1),
huffman((0 << 4) + bit_length(table_1(-1))),
table_1(-1),
huffman((2 << 4) + bit_length(table_1(4))),
table_1(4),
huffman((0 << 4) + 0);

의 순서대로 저장될 것이다.

[본문스크랩] Laplace & Fourier

라플라스변환을 이해하시려면 먼저 푸리에변환을 이해하시는 것이 우선일듯 싶네여.... 주로 고등학교에서도 어느 정도 다루는 테일러급수를 이해하신다면 푸리에변환도 어느정도 이해하실수 있으시리라 생각됩니다. 즉 모든 함수는 기본함수(basic function)의 선형 결합으로 근사화될수 있다는 이론에서 출발한것이 푸리에급수 전개이구요(단 여기서는 기본 함수로 complex exponentioal 함수를 쓰죠^^) 그런 전개를 이산 시간 함수에 적용한것이 푸리에 변환입니다. 라플라스 변환은 푸리에 변환이 exponential 함수의 index가 순허수에서 복소수로 바뀐 형태입니다. 먼저 라플라스변환에 익숙하시려면 물리적인 개념보다는 수식적인 공식에 익숙하시는 것이 우선이 될거 같습니다. 라플라스 변환에 대한 정의식부터 여러가지 함수의 라플라스 변환의 공식들은 시중에 나와있는 공업수학책(대표적인것으로 kreyszig의 책을 보시면 무난할 듯 싶네여)을 보면 상세히 나와있습니다.
라플라스 변환의 의미는 제가 공학도이기 때문에 공학적인 측면에서만 말씀드리면 먼저 공정 제어나 신호 처리, 그리고 복잡한 회로를 해석하는데 쓰입니다. 앞선 분이 말씀하셨듯이 라플라스 변환이라고 하는것은 우리가 함수를 보는 축을 변환시키는 것과 같은것이거든요... 예를 들면 시간 도메인에서 굉장히 복잡한 함수가 주파수 도메인에서는 단순한 선형 함수의 형태로 나타나는 경우도 굉장히 많습니다. 또한 신호 해석의 경우에서 시간 함수의 형태로 주어진 신호를 convolution 하여 결과를 얻는 것은 굉장히 복잡한 프로세스를 동반하지만 이를 각각 라플라스 변환을 하여 단순히 곱하여 그 결과를 역 변환시키면 원래의 결과를 쉽게 얻을 수도 있습니다. 최근에 각광받고 있는 영상처리나 음성처리의 기본 원리에서도 이러한 기법이 마니 사용되고 있습니다. 그리고 공업 수학책을 보시면 금방 아시겠지만 복잡한 형태의 미분 방정식을 푸는데도 라플라스 변환은 유용하게 쓰일 수 있습니다. 우리가 사는 물리계의 많은 현상들이 미분 방정식으로 해석될 수 있다는 생각을 한다면 이런 라플라스 변환의 효용성을 쉽게 알수 있으리라 생각됩니다.
결론적으로 말씀드리면 라플라스 변환은 기존의 함수 해석의 관점을 새로이 하는 것이고 익숙한 것으로 비유하자면 고등학교 수학에 나오는 일대일대응이나 좌표계의 변환과 그 원리가 같습니다. 다만 그 변환식이 조금 복잡하고 전혀 다른 형태의 좌표로의 변환이라는 것만 빼고요...

라플라스 변환은 프랑스의 라플라스(Laplace)가 고안한 변환 방법입니다.

우선 형식은 적분 식의 형태를 띠죠.

이 식은 원래 t에 대한 함수를 s에 대한 함수로 바꿔주는 변환인데요, 이 변환은 exponential 함수를 앞에 곱해준 다음 적분하여 변환을 해 준다는 것을 알 수 있습니다.

다시 말해서 f(t)로 표시된 어떤 데이터 또는 그래프가 위 적분을 시행하면, 좀 더 간단한 형태 (sine함수에 대하여 적분해보면 알 수 있음.)로 바꾸어주어서, 해석을 좀 더 간편하게 하기 위해 고안된 변환입니다.

여기서 t, s는 서로 다른 변수를 나타내며, 주로 각각 시간과 진동수를 나타내어, 파동의 해석을 목적으로 쓰이죠.

그리고 f(t)를 F(s)로 바꾸는 변환을 시행할 수도 있지만, 역으로 변환을 취하는 경우도 있습니다. 이것은 t에 대한 함수로 바꾸면 자기가 원하는 데이터를 좀 더 쉽게 얻을 수 있는 경우겠죠.

같은 목적으로 고안된 변환 중에 Fourier 변환이라는 것이 있습니다. 이 변환은 여러 가지 진동수의 조합으로 된 복잡한 파동을 어떤 진동수의 조합으로 이루어졌는지 명확하게 조사할 수 있도록 해주는 변환입니다.

정리하면, 라플라스 변환은 데이터 해석의 편의를 위하여 고안된 변환입니다

푸리에 변환은 라플라스변환에서 s대신 (시그마)+jw 를 대입한 특수한 경우죠.

라플라스 변환과 푸리에 변환은 비슷한 형태를 취하는데 엄밀히 따지면 라플라스 변환은 주파수 영역이 아닌 s영역에서의 해석입니다.

Transform (변환)을 하는 이유는 어떠한 시스템의 전달함수를 얻기 힘들때 쉽게 얻을수 있도록 도움을 얻기위해 하는것이 보통인데 라플라스 변환과 푸리에 변환을 함으로서 그 목적을 달성할 수 있습니다.

라플라스변환이 아날로그 시스템의 해석에 쓰였다면 푸리에변환은 그 중요성이 말로 형용할 수 없을 정도로 위대한 변환이죠.

푸리에변환은 어떠한 함수가 주기적이면 푸리에급수로, 비주기적이면 푸리에변환으로 해석하는데 변환전의 함수가 시간(t)의 함수로 나타난다면 변환후의 함수는 주파수(w or f)의 함수로 나타나게되죠.

어떤함수가 시간을 변수로 가지는(시간의 변화에따라 값이 변하는) 함수라면 이는 시간영역의 함수이며 그 함수를 변환하여 주파수를 변수로 가지는(즉, 주파수의 변화에 따른) 함수이면 이는 주파수 영역의 함수입니다.

푸리에 변환전의 함수가 f(t) 라 한다면 변환후의 함수는 F(f) 라 표기할텐데 앞의 t는 시간영역의 함수라는 뜻이고 뒤의 대문자F는 변환된 함수, 소문자f는 주파수의 함수라는 뜻입니다.

변환을 해보면 정말로 주파수 함수가 됨을 알수 있고 이를 이용하면 analysis(해석)을 쉽게할수 있는 경우가 아주많죠.

푸리에는 공학도라면 누구나 한번쯤 도대체 어떻게 이런생각을 해냈을까 하고 감탄하게 만드는 업적을 가진 위대한 학자겠죠.

푸리에 변환과 라플라스 변환.. 비슷하지요..

우선 라플라스변환(앞으로 인티그럴 -무한대 ~ +무한대는 생략해서 ∫만 쓰겠습니다)

L[f(t)] = ∫ f(t) e^(-st) dt = F(s)

위 식은, 시간 t에 대한 함수 f(t)를 라플라스 변환 한것을 나타냅니다.

제일 좌변의 뜻은 f(t)를 라플라스 변환하겠습니다.

가운데는, 라플라스 변환하는 과정이지요.. 원래함수에 지수함수 e^(-st)를 곱해서 -무한대~무한대의 범위까지에서 시간에 대해 적분한것입니다.

우변의 뜻은 f(t)가 변환후에는 F(s)가 되었다는 겁니다.

잘 보시면, 변환전에는 시간t의 함수인데, 변환후에는 s에 대한 함수가 된 것을 알 수 있을겁니다. 즉 축이 변환되었다는 뜻입니다.

그럼 s가 무엇인지 알아야겠지요?

s는 복소변수(Complex variable)를 나타냅니다. 즉, 실수부와 허수부가 있는 복소수라는 뜻이지요..

수식으로 표현하면 s = σ + jω ( 고등학교때는 허수단위를 i로 쓰지만, 전기전자공학에서는 전류i와 구분해서 허수단위를 j로 씁니다. 즉 s= a + bi로 해도 같은뜻이겠지요?)


라플라스변환의 설명이 잘 되었는지 모르겠네요.. 자세한건 교재를 참고하시고 그럼 푸리에 변환입니다.

처음 함수 f(t)를 라플라스 변환하면

L[f(t)] = ∫ f(t) e^(-st) dt = F(s) 에서..

s = σ + jω (복소수)였으므로..

L[f(t)] = ∫ f(t) e^(-(σ + jω)t) dt = F(σ + jω) 로 쓸 수 있겠지요?

s를 σ + jω로 바꿨을 뿐입니다.


이때 복소수 s에서, σ = 0이라면, s = jω즉 실수부는 0이고, 허수부만 남았다고 할 때.

L[f(t)] = ∫ f(t) e^(-jωt) dt = F(jω)

여기까지 이해되셨나요?

그럼 위식의 가운데 부분을 잘 보세요..
푸리에 변환 공식과 같다는걸 알 수 있을겁니다.


느닷없이 왜 라플라스변환이 퓨리에 변환이 되었냐면..
라플라스 변환결과는 복소수 전체를 대상으로 하지만, 푸리에변환은 실수부가 0이되는경우, 즉 허수부분만 고려할 때의 결과입니다.

간단히 설명하면 푸리에 변환은 라플라스변환의 특별한 경우 중 하나입니다.
즉 라플라스변환 ⊃ 푸리에 변환이 되겠지요..


물론 푸리에 변환은 특별한 경우라고 했으니까, 라플라스 변환이 되어도 , 푸리에 변환이 불가능한 경우가 있겠지요? 반대로 푸리에 변환은 안되지만 라플라스 변환은 가능한 함수도 있을거고요..

시간신호 f(t)가 푸리에 변환이 되려면 연속이면서 적분가능한 함수이어야 합니다.


설명이 복잡해졌는데, 정리하면...


라플라스 변환의 공식에서 s=σ + jω이고, s를 jω로 쓰면(실수부 =0) 그것이 푸리에 변환입니다. ^^

2007년 6월 11일 월요일

[펌] 물질대사 스위치를 홱홱 돌리는 시아노박테리아

카네기 연구소 과학자들이 옐로우스톤(Yellowstone) 국립공원의 뜨거운 온천에 사는 광합성 세균이 두 가지 매우 다른 대사적 본질을 가지고 있는 것을 발견했다. 해가 지면 이들은 낮 동안의 일인 광합성을 중단하고, 의외의 일인 질소고정을 시작하며, 질소가스(N2)를 세포 생장에 사용할 수 있는 물질로 전환한다. 이 연구 결과는 학술지인 'the Proceedings of the National Academy of Sciences'에 실렸는데, 이 논문은 고온 하에서 단일 세포 내에서 두 가지 대사 작업을 성공적으로 수행할 수 있는 유기체에 대한 최초의 보고이며, 뜨거운 온천에서 사는 미생물 군이 필수적인 질소를 어떻게 얻는지에 관한 오랜 의문을 푸는데도 도움이 된다.

카네기의 Arthur Grossman 등은 아주 작은 단일 세포인 cyanobacterium Synechococcus를 연구하고 있다. 시아노박테리아는 약 30억 년 전에 지구상에 나타난 것으로, 광합성을 통해 태양에너지와 이산화탄소를 당과 산소로 전환할 수 있는 지구 상의 유기체 중에서 가장 오래된 것이다. 사실, 고대 시아노박테리아가 대부분의 산소를 생산해서 지구상에 동물이 생존할 수 있게 되었다.

시네코코쿠스(Synechococcus) 같은 시아노박테리아는 뜨거운 온천을 뒤덮고 있는 미생물 매트(mat)에서 가끔 발견되는데, 이런 장소에서의 생명체는 끓는 점에 가까운 온도에서 생존한다. 이들 매트는 고도로 조직화된 군집(communities)이며, 다른 종류의 유기체들이 역할 분담을 하고 있으며, 시아노박테리아는 주요 광합성 발전소 기능을 한다. 이 공원의 문어온천에 있는 시네토코쿠스는 160°F 정도의 물에서 자랄 수 있고, 반면에 다른 미생물들은 175°F를 초과하는 온천에서도 견딜 수 있다. 그러나 지금까지는 어떤 유기체가 이 매트의 더 뜨거운 지역에서 질소를 고정할 수 있는지는 불명확했었다.

"이 시아노박테리아는 이 매트 군집 내에서의 진정한 멀티태스커(multitasker)이다. 고온에서 자라고 있는 이 단세포 생물인 시아노박테리아들은 광합성을 위해 특화되어 있을 것이라고 생각했는데, 우리의 예측보다도 더 복잡한 물질대사(metabolism)를 가지고 있는 것으로 보인다”고 Grossman은 말했다. 모든 세포는 단백질과 핵산을 만들기 위해서 질소를 필요로 한다. 그러나 대기 중의 N2 기체는 이런 용도로 직접 이용될 수 없다. 즉, 이것은 먼저 환원되거나 더 큰 탄소함유 물질(larger, carbon-containing compounds)로 고정되어야 한다.

질소고정은 광합성 세포에서 문제가 되는데, 그 이유는 광합성 동안 환원된 산소는 N2를 고정하는 효소공장인 나이트로겐에이스(nitrogenase) 복합체의 활성을 저해하기 때문이다. 다른 유기체들에서 이 딜레마에 대한 독창적인 해결수단이 발견되고 있다. 예를 들어, 식물은 공생하는 N2-고정 세균에 의존하며, 이들 세균은 광합성을 하는 잎에서 멀리 떨어진 뿌리에서 산다. 또 다른 유형인 시아노박테리아는 다중 세포 다발(multicellular strands) 구조로 자라며, 특수화된 질소 고정 세포인 헤테로시스트 (heterocysts)가 만들어져서 광합성을 하는 세포로부터 격리된다.

이런 필라멘트형의 시아노박테리아가 미생물 매트에서의 질소 고정자라고 많은 연구자들은 믿었다. 그러나 이 세균들은 극히 높은 온도에 대한 내성이 없으며, 이 매트 중에 온도가 보다 낮은 주변부에서만 살고 있어서, 온도가 더 높은 지역에 사는 유기체에 필수적인 질소 고정의 존재에 대한 의문이 생긴 것이다. 온도에 대한 내성이 있으며, 단세포 생물인 시네토코쿠스 같은 시아노박테리아는 광합성으로 특화되어있기 때문에 질소 고정자에 대한 후보자로 고려되지는 않았다. “일부 광합성 유기체가 그렇듯이, 시네토코쿠스는 공간적으로 광합성과 질소 고정을 분리시킬 수 없다. 대신에, 이들은 이 일을 시간적으로 분리함으로써 문제를 해결한다”고 Bhaya는 설명한다.

Steunou 등은 광합성과 질소고정에 관련 유전자의 활성을 24시간 동안에 걸쳐 추적했다. 이들은 광합성 유전자가 일몰 후에 꺼지고, 그리고 질소 고정 유전자가 잠시 후에 켜지는 것을 발견했다. 나이트로겐에이스(nitrogenase) 효소 복합체가 거의 같은 시간에 활동에 들어가는 것은 질소 고정 유전자들이 활동에 들어가는 패턴에 이어지는 당연한 결과인 것이다.

질소 고정에는 많은 에너지가 필요한데, 이는 시네토코쿠스에 대해 또 다른 의문을 제기한다. 광합성은 밤에 중단되고, 매트에는 산소가 고갈되어서 호흡이 일어나기 힘들다. 호흡은 효과적인 에너지 생성 경로로 산소가 있어야 당에 저장된 에너지를 배출할 수 있다. 대신, 세포는 발효(fermentation )에 의존해야 하는데, 이것은 덜 효과적인 에너지 생성경로이며 산소 없이 진행될 수 있다. 밤에 시네토코쿠스가 특이적인 발효 경로에 대한 유전자를 발현시키는데, 이 경로는 폴리클루코오스에서 에너지를 유리시키며, 이 에너지가 질소 고정에 이용될 것으로 보인다고 Steunou 등은 밝혔다.


source : http://www4.eurekalert.org/pubnews.php?start=50

2007년 6월 4일 월요일

[펌] 방사선을 먹는 진균 발견

KISTI 『글로벌동향브리핑(GTB)』 2007-05-24

과학자들은 오랫동안 "진균은 주로 물질을 분해하는 역할을 하고, 다른 미생물들은 진균이 분해한 물질을 사용한다."고 생각해 왔다. 그러나 미국 Yeshiva University의 알버트아인슈타인 의대의 연구진은 "진균이 식량을 마련하고 증식을 촉진하기 위하여 방사능을 에너지원으로 이용하는 능력을 지녔다."는 놀라운 사실을 발견하였다.

"진균의 세계는 식물이나 동물보다도 많은 종으로 이루어져 있다. 진균이 물질을 분해할 뿐만 아니라 생성하기도 한다면, 이는 지구의 에너지균형(특히 생물학적 에너지로 전환되는 방사성 에너지의 양)을 다시 계산해야 한다는 것을 의미한다."고 연구진은 말했다. 진균이 방사선을 먹는다는 사실은 인간에게도 유용하다. 우주공간에는 이온화방사선(ionizing radiation)이 많으므로, 장기간 우주비행을 하는 우주비행사들은 진균을 무한한 식량공급원으로 사용할 수 있다.

멜라닌은 살아 있는 유기체를 자외선, 이온화방사선, 극한온도로부터 보호해 주는 독특한 생체고분자(biopolymer)이다. 상당수의 진균은 멜라닌 색소를 보유하고 있으며, 방사선을 먹는 진균 역시 멜라닌 색소를 보유하고 있음에 틀림 없다. 녹색식물이 클로로필과 같은 색소를 이용하여 햇빛을 화학에너지로 전환시켜 생존과 성장에 사용하는 것과 마찬가지로, 진균은 멜라닌을 이용하여 전자기파의 특정부분(이온화방사선)을 에너지원으로 사용할 수 있다. 그러나 아직까지 진균이 보유한 멜라닌이 생물학적으로 어떠한 역할을 수행하는지에 대해서는 알려진 것이 없다.

연구진은 5년 전 웹서핑을 하던 중, 체르노빌 원전사고현장에서 돌아온 로봇이 원자로의 벽에서 채취한 멜라닌이 풍부한 검은 색의 진균을 제시하였다는 기사를 읽었다. 연구진은 이 진균이 방사선을 에너지원으로 사용할 지도 모른다고 생각하고 연구에 착수하였다. 연구진은 자신들의 아이디어를 검증하기 위하여 3개의 (유전적으로 다양한) 진균을 대상으로 in vivo 테스트를 실시하였다. 그 결과 연구진은 이온화방사선이 멜라닌을 보유한 진균의 성장을 유의하게 촉진한다는 결과를 얻었다. 예컨대, 연구진이 Cryptococcus neoformans(멜라닌을 생성하도록 유도되었음)과 Wangiella dermatitis(본래 멜라닌을 보유하고 있음)을 정상적 방사선 수준보다 500배나 높은 이온화방사선에 노출한 결과, 두 진균의 성장속도가 모두 유의하게 증가하였다.

연구진은 또한 멜라닌이 방사선을 포획하는 능력을 측정하기 위하여 물리-화학적 연구를 실시하였다. 멜라닌을 이온화방사선에 노출시킨 후 전자스핀공명(ESR: electron spin resonance) 신호를 측정한 결과, 방사선이 멜라닌과 상호작용하여 전자구조를 변화시키는 것으로 확인되었다. (이는 방사선을 포획하여 다양한 형태의 에너지원(식품)으로 전환하기 위한 필수적인 과정이다.) 또한 방사선에 노출된 멜라닌은 그렇지 않은 멜라닌에 비해 NADPH의 환원능력이 4배 증가하였다.

일부 문헌에서는 이미 방사선이 멜라닌을 보유한 미생물의 생장을 증진시킬 수 있음을 간접적으로 입증하는 근거들이 제시되어 왔다. 예컨대 C. cladosporioides는 방사선 입자가 방출되는 방향으로 자라는 성질(radiotropism)을 보이는데, 1986년 체르노빌 사고 이후로 체르노빌 인근에서 널리 자라나고 있다. 최근에는 대양의 해저에 있는 열수구(geothermal vent)에 서식하는 특이한 미생물이 열방사선(thermal radiation)을 포획하여 에너지원으로 사용한다거나, 광산에 서식하는 일부 미생물이 물 속의 방사선 분해물(radiolysis)을 이용한다는 보고서도 발표된 바 있다. 기존의 선행연구와 이번 연구결과를 종합할 때, 멜라닌의 전자기파 포획능력과 현저한 산화-환원능력이 결합하여 멜라닌을 보유한 진균으로 하여금 방사선을 에너지원으로 이용하게 하는 것으로 보인다.

이번 연구는 진균에 대한 인식을 근본적으로 바꾸는 계기가 될 뿐 아니라, 우주인의 식량문제를 해결하고 방사선 누출사고와 같은 문제를 해결할 수 있는 길을 여는 것이다. 보다 근본적으로 이번 연구는 지구의 에너지량을 다시 계산해야 하는 사태를 초래할지도 모른다.

SOURCE: "Ionizing Radiation Changes the Electronic Properties of Melanin and Enhances the Growth of Melanized Fungi", PLoS ONE published May 23 in the online.