검수요청.png검수요청.png

"인코딩"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
(부호화 방식)
81번째 줄: 81번째 줄:
  
 
=== 원천부호화 ===
 
=== 원천부호화 ===
정보신호를 전송하기에 적합하도록 효율적으로 부호화하는 방식으로 정보신호를 디지털 신호로 바꾸고 데이터를 압축하여 제한된 대역폭에서 고속으로 전송되도록한다. 원천부호화는 에러가 발생했을 때 오류 검출 및 정정 능력이 매우 취약하기 때문에 네트워크에서는 신뢰성 있는 데이터 전송시스템이 필요하다.<ref name="부호화방식"></ref> 원천부호화의 방식으로는 DM(Delta Modulation : 델타변조), PCM(pulse Code Modulation : 펄스부호변조), 허프만코딩(Huffman coding)이 있다.
+
정보신호를 전송하기에 적합하도록 효율적으로 부호화하는 방식으로 정보신호를 디지털 신호로 바꾸고 데이터를 압축하여 제한된 대역폭에서 고속으로 전송되도록한다. 원천부호화는 에러가 발생했을 때 오류 검출 및 정정 능력이 매우 취약하기 때문에 네트워크에서는 신뢰성 있는 데이터 전송시스템이 필요하다.<ref name="부호화방식"></ref> 원천부호화의 방식으로는 델타변조(DM, Delta Modulation), 펄스부호변조(PCM, pulse Code Modulation), 허프만코딩(Huffman coding)이 있다.
  
* DM(Delta Modulation) : DM은 원천부호화 방식 중에서 가장 원시적인 방법이다. 현재 샘플과 이전 샘플을 비교한 차이를 전송하는 방식으로 샘플링 값이 이전 값보다 증가하면 1을 보내고 감소하면 0을 전송한다. PCM이 한 샘플링 값으로 여러 비트씩 얻는 것에 비해 DM은 한 비트씩만 얻어서 사용한다.
+
* 델타변조 : 델타변조는 원천부호화 방식 중에서 가장 원시적인 방법이다. 현재 샘플과 이전 샘플을 비교한 차이를 전송하는 방식으로 샘플링 값이 이전 값보다 증가하면 1을 보내고 감소하면 0을 전송한다. 펄스부호변조가 한 샘플링 값으로 여러 비트씩 얻는 것에 비해 텔타변조는 한 비트씩만 얻어서 사용한다.
  
* PCM(Pulse Code Modulation) : 펄스부호변조로서 '표본화 -> 양자화 -> 부호화' 방식을 거쳐 아날로그신호를 디지털 신호로 변환한다. 표본화(Sampling)란 연속적인 시간신호를 이산적인 시간신호로 표본화하여 PAM신호를 만드는 과정이며, 양자화는 PAM신호를 디지털 전압값으로 변환하는 과정이다. 부호화는 표본값이 PCM디지털 코드를 부여하는 과정이다. 연속적인 아날로그 신호를 시간단위로 끊어서 전압값을 얻은 후 그 전압값에 8비트 이상의 디지털 코드를 부여하는 방법이다.
+
* 펄스부호변조 : 펄스부호변조로서 '표본화 -> 양자화 -> 부호화' 방식을 거쳐 아날로그신호를 디지털 신호로 변환한다. 표본화(Sampling)란 연속적인 시간신호를 이산적인 시간신호로 표본화하여 PAM신호를 만드는 과정이며, 양자화는 PAM신호를 디지털 전압값으로 변환하는 과정이다. 부호화는 표본값이 펄스부호변조 디지털 코드를 부여하는 과정이다. 연속적인 아날로그 신호를 시간단위로 끊어서 전압값을 얻은 후 그 전압값에 8비트 이상의 디지털 코드를 부여하는 방법이다.
  
* 허프만코딩(Huffman coding) : 기본 이론으로는 발생확률이 높은 심벌에는 짧은 길이의 코드를 할당하고 발생확률이 낮은 심벌에는 긴 길이의 코드를 할당하는 방식이다.<ref name="부호화방식"></ref>
+
* 허프만코딩 : 기본 이론으로는 발생확률이 높은 심벌에는 짧은 길이의 코드를 할당하고 발생확률이 낮은 심벌에는 긴 길이의 코드를 할당하는 방식이다.<ref name="부호화방식"></ref>
  
 
=== 채널부호화 ===
 
=== 채널부호화 ===
채널부호화는 원천부호화된 원래의 정보에 에러 검출 및 정정을 위한 비트들을 추가하여 전송하는 방법으로 수신측에서 에러를 검사하여 데이터의 재전송을 요청하거나 자체적으로 에러를 검출하여 정정하도록 하는 목적이 있다.<ref name="부호화방식"></ref> 채널부호화의 방식으로는 ARQ(Automatic Repeat Request), FEC(Forward Error Correction)이 있다.
+
채널부호화는 원천부호화된 원래의 정보에 에러 검출 및 정정을 위한 비트들을 추가하여 전송하는 방법으로 수신측에서 에러를 검사하여 데이터의 재전송을 요청하거나 자체적으로 에러를 검출하여 정정하도록 하는 목적이 있다.<ref name="부호화방식"></ref> 채널부호화의 방식으로는 자동재전송요청(ARQ, Automatic Repeat Request), 전진 오류 수정(FEC, Forward Error Correction)이 있다.
  
* 자동재전송요청(ARQ : Automatic Repeat Request) : 자동재전송요청의 종류는 정지-대기(stop and wait)방식과 연속(continuous)방식이 있다.
+
* 자동재전송요청 : 자동재전송요청의 종류는 정지-대기(stop and wait)방식과 연속(continuous)방식이 있다.
:* 정지대기(stop and wait)방식 : 정해진 코드단위를 전송한 후 수신 결과로 돌아오는 ACK(positive Acknowledgement : 정상 수신) 및 NAK(Negative Acknowledgement : 비정상 수신 확인신호)를 기다려 데이터를 계속 전송할 것인지 아니면 재전송할 것인지를 결정하는 방식이다.
+
:* 정지대기 방식 : 정해진 코드단위를 전송한 후 수신 결과로 돌아오는 정상 수신(ACK, positive Acknowledgement) 및 비정상 수신 확인신호(NAK, Negative Acknowledgement)를 기다려 데이터를 계속 전송할 것인지 아니면 재전송할 것인지를 결정하는 방식이다.
:* 연속(continuous)방식 : 송신 도중에 수신측에서 NAK를 받았을 때 일정한 개수(N)의 코드단위를 재전송하는 방식이다.
+
:* 연속 방식 : 송신 도중에 수신측에서 비정상 수신 확인신호를 받았을 때 일정한 개수(N)의 코드단위를 재전송하는 방식이다.
  
* FEC(Forward Error Correction) : 수신측에서 스스로 에러를 검출 및 정정하는 방법으로 패리티 비트를 추가하거나 CRC(Cyclic Redundancy check : 주기중복검사)코드를 추가하여 보내는 방식이다.<ref name="부호화방식"></ref>
+
* FEC : 수신측에서 스스로 에러를 검출 및 정정하는 방법으로 패리티 비트를 추가하거나 주기중복검사(CRC, yclic Redundancy check)코드를 추가하여 보내는 방식이다.<ref name="부호화방식"></ref>
  
 
{{각주}}
 
{{각주}}

2019년 7월 12일 (금) 09:40 판

인코딩(encoding)이란 파일에 저장된 정보의 형태를 다른 것으로 변경하는 것을 말한다. 부호화(符號化)라고도 한다. 파일 압축이나 암호화 등의 목적으로 인코딩을 한다. 반대말은 디코딩(decoding)이다.

개요

영어단어 인코딩(encoding)은 코드화, 부호화, 암호로 바꾸다, 부호화하다라는 뜻이다. 인코딩은 컴퓨터 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 것을 말한다. 인코더(encoder) 또는 부호기는 인코딩을 수행하는 장치나 컴퓨터 소프트웨어를 말한다. 또한 보통 인코딩을 생각하면 컴퓨터에서 동영상이나 문자 인코딩을 생각하는데, 이 외에도 사람이 인지할 수 있는 형태의 데이터는 전부 인코딩할 수 있다.[1] 그리고 부호화를 언급함에 있어 복호화를 빼놓을 수 없는데, 복호화란 부호화(encoding)된 정보를 부호(code)화되기 전으로 되돌리는 처리 혹은 처리 방식을 말하는 것이다. 즉, 부호화 절차를 역으로 수행하면 복호화가 된다는 것이다.[2]

대표적인 사례

컴퓨터에서 사용되는 오디오, 텍스트, 동영상 파일표준화보안을 위한 암호화에 사용된다.

  • 코덱은 오디오나 동영상 파일의 크기를 줄이거나, 컴퓨터에서 신속하게 자료를 처리하기 위해 사용된다.
  • 오디오 인코딩은 주로 오디오를 다른 표준화된 형식으로 바꾸거나, 위에서 언급한 이유를 위해 사용된다.
  • 동영상 인코딩도 위와 같은 이유로 사용된다. 혹은 PPT에서 mp4 파일을 재생하기 위하여 다른 파일로 바꿀 때 필요하다.
  • 무선 인터넷 등에서 사용하는 데이터의 보안을 위해 사용된다.[3]
  • 문자도 위와 같은 이유로 사용된다. 컴퓨터와 사용자가 기계어로만 소통하던 시기에 많은 애로사항이 있었고 이를 해결하고자 등장하였다. 문자 인코딩의 대표적인 예로는 아스키코드유니코드가 있다.[3]
    • 아스키 코드(ASCII) / 한글 KS완성형(euc-kr)
      • 아스키 코드는 영문/숫자 1글자는 1바이트, 한글/한자 1글자는 2바이트이다. 하나의 인코딩당, 영문과 또다른 하나의 언어만 사용할 수 있다. 한국어 아스키 코드인 완성형(euc-kr) 인코딩에서는 영문과 한글 그리고 한국에서 사용되는 한자만 표현할 수 잇습니다. 물론 일본어도 섞여 잇지만, 일본어 인코딩이 아니기에 일본인은 읽을 수 없다. 그래서 하나의 파일에 여러 언어를 동시에 표현하기가 힘들거나 불가능하다. 대신에 컴퓨터 초창기부터 사용되어 왔기에 호환성이 아주 좋고 MS윈도우 2000/XP이상의 운영체제에서는, 내부적으로 유니코드를 사용하지만, 사용자가 실제로 읽고 쓰는 텍스트 문서는 대부분 아스키 코드이다.[4]
    • 유니코드(Unicode/UTF-8)
      • 영문/숫자/한글/한자 등 모든 글자는 이론적으로 2바이트로 적용한며 최대 6바이트까지 사용한다. 그리고 파일에 저장될 때도 2바이트로 저장한다. 희귀한 특수문자나 문자들은 2바이트를 초과할 수도 있다. 단, UTF-8 유니코드가 파일에 저장될 때, 영문/숫자는 아스키 코드와 똑같이 1바이트를 사용하고, 한글 등은 3바이트로 파일에 저장된다. UTF-8 유니티코드는 아스키 코드와 영문 영역에서 100% 호환된다. 만약 UTF-8 유니코드 문서에 한글 등이 전혀 없고, 영문과 숫자로만 이루어져 있다면, 그 파일은 아스키 코드와 동일하게 볼 수 있다. 또한 웹페이지를 유니코드로 작성 할 때는 UTF-8 유니코드를 사용한다. 아스키 코드와 차이점은 전세계의 모든 언어를 하나의 파일에 쓸 수 있다는 것(다만 언어에 해당하는 폰트는 설치가 되있어야함)과 유니코드의 역사가 그리 길지 않아서, 아직도 유니코드를 잘 인식하지 못하는 컴퓨터가 간혹가다 존재한다. 현재는 사용하지 않지만 예를 들어 윈도우 98이나 오래된 유닉스 시스템의 경우에 그렇다.[4]
인코딩 적용 사례
목적 원본 처리방식 부호화 복호화(디코더)
동영상 파일 압축 압축되지 않은 파일 변환 알고리즘(표준화) 압축 알고리즘으로 변환 코덱으로 압축 품
동영상 파일 압축 암호화되지 않은 신호 암호화 비화기로 암호화 암호해제로 원래의 신호로 변환
아파트의 층을 숫자화 아파트층 숫자화 각층을 십진수화 해당 층을 지목
전자공학에서 적용 사례
목적 원본 처리방식 부호화 복호화
음성 신호 처리 물리적 음성신호 전자화 마이크로 전기신호로 변환 스피커로 물리적 신호로 변환
디지털화 아날로그 신호 디지털 회로 양자화(ADC)로 이진화 DAC로 아날로그 변환
엘리베이터의 스위치를 누르면 LED 표시 층 별 스위치 디지털 회로 2진화 2진수를 해당 LED로 불 켜기
통신라인의 특성에 맞춤 직렬 데이터 AC 성분 추가 라인코딩 (NRZ, MAnchester, ..) 원래 직렬데이터로 변환

부호화 방식

부호화(encoding)와 복호화(decoding) 두 과정을 처리하는 방법을 합쳐서 부호화 방식이라고 한다. 인코딩과 디코딩을 처리하는 하드웨어나 소프트웨어를 코덱(CODEC, coder and Decoder)라고 한다. 부호화는 사용목적에 따라서 원천부호화방식과 채널부호화방식으로 나눈다.[5]

원천부호화

정보신호를 전송하기에 적합하도록 효율적으로 부호화하는 방식으로 정보신호를 디지털 신호로 바꾸고 데이터를 압축하여 제한된 대역폭에서 고속으로 전송되도록한다. 원천부호화는 에러가 발생했을 때 오류 검출 및 정정 능력이 매우 취약하기 때문에 네트워크에서는 신뢰성 있는 데이터 전송시스템이 필요하다.[5] 원천부호화의 방식으로는 델타변조(DM, Delta Modulation), 펄스부호변조(PCM, pulse Code Modulation), 허프만코딩(Huffman coding)이 있다.

  • 델타변조 : 델타변조는 원천부호화 방식 중에서 가장 원시적인 방법이다. 현재 샘플과 이전 샘플을 비교한 차이를 전송하는 방식으로 샘플링 값이 이전 값보다 증가하면 1을 보내고 감소하면 0을 전송한다. 펄스부호변조가 한 샘플링 값으로 여러 비트씩 얻는 것에 비해 텔타변조는 한 비트씩만 얻어서 사용한다.
  • 펄스부호변조 : 펄스부호변조로서 '표본화 -> 양자화 -> 부호화' 방식을 거쳐 아날로그신호를 디지털 신호로 변환한다. 표본화(Sampling)란 연속적인 시간신호를 이산적인 시간신호로 표본화하여 PAM신호를 만드는 과정이며, 양자화는 PAM신호를 디지털 전압값으로 변환하는 과정이다. 부호화는 표본값이 펄스부호변조 디지털 코드를 부여하는 과정이다. 연속적인 아날로그 신호를 시간단위로 끊어서 전압값을 얻은 후 그 전압값에 8비트 이상의 디지털 코드를 부여하는 방법이다.
  • 허프만코딩 : 기본 이론으로는 발생확률이 높은 심벌에는 짧은 길이의 코드를 할당하고 발생확률이 낮은 심벌에는 긴 길이의 코드를 할당하는 방식이다.[5]

채널부호화

채널부호화는 원천부호화된 원래의 정보에 에러 검출 및 정정을 위한 비트들을 추가하여 전송하는 방법으로 수신측에서 에러를 검사하여 데이터의 재전송을 요청하거나 자체적으로 에러를 검출하여 정정하도록 하는 목적이 있다.[5] 채널부호화의 방식으로는 자동재전송요청(ARQ, Automatic Repeat Request), 전진 오류 수정(FEC, Forward Error Correction)이 있다.

  • 자동재전송요청 : 자동재전송요청의 종류는 정지-대기(stop and wait)방식과 연속(continuous)방식이 있다.
  • 정지대기 방식 : 정해진 코드단위를 전송한 후 수신 결과로 돌아오는 정상 수신(ACK, positive Acknowledgement) 및 비정상 수신 확인신호(NAK, Negative Acknowledgement)를 기다려 데이터를 계속 전송할 것인지 아니면 재전송할 것인지를 결정하는 방식이다.
  • 연속 방식 : 송신 도중에 수신측에서 비정상 수신 확인신호를 받았을 때 일정한 개수(N)의 코드단위를 재전송하는 방식이다.
  • FEC : 수신측에서 스스로 에러를 검출 및 정정하는 방법으로 패리티 비트를 추가하거나 주기중복검사(CRC, yclic Redundancy check)코드를 추가하여 보내는 방식이다.[5]

각주

  1. 인코딩〉, 《나무위키》
  2. 복호화〉, 《위키백과》
  3. 3.0 3.1 부호화〉, 《위키백과》
  4. 4.0 4.1 mwultong, 〈유니코드(Unicode), 아스키(ASCII; 한글완성형) 차이/차이점; Unicode ASCII Difference〉, 《블로그스팟》, 2006-10-26
  5. 5.0 5.1 5.2 5.3 5.4 구루, 〈부호화 방식〉, 《다음 블로그》, 2009-03-24

참고자료

같이 보기


  검수요청.png검수요청.png 이 인코딩 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.