KR101538491B1 - 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치 - Google Patents

이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치 Download PDF

Info

Publication number
KR101538491B1
KR101538491B1 KR1020130133049A KR20130133049A KR101538491B1 KR 101538491 B1 KR101538491 B1 KR 101538491B1 KR 1020130133049 A KR1020130133049 A KR 1020130133049A KR 20130133049 A KR20130133049 A KR 20130133049A KR 101538491 B1 KR101538491 B1 KR 101538491B1
Authority
KR
South Korea
Prior art keywords
channel
value
pixel
additional data
image
Prior art date
Application number
KR1020130133049A
Other languages
English (en)
Other versions
KR20150051509A (ko
Inventor
박배억
Original Assignee
박배억
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 박배억 filed Critical 박배억
Priority to KR1020130133049A priority Critical patent/KR101538491B1/ko
Publication of KR20150051509A publication Critical patent/KR20150051509A/ko
Application granted granted Critical
Publication of KR101538491B1 publication Critical patent/KR101538491B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/387Composing, repositioning or otherwise geometrically modifying originals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

이미지를 훼손하지 않으면서 이미지 자체에 부가 데이터를 삽입 및 추출할 수 있도록 하여 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치가 개시된다. 본 발명의 일 측면에 따른, 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법은, 상기 이미지의 각 화소를 구성하는 알파 채널, 적색 채널, 녹색 채널 및 청색 채널 중 상기 부가 데이터를 삽입할 채널을 선택하는 단계; 상기 이미지의 각 화소의 상기 선택된 채널들의 값을, 해당 값의 용량보다 적은 용량의 표본 값으로 표현하는 단계; 상기 선택된 채널을 지시하는 정보 및 상기 표본 값을 포함하는 제어 정보를 생성하는 단계; 및 상기 이미지의 각 화소의 상기 선택된 채널들의 값을 상기 제어 정보 및 상기 부가 데이터로 대체하는 단계;를 포함한다.

Description

이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치{METHOD AND APPARATUS FOR USING IMAGE AS A MEANS OF STORING AND MOVING SUPPLEMENTARY DATA}
본 발명은 이미지 처리 기술에 관한 것으로서, 보다 구체적으로 이미지를 훼손하지 않으면서 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치에 관한 것이다.
유무선 통신 기술의 발달로 인해 이동 중 음성 통화, 무선 인터넷을 손쉽게 이용할 수 있게 되었고, 다양한 디지털 멀티미디어 데이터가 네트워크를 통해 손쉽고 편리하게 전송되고 있다. 아울러, 유무선 통신 기술을 이용한 원격 강의 등과 같은 온라인 교육도 활발히 제공되고 있다.
한편, 유무선 통신 기술이 발달하면서 위에 언급한 바와 같이 다양한 멀티미디어 데이터들이 생겨나고 있고 이러한 멀티미디어 데이터들은 고화질에 대한 요구나 정교한 장면 재현, 고음질 등의 요구로 인해 데이터량이 증가하고 있는 추세이다.
이러한 멀티미디어 데이터의 증가 및 발전만큼 유무선 통신 기술의 발전이 이루어지지는 못하고 있고, 최근에는 휴대폰을 이용하여 이동 중에 무선 인터넷을 하는 것이 더욱 보편화되어 있고, 이러한 멀티미디어 데이터의 빠른 전송이 요구되고 있다.
이러한 요구에 따라 이미지에 부가 데이터를 삽입하는 기술이 활용되고 있다. 대표적으로 사진 헤더 파일에 자동으로 저장되는 EXIF(EXchangable Image File format; 교환 이미지 파일 형식) 태그 기술을 들 수 있다. EXIF 태그에는 사진 촬영 위치, 촬영 시간, GPS 위치 정보 등의 부가 데이터들이 기록되어, 사용자들이 사진 이미지의 각종 정보를 손쉽게 확인하고, 사진 관리를 가능하게 한다.
국내공개특허공보 10-2010-0065918(2010.06.17 공개)
그러나, EXIF 태그 기술 등은 이미지 자체에 부가 데이터를 기록하는 것이 아니라, 이미지 이외 별도의 헤더 등과 같은 곳에 부가 데이터를 기록하여 부가 데이터와 이미지를 함께 이동시키는 것으로서, 그 데이터 용량은 여전히 줄이지 못한다.
본 발명은 상기와 같은 문제점을 해결하기 위해 제안된 것으로, 이미지를 훼손하지 않으면서 이미지 자체에 부가 데이터를 삽입 및 추출할 수 있도록 하여 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치를 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명의 일 측면에 따른, 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법은, 상기 이미지의 각 화소를 구성하는 알파 채널, 적색 채널, 녹색 채널 및 청색 채널 중 상기 부가 데이터를 삽입할 채널을 선택하는 단계; 상기 이미지의 각 화소의 상기 선택된 채널들의 값을, 해당 값의 용량보다 적은 용량의 표본 값으로 표현하는 단계; 상기 선택된 채널을 지시하는 정보 및 상기 표본 값을 포함하는 제어 정보를 생성하는 단계; 및 상기 이미지의 각 화소의 상기 선택된 채널들의 값을 상기 제어 정보 및 상기 부가 데이터로 대체하는 단계;를 포함한다.
상기 방법에서 상기 선택된 채널은 알파 채널이고 상기 이미지의 각 화소는 완전 투명 또는 완전 불투명 중 어느 하나이며, 상기 표본 값으로 표현하는 단계는, 상기 이미지의 화소마다, 알파 채널의 완전 투명 또는 완전 불투명 중 어느 하나를 나타내는 비트를 할당하여 비트열을 생성할 수 있다.
상기 방법에서 상기 선택된 채널은 알파 채널이고 상기 이미지의 각 화소는 모두 동일한 투명도를 가지며, 상기 표본 값으로 표현하는 단계는, 상기 이미지의 모든 화소에 대한 하나의 상기 투명도 값을 생성할 수 있다.
상기 방법에서 상기 선택된 채널은 알파 채널이고, 상기 표본 값으로 표현하는 단계는, 알파 채널에 표현할 수 있는 투명도의 개수보다 작은 개수의 복수의 레벨을 설정하는 단계; 상기 이미지의 각 화소의 알파 채널의 값이 상기 복수의 레벨 중 하나에 매핑하는 단계; 및 각 화소의 알파 채널마다 매핑된 레벨의 값들을 표본 값으로 생성하는 단계;를 포함할 수 있다.
상기 복수의 레벨을 설정하는 단계는, 16 진수에 대응하도록 16 개의 레벨을 설정할 수 있다.
상기 방법에서 상기 선택된 채널은, 적색 채널, 녹색 채널 및 청색 채널 중 하나이고, 상기 표본 값으로 표현하는 단계는, 상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트들을 화소마다 동일하게 표현하는 하나의 값을 표본 값으로 생성하고, 상기 대체하는 단계는, 상기 이미지의 각 화소의 상기 선택된 채널의 상기 일부 비트들을 상기 제어 정보 및 상기 부가 데이터로 대체하는 것일 수 있다.
상기 방법에서 상기 선택된 채널은, 적색 채널, 녹색 채널 및 청색 채널 중 하나이고, 상기 표본 값으로 표현하는 단계는, 상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트들이, 미리 설정된 적어도 두 개 이상의 분할 범위 중 어느 범위에 해당하는지 확인하는 단계; 및 확인된 결과에 따라 상기 이미지의 화소마다 비트를 할당하여 비트열을 생성하는 단계;를 포함하고, 상기 대체하는 단계는, 상기 이미지의 각 화소의 상기 선택된 채널의 상기 일부 비트를 상기 제어 정보 및 상기 부가 데이터로 대체할 수 있다.
상기 비트열을 생성하는 단계는, 상기 일부 비트들이, 제 1, 2 범위 중 어느 범위에 해당하는지를 나타내는 제 1 비트열을 생성하는 단계; 및 상기 일부 비트들이, 상기 제 1 범위 또는 상기 제 2 범위 내의 두 개의 범위 중 어느 범위에 해당하는지를 나타내는 제 2 비트열을 생성하는 단계;를 포함할 수 있다.
상기 제어 정보는, 상기 비트열에 따라 상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트를 복원할 때 상기 비트열의 각 비트가 지시하는 범위의 값 중 어느 값으로 복원할 것인지를 나타내는 정보를 포함할 수 있다.
상기 선택된 채널의 일부 비트들은, 상기 선택된 채널의 값을 구성하는 16 진수의 10의 자리 수 또는 1의 자리 수 중 하나일 수 있다.
상기 방법은, 암호화 키를 입력받는 단계; 상기 암호화 키를 바이너리 값으로 변환하여 키 바이너리를 생성하는 단계; 상기 부가 데이터가 삽입된 각 채널의 값의 홀수 또는 짝수 여부에 따라 비트를 배열하여 대상 바이너리를 생성하는 단계; 상기 키 바이너리와 상기 대상 바이너리를 비교하여 변환 바이너리를 생성하는 단계; 및 상기 대상 바이너리와 상기 변환 바이너리의 비교 결과에 따라 상기 부가 데이터가 삽입된 각 채널의 값을 홀수 또는 짝수로 변경하는 단계;를 더 포함할 수 있다.
상기 변환 바이너리를 생성하는 단계는, 상기 키 바이너리와 상기 대상 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 변환 바이너리를 생성할 수 있다.
상기 변경하는 단계는, 상기 대상 바이너리와 상기 변환 바이너리의 각 동일 위치의 비트 값을 서로 비교하여, 서로 다른 경우 해당 비트에 대응하는 채널의 값을 원래와 다르게 홀수 또는 짝수로 변경하고, 동일한 경우 해당 비트에 대응하는 채널의 값은 변경하지 않을 수 있다.
상기 방법은, 암호화 키를 입력받는 단계; 상기 암호화 키를 바이너리 값으로 변환하여 키 바이너리를 생성하는 단계; 상기 부가 데이터가 삽입된 각 채널의 일부 값의 홀수 또는 짝수 여부에 따라 비트를 배열하여 제 1 대상 바이너리를 생성하는 단계; 상기 부가 데이터가 삽입된 각 채널의 나머지 값의 홀수 또는 짝수 여부에 따라 비트를 배열하여 제 2 대상 바이너리를 생성하는 단계; 상기 키 바이너리와 상기 제 1, 2 대상 바이너리를 비교하고 비교 결과에 따라 상기 부가 데이터가 삽입된 상기 각 채널의 상기 일부 값과 상기 나머지 값의 교환 여부를 결정하는 단계; 및 결정된 결과에 따라 상기 각 채널의 상기 일부 값과 상기 나머지 값을 교환하거나 교환하지 않는 단계;를 더 포함할 수 있다.
상기 교환 여부를 결정하는 단계는, 상기 키 바이너리와 상기 제 1 대상 바이너리, 그리고 상기 제 2 대상 바이너리의 각 동일 위치의 비트 값을 서로 비교하는 것일 수 있다.
상기 교환 여부를 결정하는 단계는, 상기 동일 위치의 비트 값이 모두 동일한 경우, 해당 비트에 대응하는 채널의 상기 일부 값과 상기 나머지 값을 교환하는 것으로 결정하고, 상기 동일 위치의 비트 값이 모두 동일하지 않은 경우, 해당 비트에 대응하는 채널의 상기 일부 값과 상기 나머지 값을 교환하지 않는 것으로 결정하는 것일 수 있다.
상기 일부 값은, 16 진수의 1의 자리 수이고, 상기 나머지 값은 16 진수의 10의 자리 수일 수 있다.
상기 방법은, 암호화 키를 입력받는 단계; 상기 암호화 키를 분석하여 기준 채널 설정 정보를 생성하는 단계; 상기 이미지의 각 화소의 적색 채널, 녹색 채널, 청색 채널 각각의 홀수 또는 짝수를 분석하는 단계; 각 화소의 각 채널별 홀수 또는 짝수의 분석 결과와 상기 기준 채널 설정 정보를 비교하여 각 화소의 기준 채널을 선정하는 단계; 및 각 화소마다, 기준 채널과 나머지 두 채널의 홀짝 비교 결과에 따라 채널 값의 교환을 수행하는 단계;를 더 포함할 수 있다.
상기 교환을 수행하는 단계는, 기준 채널과, 나머지 두 채널의 홀수 또는 짝수가 모두 동일한 경우, 기준 채널의 값은 그대로 두고 나머지 두 채널의 값을 교환하는 것일 수 있다.
상기 방법은, 상기 알파 채널에 대체되어 삽입되는 부가 데이터가 적색/녹색/청색 채널의 값에 영향을 주는 값인 경우, 해당 화소의 알파 채널에 삽입되는 해당 부가 데이터의 값을 특정 값으로 변경하는 단계; 및 해당 화소의 알파 채널에 삽입된 부가 데이터의 값이 상기 특정 값으로 변경되었음을 알리는 안내 정보를 상기 제어 정보에 기록하는 단계;를 더 포함할 수 있다.
또는, 상기 방법은, 상기 알파 채널에 대체되어 삽입되는 부가 데이터가 적색/녹색/청색 채널의 값에 영향을 주는 값인 경우, 해당 화소의 알파 채널에 삽입되는 해당 부가 데이터의 값을 특정 값으로 변경하는 단계; 및 상기 부가 데이터의 값이 상기 특정 값으로 변경된 경우, 적색/녹색/청색 채널의 값을 모두 짝수로 설정하거나 모두 홀수로 설정하는 단계;를 더 포함할 수 있다.
또는 상기 방법은 상기 알파 채널에 대체되어 삽입되는 부가 데이터의 값이 기준 값보다 작은 경우, 해당 화소의 알파 채널에 삽입된 부가 데이터의 값에 미리 결정된 값을 더하여 갱신하는 단계; 및 상기 부가 데이터의 갱신을 안내하는 안내 정보를 상기 제어 정보에 기록하는 단계;를 더 포함할 수 있다.
또는 상기 방법은, 상기 알파 채널에 대체되어 삽입되는 부가 데이터의 값이 기준 값보다 작은 경우, 해당 화소의 알파 채널에 삽입된 부가 데이터의 값에 미리 결정된 값을 더하여 갱신하는 단계; 및 부가 데이터의 값이 갱신된 화소의 적색/녹색/청색 채널의 값을 홀수 또는 짝수로 변경하여 알파 채널에 삽입된 부가 데이터의 값이 갱신되었음을 표시하는 단계;를 더 포함할 수 있다.
상기 목적을 달성하기 위한 본 발명의 다른 측면에 따른, 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 장치는, 하나 이상의 프로세서; 메모리; 및 상기 메모리에 저장되어 있으며 상기 하나 이상의 프로세서에 의하여 실행되도록 구성되는 하나 이상의 프로그램을 포함하고, 상기 프로그램은, 이미지의 각 화소를 구성하는 알파 채널, 적색 채널, 녹색 채널 및 청색 채널 중 상기 부가 데이터를 삽입할 채널을 선택하고, 상기 이미지의 각 화소의 상기 선택된 채널들의 값을, 해당 값의 용량보다 적은 용량의 표본 값으로 표현하며, 상기 선택된 채널을 지시하는 정보 및 상기 표본 값을 포함하는 제어 정보를 생성하고, 상기 이미지의 각 화소의 상기 선택된 채널들의 값을 상기 제어 정보 및 상기 부가 데이터로 대체한다.
상기 선택된 채널은 알파 채널이고 상기 이미지의 각 화소는 완전 투명 또는 완전 불투명 중 어느 하나이며, 상기 프로그램은, 상기 표본 값으로 표현하는 데 있어서, 상기 이미지의 화소마다, 알파 채널의 완전 투명 또는 완전 불투명 중 어느 하나를 나타내는 비트를 할당하여 비트열을 생성할 수 있다.
상기 프로그램은, 완전 투명인 화소의 적색 채널, 녹색 채널 및 청색 채널에도 해당 채널들의 값을 부가 데이터로 대체할 수 있다.
상기 선택된 채널은 알파 채널이고 상기 이미지의 각 화소는 모두 동일한 투명도를 가지며, 상기 프로그램은, 상기 표본 값으로 표현하는 데 있어서, 상기 이미지의 모든 화소에 대한 하나의 상기 투명도 값을 생성할 수 있다.
상기 선택된 채널은 알파 채널이고, 상기 프로그램은, 상기 표본 값으로 표현하는 데 있어서, 알파 채널에 표현할 수 있는 투명도의 개수보다 작은 개수의 복수의 레벨을 설정하고, 상기 이미지의 각 화소의 알파 채널의 값이 상기 복수의 레벨 중 하나에 매핑하며, 각 화소의 알파 채널마다 매핑된 레벨의 값들을 표본 값으로 생성할 수 있다.
상기 프로그램은, 상기 복수의 레벨을 설정하는 데 있어서, 16 진수에 대응하도록 16 개의 레벨을 설정할 수 있다.
상기 선택된 채널은, 적색 채널, 녹색 채널 및 청색 채널 중 하나이고, 상기 프로그램은, 상기 표본 값으로 표현하는 데 있어서, 상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트들을 화소마다 동일하게 표현하는 하나의 값을 표본 값으로 생성하고, 상기 대체하는 데 있어서, 상기 이미지의 각 화소의 상기 선택된 채널의 상기 일부 비트들을 상기 제어 정보 및 상기 부가 데이터로 대체할 수 있다.
상기 선택된 채널은, 적색 채널, 녹색 채널 및 청색 채널 중 하나이고, 상기 프로그램은, 상기 표본 값으로 표현하는 데 있어서, 상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트들이, 미리 설정된 적어도 두 개 이상의 분할 범위 중 어느 범위에 해당하는지 확인하고, 확인된 결과에 따라 상기 이미지의 화소마다 비트를 할당하여 비트열을 생성하며, 상기 대체하는 데 있어서, 상기 이미지의 각 화소의 상기 선택된 채널의 상기 일부 비트를 상기 제어 정보 및 상기 부가 데이터로 대체할 수 있다.
상기 프로그램은, 상기 비트열을 생성하는 데 있어서, 상기 일부 비트들이, 제 1, 2 범위 중 어느 범위에 해당하는지를 나타내는 제 1 비트열을 생성하고, 상기 일부 비트들이, 상기 제 1 범위 또는 상기 제 2 범위 내의 두 개의 범위 중 어느 범위에 해당하는지를 나타내는 제 2 비트열을 생성할 수 있다.
본 발명은 이미지를 동영상, 텍스트, 또는 음성 파일 등의 부가 데이터를 저장 및 이동하는 수단으로 활용함으로써 데이터의 저장 용량을 줄이고 또한 통신망을 이용한 부가 데이터의 전송에 있어서도 전송 용량을 줄일 수 있다.
또한 본 발명은 하나의 이미지에 다양한 멀티미디어 요소들을 함께 저장 및 전송으로 여러 종류의 코덱(codec) 등을 필요로 하지 않는다.
또한, 본 발명은 범용성이 뛰어난 이미지의 특성을 이용하여 저장과 이동 수단으로 활용함으로써 통신망을 이용한 한 번의 전송과 로드로 메모리에서 손쉬운 조작과 제어가 가능해져 활용도를 높일 수 있다.
도 1은 본 발명의 일 실시예에 따른 이미지에 부가 데이터를 삽입하는 장치를 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 컨테이너 이미지에 부가 데이터를 삽입하고 이를 복원하는 개략적인 방법을 설명하는 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 컨테이너 이미지의 암호화 방법을 설명하는 흐름도이다.
도 4는 도 3의 암호화 방법에 대응하는 복호화 방법을 설명하는 흐름도이다.
도 5는 본 발명의 다른 실시예에 따른 컨테이너 이미지의 암호화 방법을 설명하는 흐름도이다.
도 6은 본 발명의 다른 실시예에 따른 컨테이너 이미지의 복호화화 방법을 설명하는 흐름도이다.
도 7은 본 발명의 또 다른 실시예에 따른 컨테이너 이미지의 암호화 방법을 설명하는 흐름도이다.
도 8은 본 발명의 또 다른 실시예에 따른 컨테이너 이미지의 복호화 방법을 설명하는 흐름도이다.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 상세히 설명하기로 한다.
이미지의 한 픽셀은 0 x A1A0 R1R0 G1G0 B1B0 형식으로 구성되며, A1A0은 알파 채널(Alpha Channel)의 값이고, R1R0은 적색 채널(Red Channel)의 값이며, G1G0은 녹색 채널(Green Channel)의 값이고, B1B0은 청색 채널(Blue Channel)의 값이다. 각 채널은 8 비트로 구성되어 16 진수로 10의 자리와 1의 자리로 표현된다.
본 발명에서는 이러한 이미지를 별도의 텍스트나, 동영상, 음성 등의 부가 데이터를 담아 이동시키는 컨테이너로서 활용하는 것이다. 본 발명에서는 이미지의 상기 각 채널 중 적어도 한 채널을 이용하여 부가 데이터를 삽입하는데, 크게 두 가지로 분류할 수 있다. 즉, 알파 채널에 부가 데이터를 삽입하거나, 또는 RGB 채널에 부가 데이터를 삽입한다. 또는 알파 채널과 RGB 채널을 모두 활용할 수도 있다. 이하에서는 부가 데이터를 담아 송수신되는 이미지를 컨테이너 이미지로 설명한다.
도 1은 본 발명의 일 실시예에 따른 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 장치를 나타내는 도면이다. 장치(100)는 스마트폰과 같은 이동통신단말 또는 퍼스널 컴퓨터, 또는 카메라 등일 수 있다.
도 1을 참조하면, 장치(100)는 메모리(110), 메모리 제어기(121), 하나 이상의 프로세서(CPU)(122), 주변 인터페이스(123), 입출력(I/O) 서브시스템(130), 디스플레이 장치(141), 입력 장치(142) 및 RF 회로(152)를 포함한다. 이러한 구성요소는 하나 이상의 통신 버스 또는 신호선을 통하여 통신한다. 도 1에 도시한 여러 구성요소는 하나 이상의 신호 처리 및/또는 애플리케이션 전용 집적 회로(application specific integrated circuit)를 포함하여, 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어 둘의 조합으로 구현될 수 있다.
메모리(110)는 고속 랜덤 액세스 메모리를 포함할 수 있고, 또한 하나 이상의 자기 디스크 저장 장치, 플래시 메모리 장치와 같은 불휘발성 메모리, 또는 다른 불휘발성 반도체 메모리 장치를 포함할 수 있다. 일부 실시예에서, 메모리(110)는 하나 이상의 프로세서(122)로부터 멀리 떨어져 위치하는 저장 장치, 예를 들어 RF 회로(152)와, 인터넷, 인트라넷, LAN(Local Area Network), WLAN(Wide LAN), SAN(Storage Area Network) 등, 또는 이들의 적절한 조합과 같은 통신 네트워크(도시하지 않음)를 통하여 액세스되는 네트워크 부착형(attached) 저장 장치를 더 포함할 수 있다. 프로세서(122) 및 주변 인터페이스(123)와 같은 장치(100)의 다른 구성요소에 의한 메모리(110)로의 액세스는 메모리 제어기(121)에 의하여 제어될 수 있다.
주변 인터페이스(123)는 장치(100)의 입출력 주변 장치를 프로세서(122) 및 메모리(110)와 연결한다. 하나 이상의 프로세서(122)는 다양한 소프트웨어 프로그램 및/또는 메모리(110)에 저장되어 있는 명령어 세트를 실행하여 장치(100)를 위한 여러 기능을 수행하고 데이터를 처리한다.
일부 실시예에서, 주변 인터페이스(123), 프로세서(122) 및 메모리 제어기(121)는 칩(120)과 같은 단일 칩 상에서 구현될 수 있다. 일부 다른 실시예에서, 이들은 별개의 칩으로 구현될 수 있다.
I/O 서브시스템(130)은 디스플레이 장치(141), 기타 입력 장치(142)와 같은 장치(100)의 입출력 주변장치와 주변 인터페이스(123) 사이에 인터페이스를 제공한다.
디스플레이 장치(141)는 LCD(liquid crystal display) 기술 또는 LPD(light emitting polymer display) 기술을 사용할 수 있고, 이러한 디스플레이 장치(141)는 용량형, 저항형, 적외선형 등의 터치 디스플레이일 수 있다. 터치 디스플레이는 촬영 장치와 사용자 사이에 출력 인터페이스 및 입력 인터페이스를 제공한다. 터치 디스플레이는 사용자에게 시각적인 출력을 표시한다. 시각적 출력은 텍스트, 그래픽, 비디오와 이들의 조합을 포함할 수 있다. 시각적 출력의 일부 또는 전부는 사용자 인터페이스 대상에 대응할 수 있다. 터치 디스플레이는 사용자 입력을 수용하는 터치 감지면을 형성한다.
프로세서(122)는 장치(100)에 연관된 동작을 수행하고 명령어들을 수행하도록 구성된 프로세서로서, 예를 들어, 메모리(110)로부터 검색된 명령어들을 이용하여, 장치(100)의 컴포넌트 간의 입력 및 출력 데이터의 수신과 조작을 제어할 수 있다.
일부 실시예에서, 소프트웨어 구성요소는 운영 체제(111), 그래픽 모듈(명령어 세트)(112) 및 이미지에 부가 데이터를 삽입하는 프로그램(명령어 세트)(113)이 메모리(110)에 탑재(설치)된다.
운영 체제(111)는, 예를 들어, 다윈(Darwin), RTXC, LINUX, UNIX, OS X, WINDOWS 또는 VxWorks, 안드로이드 등과 같은 내장 운영체제일 수 있고, 일반적인 시스템 태스크(task)(예를 들어, 메모리 관리, 저장 장치 제어, 전력 관리 등)를 제어 및 관리하는 다양한 소프트웨어 구성요소 및/또는 장치를 포함하고, 다양한 하드웨어와 소프트웨어 구성요소 사이의 통신을 촉진시킨다.
그래픽 모듈(112)은 디스플레이 장치(141) 상에 그래픽을 제공하고 표시하기 위한 주지의 여러 소프트웨어 구성요소를 포함한다. "그래픽(graphics)"이란 용어는 텍스트, 웹 페이지, 아이콘(예컨대, 소프트 키를 포함하는 사용자 인터페이스 대상), 디지털 이미지, 비디오, 애니메이션 등을 제한 없이 포함하여, 사용자에게 표시될 수 있는 모든 대상을 포함한다.
RF 회로(152)는 전자파를 송수신한다. RF 회로(152)는 전기 신호를 전자파로 또는 그 반대로 변환하며 이 전자파를 통하여 통신 네트워크, 다른 이동형 게이트웨이 치 및 통신 장치와 통신한다. RF 회로(152)는 예를 들어 안테나 시스템, RF 트랜시버, 하나 이상의 증폭기, 튜너, 하나 이상의 오실레이터, 디지털 신호 처리기, CODEC 칩셋, 가입자 식별 모듈(subscriber identity module, SIM) 카드, 메모리 등을 포함하지만 이에 한정되지 않는, 이러한 기능을 수행하기 위한 주지의 회로를 포함할 수 있다. RF 회로(152)는 월드 와이드 웹(World Wide Web, WWW)으로 불리는 인터넷, 인트라넷과 네트워크 및/또는, 셀룰러 전화 네트워크, 무선 LAN 및/또는 MAN(metropolitan area network)와 같은 무선 네트워크, 그리고 근거리 무선 통신에 의하여 다른 장치와 통신할 수 있다. 무선 통신은 GSM(Global System for Mobile Communication), EDGE(Enhanced Data GSM Environment), WCDMA(wideband code division multiple access), CDMA(code division multiple access), TDMA(time division multiple access), VoIP(voice over Internet Protocol), Wi-MAX, 블루투스(Bluetooth), 지그비(zigbee), 엔에프씨(NFC:Near Field Communication), 이메일, 인스턴트 메시징(instant messaging) 및/또는 단문 문자 서비스(SMS)용 프로토콜 또는 본 출원의 출원 시점에 아직 개발되지 않은 통신 프로토콜을 포함하는 기타 다른 적절한 통신 프로토콜을 포함하지만 이에 한정되지 않는 복수의 통신 표준, 프로토콜 및 기술 중 어느 것을 이용할 수 있다.
도 2는 본 발명의 일 실시예에 따른 컨테이너 이미지에 부가 데이터를 삽입하고 이를 복원하는 개략적인 방법을 설명하는 흐름도이다.
도 2를 참조하면, 먼저, 송신측의 프로그램은 컨테이너 이미지에서 부가 데이터를 첨부할 채널을 선택한다(S201). 부가 데이터를 삽입할 채널을 선택한 후, 송신측의 프로그램은 컨테이너 이미지의 각 화소에서 해당 선택한 채널에 기록되어 있는 채널 데이터를 추출한다(S203).
그리고, 송신측의 프로그램은 상기 추출한 채널 데이터를 분석하여, 컨테이너 이미지에의 부가 데이터 추가 및 컨테이너 이미지로부터 부가 데이터의 추출을 위한 제어 정보를 생성한다(S205). 여기서 제어 정보는 상기 선택한 채널의 정보 및 부가 데이터를 해당 채널에 삽입하기 위해 그 기존 데이터를 간략화한 정보인 표본 값으로 이해될 수 있다. 이에 관해서는 자세히 후술한다.
그리고, 송신측의 프로그램은 헤더 정보를 만들고 그 헤더 정보와 상기 생성한 제어 정보 그리고 삽입할 부가 데이터를 상기 선택한 채널에 순차적으로 삽입한다(S207). 여기서 헤더 정보는 제어 정보의 크기 그리고 부가 데이터의 크기를 의미하고, 상기 선택한 채널에 삽입되는 헤더 정보와 제어 정보 그리고 부가 데이터는 구분자에 의해 구분되거나 또는 미리 약속된 크기에 의해 구분될 수 있다. 예를 들어, 헤더 정보는 상기 선택한 채널의 기본 데이터를 화소 순서대로 나열하였을 때, 앞 부분의 50 바이트 영역을 헤더 부분으로 하여 해당 헤더 부분에 삽입된다.
한편, 수신측의 프로그램은, 부가 데이터가 삽입된 컨테이너 이미지를 송신측으로부터 수신하면(S209), 그 수신된 컨테이너 이미지의 각 화소의 채널 중 상기 송신측에서 선택된 채널의 데이터를 추출한다(S211).
수신측의 프로그램은 추출한 채널의 데이터를 화소 순서로 나열하고 그 나열된 채널의 데이터 중 헤더 부분에 기록된 헤더 정보를 토대로 상기 채널의 데이터 중 제어 정보와 부가 데이터를 식별한다(S213). 예를 들어, 헤더 정보에 제어 정보의 크기로 10,000 바이트가 기록되어 있는 경우, 수신측의 프로그램은 상기 나열한 채널의 데이터 중, 헤더 부분이 끝나는 부분부터 10,000 바이트의 데이터를 제어 정보로 식별하고, 또한 헤더 정보에 기록된 부가 데이터의 크기에 따라 제어 정보가 끝나는 부분부터 해당 부가 데이터의 크기까지를 부가 데이터로 식별한다.
이와 같이 제어 정보와 부가 데이터가 식별되면, 수신측의 프로그램은 부가 데이터를 추출한 후(S215), 상기 제어 정보에 따라 컨테이너 이미지의 상기 선택된 채널의 데이터를 갱신한다(S217).
이하에서는 구체적으로 예를 들어 설명하도록 한다.
(1) 알파 채널에 부가 데이터를 삽입하는 방법
컨테이너 이미지의 투명도는 크게 세 가지로 나눌 수 있다.
첫 번째는 배경 부분과 피사체 부분으로 나누어 배경 부분의 화소에는 모두 동일한 투명도가 적용되고, 피사체 부분의 화소에는 배경 부분과 다른 투명도가 적용되면서 해당 피사체 부분의 화소에 모두 동일한 투명도가 적용되는 경우이다(①). 예를 들어, 배경 부분은 모두 완전 투명으로 하고 피사체 부분은 완전 불투명으로 한다. 또는 배경 부분과 피사체 부분을 반투명으로 하면서 서로 투명도를 달리하는 것이다.
두 번째는 컨테이너 이미지 전체에 동일한 투명도가 적용되는 경우이다(②).
세 번째는 컨테이너 이미지의 각 화소마다 각기 다른 투명도가 적용되는 경우이다(③).
각 경우마다 부가 데이터를 삽입하는 방법은 다음과 같다.
① 번 방식
먼저 컨테이너 이미지의 각 화소의 알파 채널의 데이터를 분석한다. ①의 경우 투명도는 두 그룹으로 나누어져 있다. 예를 들어 완전 투명이거나 완전 불투명이다. 따라서 각 화소의 투명도를 1비트 즉, 0 또는 1로 표현할 수 있다. 예를 들어, 제 1 화소의 알파 채널에 '00'이 기록되어 있는 경우 해당 제 1 화소는 완전 투명으로 해당 제 1 화소의 투명도는 0과 1 중 0으로 표현할 수 있고, 제 2 화소의 알파 채널에 'FF'가 기록되어 있는 경우 해당 제 2 화소는 완전 불투명으로 해당 제 2 화소의 투명도는 0과 1 중 1로 표현할 수 있다. 이와 같은 방식으로 컨테이너 이미지의 각 화소의 투명도를 1 비트인 0과 1 중 하나로 표현할 수 있다.
프로그램은 위와 같이 분석한 각 화소의 알파 채널의 분석 결과에 따라, 컨테이너 이미지의 각 화소의 알파 값을 1 비트인 0과 1 중 하나로 표기하여 제어 정보를 생성한다. 이때, 프로그램은 제어 정보에 해당 컨테이너 이미지는 알파 채널을 이용하여 부가 데이터를 삽입한다는 것을 나타내는 식별자와, 상기 ① 번 방식임을 나타내는 식별자를 함께 기록한다. 예를 들어, 제어 정보에 #AC[0100010000...]와 같이 기록될 수 있고, 이때 A는 알파 채널을 이용하여 부가 데이터를 삽입한다는 것을 나타내는 식별자이고, C는 상기 ① 번 방식임을 나타내는 식별자이다. 그리고 [0100010000...]는 컨테이너 이미지의 각 화소의 알파 채널의 투명도 값을 표현한 표본 값으로 이미지 전체의 화소 개수만큼의 비트 개수를 갖고, 제어 정보에 기록시 8 비트 바이트 배열 혹은 16 진수 값으로 변환되어 기록될 수 있다. 이 예에서 알 수 있는 바와 같이, 알파 채널의 원래 값은 8 비트인데, 상기 표본 값의 화소마다의 알파 채널의 값을 1 비트로 표현함으로써, 적은 용량으로 알파 채널의 값을 표현한다.
제어 정보를 생성한 후, 프로그램은 컨테이너 이미지의 각 화소의 알파 채널의 데이터를 헤더 정보, 제어 정보 및 부가 데이터로 대체한다. 즉, 제어 정보의 크기와 부가 데이터의 크기를 기록한 헤더 정보를 첫 번째 화소의 알파 패널부터 순차적으로 기록하고, 헤더 부분이 끝난 이후의 알파 채널에는 제어 정보를 기록하고, 마지막으로 제어 정보를 모두 기록한 후의 알파 채널에는 부가 데이터를 기록한다. 단순화하여 예를 들면, 제 1 화소부터 제 10 화소까지의 알파 채널에는 헤더 정보를 기록하고, 그 이후 제 11 화소부터 제 20 화소까지의 알파 채널에는 제어 정보를 기록하며, 이후 제 21 화소부터의 알파 채널에는 부가 데이터를 기록하는 식이다. 여기서 화소의 순서는 이미지의 좌측부터 우측으로, 그리고 상단부터 하단으로의 순서를 의미할 수 있으나 여기에 제한되는 것은 아니고 그 순서는 정하기 나름이다.
각 화소당 알파 채널은 8 비트로 이루어진다. 그런데 전술한 바와 같이, 알파 채널의 값을 1 비트의 0 또는 1로 간략화하여 표현함으로써, 개략적으로 보면 알파 채널의 8 비트 중 1 비트는 제어 정보에 할당되고 나머지 7 비트는 헤더 정보 및 부가 데이터를 삽입하는데 활용된다고 볼 수 있다.
수신측에서는 송신측으로부터 송신된 컨테이너 이미지의 각 화소의 알파 채널의 데이터에 기록된 헤더 정보에 따라 제어 정보 및 부가 데이터를 식별하고, 식별된 제어 정보로부터, 구체적으로 표본 값으로부터 각 화소의 투명도를 확인할 수 있고 부가 데이터를 추출할 수 있다. 즉 제어 정보의 표본 값에 0으로 기록된 화소는 완전 투명으로 '00'으로 알파 채널의 값이 환원되고, 제어 정보의 표본 값에 1로 기록된 화소는 완전 불투명으로 'FF'로 알파 채널의 값이 환원된다. 따라서 최종 디코딩이 완료되면, 컨테이너 이미지는 원래 상태로 복원되고, 동영상이나 음성 등의 부가 데이터가 별도로 추출된다.
본 ① 번 방식에 있어서, 프로그램은 알파 채널의 값이 완전 투명인 화소에 대해서는 해당 알파 채널에 뿐만 아니라, R/G/B 채널에도 부가 데이터를 삽입할 수 있다. 즉, 알파 채널의 값이 완전 투명인 화소의 경우 해당 화소의 R/G/B 채널의 값은 의미가 없게 된다. 따라서 프로그램은 상기 예에서 표본 값으로 '0'을 기록한 화소(즉, 해당 화소는 완전 투명)의 R/G/B 채널에 부가 데이터를 삽입하고, 반대로 디코딩시 프로그램은 표본 값이 '0'인 화소의 R/G/B 채널에서 부가 데이터를 추출할 수 있다.
② 번 방식
먼저 컨테이너 이미지의 각 화소의 알파 채널의 데이터를 분석한다. ②의 경우 컨테이너 이미지의 각 화소는 모두 동일한 투명도를 갖는다. 따라서 컨테이너 이미지의 각 화소의 알파 채널은 하나의 값으로 표현될 수 있고, 제어 정보에는 알파 채널의 값으로서 하나의 표본 값만 기록된다. 예를 들어, 각 화소의 알파 채널의 값이 모두 '88'인 경우, 프로그램은 제어 정보에 해당 컨테이너 이미지는 알파 채널을 이용하여 부가 데이터를 삽입한다는 것을 나타내는 식별자와, 상기 ② 번 방식임을 나타내는 식별자 그리고 알파 채널의 값으로 표본 값 [88]만이 기록된다. 상기 ① 번 방식에서는 제어 정보에 컨테이너 이미지의 화소 수만큼의 비트가 포함되었으나, 본 방식에서는 8 비트만이 컨테이너 이미지의 전체 화소의 알파 채널의 값으로서 제어 정보에 포함된다.
제어 정보를 생성한 후, 프로그램은 컨테이너 이미지의 각 화소의 알파 채널의 데이터를 헤더 정보, 제어 정보 및 부가 데이터로 대체한다. 이는 상기 ① 번 방식에서와 동일하다. 다만, 상기 ① 번 방식과 비교하여, 제어 정보에 기록되는 알파 채널의 표본 값은 ② 번 방식이 8 비트로 줄어들기 때문에, 해당 ② 번 방식에서는 더 많은 부가 데이터를 컨테이너 이미지에 삽입할 수 있다. 개략적으로 보면 알파 채널의 8 비트가 모두 헤더 정보, 제어 정보 및 부가 정보를 기록하는데 활용될 수 있다고 볼 수 있다.
수신측에서는 송신측으로부터 송신된 컨테이너 이미지의 각 화소의 알파 채널의 데이터에 기록된 헤더 정보에 따라 제어 정보 및 부가 데이터를 식별하고, 식별된 제어 정보의 표본 값으로부터 각 화소의 투명도를 확인할 수 있고 부가 데이터를 추출할 수 있다. 즉 제어 정보에 기록된 하나의 투명도 값으로, 컨테이너 이미지의 모든 화소의 알파 채널의 값을 환원한다. 따라서 최종 디코딩이 완료되면, 컨테이너 이미지는 원래 상태로 복원되고, 동영상이나 음성 등의 부가 데이터가 별도로 추출된다.
③ 번 방식
먼저 컨테이너 이미지의 각 화소의 알파 채널의 데이터를 분석한다. ③의 경우 컨테이너 이미지의 각 화소마다 각기 다른 투명도가 적용된다. 일반적으로 웹에 사용되는 이미지의 투명도 적용 방식은 투명도 적용 범위를 0 ~ 100 혹은 0.0 ~ 1.0으로 정하여 사용한다. 즉 0 ~ 100의 범위를 10 등분하여 10 레벨 중 하나를 적용한다는 것이다. 이러한 방식은 색상 값과 달리 투명 값은 섬세하게 적용할 경우 구별하기가 쉽지 않으며 효과 또한 미미하기 때문이다.
따라서 본 ③ 번 방식에서는 투명도의 범위를 0에서 F까지의 16 레벨로 분할하여 적용한다. 즉 알파 채널은 0 ~ 255로 표현되는데 이를 16 등분하여, 각 화소의 알파 채널의 투명도를 0에서 F까지의 16 레벨 중 어느 하나로 매핑한다. 그리고 실제 알파 채널의 1의 자리 또는 10의 자리 중 택일하여 상기 매핑된 0 ~ F 중 하나의 값으로 적용하고, 나머지 자리의 4 비트를 헤더 정보와 제어 정보 및 부가 데이터에 할당하여 사용한다.
예를 들어, 제 1 화소의 알파 채널의 투명도 값이 0~15 범위에 해당하는 경우 해당 제 1 화소의 알파 채널의 1의 자리에는 0 ~ F 중 0으로 적용하고, 제 2 화소의 알파 채널의 투명도 값이 239~255 범위에 해당하는 경우 해당 제 2 화소의 알파 채널의 1의 자리에는 0 ~ F 중 F로 적용한다. 그리고 제 1, 2 화소의 알파 채널의 나머지 10의 자리인 4 비트는 헤더 정보와 제어 정보 및 부가 데이터에 할당하여 사용한다.
이를 위해, 프로그램은 제어 정보에, 해당 컨테이너 이미지는 알파 채널을 이용하여 부가 데이터를 삽입한다는 것을 나타내는 식별자와, 상기 ③ 번 방식임을 나타내는 식별자 그리고 각 화소의 알파 채널의 표본 값을 기록한다. 예를 들어, 제어 정보에 #AP[ABFC0.....]이 기록되는 경우, A는 알파 채널을 이용하여 부가 데이터를 삽입한다는 것을 나타내는 식별자이고, P는 ③ 번 방식임을 나타내는 식별자이며, [ABFC0.....]는 화소 순서에 따른 각 화소의 알파 채널의 투명도 값을 나타낸 표본 값이다.
제어 정보를 생성한 후, 프로그램은 컨테이너 이미지의 각 화소의 알파 채널의 데이터를 헤더 정보, 제어 정보 및 부가 데이터로 대체한다.
수신측에서는 송신측으로부터 송신된 컨테이너 이미지의 각 화소의 알파 채널의 데이터에 기록된 헤더 정보에 따라 제어 정보 및 부가 데이터를 식별하고, 식별된 제어 정보의 표본 값으로부터 각 화소의 투명도를 확인할 수 있고 부가 데이터를 추출할 수 있다. 제어 정보의 표본 값에 기록된 각 화소별 투명도 값으로, 컨테이너 이미지의 각 화소의 알파 값을 환원한다. 원본 이미지의 투명도와는 약간의 차이는 있을 수 있지만, 상술한 바와 같이 그 차이는 사람의 눈으로 차이를 느끼기에는 어렵다. 따라서 최종 디코딩이 완료되면, 컨테이너 이미지는 거의 원래 상태로 복원되고, 동영상이나 음성 등의 부가 데이터가 별도로 추출된다.
이상과 같은 알파 채널을 이용하여 부가 데이터를 삽입하는 경우, 알파 채널에 삽입되는 부가 데이터의 값에 따라 R/G/B 채널의 값이 변경되는 경우가 있을 수 있다. 즉, 알파 채널에 삽입되는 부가 데이터의 값이 0인 경우, 이는 완전 투명으로, R/G/B 채널의 값은 의미가 없어지므로 R/G/B 채널의 값이 원래 값을 유지하지 못하고 알파 채널과 마찬가지로 0으로 변경될 수 있다. 그리고 알파 채널에 삽입되는 부가 데이터의 값이 1인 경우, R/G/B 채널의 값은 가장 큰 채널 값, 즉 255로 변경될 수 있다. 이것을 방지하기 위해, 알파 채널에 삽입되는 부가 데이터의 값이 0 또는 1인 경우 이 값을 R/G/B 채널에 영향을 주지 않는 값으로 변경하고 이를 알리는 별도의 안내 정보를 컨테이너 이미지에 삽입할 수 있다.
예를 들어, 특정 화소의 알파 채널에 삽입되는 부가 데이터의 값이 0 또는 1인 경우 해당 알파 채널에는 해당 부가 데이터의 원래 값이 아닌, 특정한 다른 값으로 변경하여 기록하고, 이를 알리는 비트를 제어 정보에 기록하는 것이다. 예를 들어, 부가 데이터의 값이 0에서 상기 특정한 다른 값으로 변경된 경우 해당 화소에 대한 비트로서 0을 제어 정보에 기록하고, 부가 데이터의 값이 1에서 상기 특정한 다른 값으로 변경된 경우 해당 화소에 대한 비트로서 1을 제어 정보에 기록한다.
구체적인 예를 들면, 안내 정보의 그 비트열이 [00011]이라고 하면, 그 비트열의 각 비트는 화소를 지시하고, 제 1 화소의 알파 채널의 값이 상기 특정한 다른 값으로 삽입되어 있는 경우, 부가 데이터의 추출시, 상기 비트열의 첫 번째 비트는 0이므로, 해당 제 1 화소의 알파 채널에 삽입된 부가 데이터는 상기 특정한 다른 값이 원래 값이 아니므로, 0을 추출한다. 그리고 제 4 화소의 알파 채널의 값이 상기 특정한 다른 값으로 삽입되어 있는 경우, 부가 데이터의 추출시, 상기 비트열의 네 번째 비트는 1이므로, 해당 제 4 화소의 알파 채널에 삽입된 부가 데이터는 상기 특정한 다른 값이 원래 값이 아니므로, 1을 추출한다. 한편, 비트열에 0 또는 1이 기록되어 있더라도, 이에 대응하는 화소의 알파 채널에 상기 특정한 다른 값이 기록되어 있지 않은 경우에는, 해당 화소의 알파 채널에 기록된 상기 특정한 다른 값은 원래 값으로서 추출한다.
다만, 알파 채널에 삽입된 부가 데이터 자체 값이 상기 특정한 다른 값일 수 있다. 즉, 0 또는 1이기 때문에 대체하여 삽입된 특정한 다른 값이 아닌, 부가 데이터 자체의 값이 상기 특정한 다른 값일 수 있다. 따라서 컨테이너 이미지의 알파 채널에서 부가 데이터를 추출할 때, 알파 채널에 기록된 상기 특정한 다른 값의 부가 데이터가, 0 또는 1을 대체하여 삽입된 것인지, 아니면 그 자체의 값인지 확인이 필요하다. 그러므로, 부가 데이터의 값이 1 또는 0에서 상기 특정한 다른 값으로 변경된 것을 나타내는 상기 안내 정보 비트열(제 1 비트열) 이외, 알파 채널에 삽입된 상기 특정한 다른 값이, 0 또는 1에서 변경된 것이 아닌, 부가 데이터 자체의 값임을 나타내는 또 다른 안내 정보인 비트열(제 2 비트열)을 알파 채널의 제어 정보에 추가할 필요가 있다. 예를 들어, 제 1 비트열에서 '0'인 경우 제 2 비트별에 상관없이 부가 데이터가 '0'에서 상기 '특정한 다른 값'으로 변경된 것으로 판단하고, 제 1 비트열에서 '1'인 경우 제 2 비트열까지 참조하여 제 2 비트열의 대응하는 비트가 '0'인 경우에는 해당 부가 데이터는 '1'에서 상기 '특정한 다른 값'으로 변경된 것으로 판단하고 제 2 비트열의 대응하는 비트가 '1'인 경우에는 해당 부가 데이터의 '특정한 다른 값'은 부가 데이터 자체 값으로 판단한다.
다른 실시 형태로서, 별도의 안내 정보를 제어 정보에 기록하지 않고, R/G/B 채널의 값에 변화를 주는 방법도 고려할 수 있다. 즉, 특정 화소의 알파 채널에 삽입되는 부가 데이터가 0인 경우, 해당 부가 데이터를 상기 특정한 다른 값으로 변경하여 알파 채널에 삽입하고, R/G/B 채널 값을 모두 짝수로 설정하고, 알파 채널에 삽입되는 부가 데이터가 1인 경우, 해당 부가 데이터를 상기 특정한 다른 값으로 변경하여 알파 채널에 삽입하고, R/G/B 채널 값을 모두 홀수로 설정한다. R/G/B 채널의 값의 끝자리만 홀수 또는 짝수로 변경하는 것이므로 R/G/B 색상에 큰 영향은 없다.
또 다른 실시 형태로서, 알파 채널에 삽입되는 부가 데이터의 값을 판단하여 '128'보다 작으면(즉, 16 진수의 중간 값보다 작은 경우) '+128'을 하여 전체적인 데이터 값을 상승시켜서 해결할 수 있다. 예를 들어, 알파 채널에 삽입되는 부가 데이터의 값이 '78'이라면 여기에 '128'을 더하여 '206'으로 갱신하여 기록하고, 알파 채널에 삽입되는 부가 데이터의 값이 200이라면 128보다 크기 때문에 그대로 200을 기록한다. 이와 같이 각 화소의 알파 채널에 삽입된 부가 데이터의 값의 갱신 기록을 별도의 안내 정보인 비트열로 생성하여 제어 정보에 기록한다. 예를 들어 안내 정보 비트열이 [001]인 경우, 첫 번째 비트는 0이므로 해당 화소의 부가 데이터의 값은 갱신되지 않았고 세 번째 비트는 128이 더해져 갱신되었음을 나타내므로, 컨테이너 이미지의 알파 채널에서 부가 데이터 추출시 상기 세 번째 비트에 대응하는 화소의 알파 채널에 삽입된 부가 데이터에 128을 차감한다. 또는 안내 정보를 생성하는 대신에, R/G/B 채널 값을 '홀수' 혹은 '짝수'로 기록하여 정보로 활용할 수 있다.
여기서는 16 진수의 중간 값인 128을 중심으로 128을 더하여 알파 채널의 값을 128에서 FF(즉, 255)로 축소하였으나, 다른 예로서 알파 채널에 삽입되는 부가 데이터의 값을 최상위 값(예, FF)에 좀더 접근시킬 수 있다. 즉, 32, 64, 128을 기준으로, 알파 채널에 삽입된 부가 데이터의 값이 32보다 작으면 해당 부가 데이터에 32+64+128을 하고, 32와 같거나 크면서 64보다 작으면 부가 데이터에 64+128을 하며, 64와 같거나 크면서 128보다 작으면 부가 데이터에 +128을 하여, 알파 채널에 삽입되는 부가 데이터의 값을 244 ~ 255로 축소할 수 있다. 이러한 것을 나타내기 위해 3 개의 안내 정보 비트열(각 비트열의 비트는 화소를 지시하며 그 값은 상기 각 범위를 지시함)을 생성하여 제어 정보에 추가할 수 있다. 또는 안내 정보 대신에, R/G/B 채널 각각을 상기 각 범위에 대응시키고 R/G/B 채널 각각을 짝수 또는 홀수로 설정하여 해당 화소의 부가 데이터가 어느 범위에 속하는지 나타낼 수 있다. 짝수이면 범위에 속하고 홀수이면 범위에 속하지 않는 식으로 나타낼 수 있다.
이와 같은, 부가 데이터에 일정한 값을 더하여 갱신함으로써 알파 채널에 삽입되는 부가 데이터의 값을 최대한 상위 값으로 축소하는 이유는, 컨테이너 이미지의 디스플레이시 이미지 품질 저하를 방지하기 위함이다. 알파 채널에 부가 데이터를 삽입할 경우, 부가 데이터의 값은 일정한 값이 아니라, 디스플레이 관점에서 볼 때, 00에서 FF 사이의 무작위로 선별된 값으로서, 그 값이 낮은 값일 경우, 완전 투명에 가까워져 컨테이너 이미지의 피사체와 디스플레이 수단의 배경화면이 겹쳐져 보일 수 있게 되고, 이는 컨테이너 이미지 본래의 이미지 색상을 왜곡할 수 있기 때문이다. 그리고 부가 데이터에 일정한 값을 더하여 갱신함으로써 부가 데이터 값이 0과 1인 것으로 인해 R/G/B 채널의 값이 본래의 값으로 유지되지 않고 0과 가장 큰 채널 값으로 변경되는 문제점을 자동으로 해결할 수 있다.
(2) R/G/B 채널에 부가 데이터를 삽입하는 방법
컨테이너 이미지의 각 화소는 알파 채널, 적색(R) 채널, 녹색(G) 채널, 청색(B) 채널로 구성되어 있다. 본 실시예에서는 부가 데이터를 R/G/B 채널 중 하나의 채널에 삽입한다. 이하에서는 적색 채널에 부가 데이터를 삽입하는 것을 예로 들어 설명한다.
첫 번째 방법으로, 컨테이너 이미지의 적색 채널의 16 진수의 1의 자리인 4 비트 대부분을 부가 데이터 삽입 용도로 사용하는 방법이다. 즉, 컨테이너 이미지의 각 픽셀(화소, 이하에서는 화소와 픽셀을 혼용함)의 적색 채널의 하위 4 비트, 즉 16 진수의 1의 자리의 값을 어느 한 값으로 고정하고 해당 4 비트에 부가 데이터를 삽입하는 것이다. 이를 위해, 프로그램은 제어 정보를 생성하는데, 해당 제어 정보에 해당 컨테이너 이미지는 적색 채널을 이용하여 부가 데이터를 삽입한다는 것을 나타내는 식별자와, 컨테이너 이미지에서 부가 데이터를 추출하며 컨테이너 이미지를 복원할 때 각 픽셀의 적색 채널의 하위 4 비트, 즉 16 진수의 1의 자리의 값을 어느 한 값으로 할당하는 것을 나타내는 표본 값을 포함시킨다.
예를 들어, #ERHO을 들 수 있다. 여기서 ER은 R/G/B 채널에 부가 데이터를 삽입하되 적색(R) 채널에 부가 데이터를 삽입하였다는 것을 나타내는 식별자이고, H0는 적색 채널의 16 진수의 1의 자리에 부가 데이터가 삽입된 컨테이너 이미지에서 부가 데이터를 추출한 후 컨테이너 이미지를 복원할 때, 해당 적색 채널의 16 진수의 1의 자리에 무조건 8을 할당하는 것을 나타내는 표본 값이다. HO 대신 LO가 기록되어 있는 경우, 적색 채널에 7을 할당한다.
예를 들어, 컨테이너 이미지의 제 10 픽셀의 적색 채널의 값이 'AB'이라고 가정할 때, 16 진수의 1의 자리인 'B' 부분, 즉 4 비트에 부가 데이터(예, 1111)를 삽입하고, 나중에 컨테이너 이미지에서 부가 데이터를 추출할 때, 제 10 픽셀의 적색 채널의 16 진수의 1의 자리에서 부가 데이터(예, 1111)을 추출한 후 해당 1의 자리에는 원래 값인 'B' 대신 7 또는 8을 할당한다. 원래 적색 값과는 차이는 있겠지만, 16 진수의 10의 자리는 원래 값을 유지하므로 큰 차이는 나지 않는다.
제어 정보를 생성한 후, 프로그램은 컨테이너 이미지의 각 픽셀의 적색 채널의 값 중 16 진수의 1의 자리의 값을 헤더 정보, 제어 정보 및 부가 데이터로 대체한다. 이는 알파 채널에 부가 데이터를 삽입할 때의 방식과 동일하다. 설명한 바와 같이, 본 방식에서는 적색 채널의 16 진수의 1의 자리를 모두 동일한 값으로 적용시키므로, 각 픽셀마다의 표본 값이 불필요하고, 하나의 표본 값(상기 예에서, HO 또는 LO)만이 필요하므로, 제어 정보의 크기도 줄일 수 있다.
프로그램은 컨테이너 이미지에서 부가 데이터의 추출시, 헤더 정보와 제어 정보에 따라 부가 데이터를 추출한 후(즉, 적색 채널의 16 진수의 1의 자리에서 부가 데이터를 추출), 컨테이너 이미지의 각 픽셀의 적색 채널의 값을 복원한다. 즉 각 픽셀의 적색 채널의 16 진수의 10의 자리는 원래 값을 유지하고 있고 1의 자리는 7 또는 8로 복원되게 된다.
두 번째 방법은 상기 첫 번째 방법보다는 원 색상 값을 크게 훼손하지 않는 방식으로, 컨테이너 이미지의 적색 채널의 16 진수의 1의 자리인 4 비트 중 대략 3 비트를 부가 데이터 삽입 용도로 사용하는 방법이다. 즉, 첫 번째 방법에서는 컨테이너 이미지의 각 픽셀의 적색 채널의 하위 4 비트, 즉 16 진수의 1의 자리의 값을 복원시에 어느 한 값으로 고정하는 반면, 본 두 번째 방법에서는 컨테이너 이미지의 각 픽셀의 적색 채널의 16진수의 1의 자리의 색상 값을 두 개의 범위로 분할하여 복원시에 두 범위 중 어느 한 범위의 값으로 할당한다.
이를 위해, 프로그램은 제어 정보를 생성하는데, 제어 정보에 해당 컨테이너 이미지는 적색 채널을 이용하여 부가 데이터를 삽입한다는 것을 나타내는 식별자와, 컨테이너 이미지에서 부가 데이터를 추출하며 컨테이너 이미지를 복원할 때 각 픽셀의 적색 채널의 16 진수의 1의 자리의 값을 두 범위의 값 중 어느 범위의 값으로 할당하는지를 나타내는 비트 값, 즉 표본 값을 포함시킨다.
예를 들어, #ER[01010...]을 들 수 있다. 여기서 ER은 R/G/B 채널에 부가 데이터를 삽입하되 적색(R) 채널에 부가 데이터를 삽입하였다는 것을 나타내는 식별자이고, [01010...]는 화소 순서에 따른 각 화소의 적색 채널의 16 진수의 1의 자리의 값이 어느 범위의 값으로 할당되었는지를 나타내는 비트열인 표본 값이다. 16 진수를 두 범위로 나누면, 0 내지 7의 범위와 8 내지 F의 범위로 나누어질 수 있다.
따라서 상기 [01010...]에 기록된 '0'은 해당 화소의 적색 채널의 16 진수의 1의 자리 값이 7 이하이고 복원시 원래 값에 상관없이 '3'으로 할당함을 나타내고, '1'은 해당 화소의 적색 채널의 16 진수의 1의 자리 값이 7 초과이므로 복원시 원래 값에 상관없이 'B'로 할당함으로 나타낸다. 더 구체적으로 설명하면, 제 1 픽셀의 적색 채널의 16 진수의 1의 자리에 대한 값은 '0'이므로 복원시에 제 1 픽셀의 적색 채널의 16 진수의 1의 자리에는 '3'을 할당하고, 제 2 픽셀의 적색 채널의 16 진수의 1의 자리에는 'B'를 할당하며, 이와 같은 방식으로 제 3 픽셀에는 '3', 제 4 픽셀에는 'B' 그리고 제 5 픽셀에는 '3'을 할당한다.
위 예에서 0 내지 7의 대표 값으로 '3'을 할당하고, 8 내지 F의 대표 값으로 'B'할당하는 것으로 설명하였다. 그러나 '3'과 'B'는 각 범위의 정확한 중간 값이 아니다. 0 내지 7의 범위에서 '3'과 '4'는 중간에 가장 가까운 값이고, 8 내지 F의 범위에서 'B'와 'C'가 중간에 가장 가까운 값이다. 따라서 실시예에 따라서는, '3' 대신 '4'를 할당할 수 있고, 'B' 대신 'C'를 할당하도록 할 수 있다. 미리 프로그램에 정의하여 사용할 수 있지만, 그 두 값을 선택적으로 사용할 수 있다.
3 또는 4 그리고 B 또는 C를 선택적으로 사용할 경우, 프로그램은 제어 정보에 3 또는 4 중 어느 값을 사용하는지, 그리고 B 또는 C 중 어느 값을 사용하는지를 기록한다. 예를 들어, #ERHL[01010...]을 들 수 있다. 여기서 ER은 R/G/B 채널에 부가 데이터를 삽입하되 적색(R) 채널에 부가 데이터를 삽입하였다는 것을 나타내는 식별자이고, HL의 H는 0 내지 7 범위의 대표 값으로 4를 할당하는 것을 나타내고, L은 8 내지 F 범위의 대표 값으로 B를 할당하는 것을 나타낸다. 반대로, LH가 기록된 경우, 앞의 L은 0 내지 7 범위의 대표 값으로 3을 할당하는 것을 나타내고, H는 8 내지 F 범위의 대표 값으로 C를 할당하는 것을 나타낸다. 그리고 [01010...]는 화소 순서에 따른 각 화소의 적색 채널의 16 진수의 1의 자리의 값이 어느 범위에 해당하는지를 나타내는 비트 값이다.
예를 들어, 컨테이너 이미지의 제 10 픽셀의 적색 채널의 값이 'AF'라고 가정할 때, 16 진수의 1의 자리인 'F' 부분은 부가 데이터의 삽입에 활용되고, 나중에 컨테이너 이미지에서 부가 데이터를 추출할 때(즉 적색 채널의 16 진수의 1의 자리에서 부가 데이터 추출), 제 10 픽셀의 적색 채널의 16 진수의 1의 자리에는 원래 값인 'F' 대신 'B' 또는 'C'를 할당한다. 원래 적색 값과는 차이는 있겠지만 가장 많은 차이가 4(예, 실제 값은 0이나 4로 할당한 경우)로서 시각적으로 구별하는 것은 어렵다.
제어 정보를 생성한 후, 프로그램은 컨테이너 이미지의 각 픽셀의 적색 채널의 데이터를 헤더 정보, 제어 정보 및 부가 데이터로 대체한다. 즉 적색 채널의 16 진수의 1의 자리의 원래 값 대신에 헤더 정보, 제어 정보 및 부가 데이터를 삽입한다. 이는 알파 채널에 부가 데이터를 삽입할 때의 방식과 동일하다.
프로그램은 컨테이너 이미지에서 부가 데이터의 추출시, 헤더 정보와 제어 정보에 따라 부가 데이터를 추출한 후, 즉 적색 채널의 16 진수의 1의 자리에서 부가 데이터를 추출한 후, 컨테이너 이미지의 각 픽셀의 적색 채널의 값, 즉 16 진수의 1의 자리 값을 복원한다.
상기 두 번째 방법의 예로서, 컨테이너 이미지의 각 픽셀의 적색 채널의 16진수의 1의 자리의 색상 값을 두 개의 범위로 분할하여 복원시에 두 범위 중 어느 한 범위의 값으로 할당하는 것을 설명하였다. 이를 더 확장할 수 있다.
즉, 색상 값을 두 개의 범위로 분할한 후 각 범위를 다시 두 개의 범위로 분할함으로써 총 4 개의 범위로 분할하여 원래 색상 값을 표현할 수 있다. 이를 위해, 제어 정보로서, #ERHLLH[01010...][10101...]과 같이 설정할 수 있다.
여기서 ER은 R/G/B 채널에 부가 데이터를 삽입하되 적색(R) 채널에 부가 데이터를 삽입하였다는 것을 나타내는 식별자이고, 첫 번째 비트열인 [01010...]은 각 픽셀이 0 내지 7의 범위인지, 또는 8 내지 F의 범위인지를 나타내고, 두 번째 비트열인 [10101...]은 각 픽셀이 0 내지 7의 범위 중 0 내지 3의 범위와 4 내지 7의 범위 중 어느 범위인지 또는 8 내지 F의 범위 중 8 내지 B의 범위와 C 내지 F의 범위 중 어느 범위인지를 나타낸다. 비트열에서 0은 하위 범위를 나타내고, 1은 상위 범위를 나타낸다. 예를 들어, 첫 번째 비트열과 두 번째 비트열에서 제 1 픽셀의 대응 비트는 0/1이므로, 0 내지 7의 범위 중 0 내지 3의 범위임을 나타낸다.
그리고 제어 정보 #ERHLLH[01010...][10101...]에서 'HLLH'는 총 4 개의 범위에서 대표 값을 나타내는 것으로서, 순서에 따라 0 내지 3의 범위, 4 내지 7의 범위, 8 내지 B의 범위, C 내지 F의 범위 각각에서의 대표 값을 나타낸다. H는 High로서 중간 값 중 높은 값을 의미하고, L은 Low로서 중간 값 중 낮은 값을 의미한다. 따라서 'HLLH'에서 첫 번째 H는 0 내지 3의 범위의 중간 값 중 높은 값으로서 1과 2 중 2를 나타낸다. 두 번째 L은 4 내지 7의 범위의 중간 값 중 낮은 값으로서 5와 6 중 5를 나타낸다. 세 번째 L은 8 내지 B의 범위의 중간 값 중 낮은 값으로서 9와 A 중 9를 나타내고, 네 번째 H는 C 내지 F의 범위의 중간 값 중 높은 값으로서 D와 E 중 E를 나타낸다.
즉, 두 번째 방법에서, 컨테이너 이미지의 각 픽셀의 적색 채널의 16 진수의 1의 자리의 색상 값을 두 개의 범위로 분할하는 경우에는 4 비트 중 1 비트만 적색 채널의 색상을 표현하고 나머지 3 비트는 부가 데이터를 삽입하는 용도로 사용된다고 볼 수 있고, 각 픽셀의 적색 채널의 16 진수의 1의 자리의 색상 값을 네 개의 범위로 분할하는 경우에는 4 비트 중 2 비트만 적색 채널의 색상을 표현하고 나머지 2 비트는 부가 데이터를 삽입하는 용도로 사용된다고 볼 수 있다. 즉 범위를 세분화할수록 보다 정확하게 원 색상을 표현할 수 있지만 부가 데이터를 삽입할 수 있는 용량은 줄어든다고 볼 수 있다.
이하에서는 부가 데이터가 삽입된 컨테이너 이미지를 암호화하고 복호화하는 방법을 설명한다.
XOR 방식 암호화 및 복호화
도 3은 본 발명의 일 실시예에 따른 컨테이너 이미지의 암호화 방법을 설명하는 흐름도로서, 본 실시예에는 XOR 방식으로 말할 수 있다.
도 3을 참조하면, 먼저 프로그램은 사용자로부터 암호화 키를 입력받는다(S301). 그리고 프로그램은 상기 암호화 키를 바이너리 값으로 변환한다(S303). 이하에서는 키 바이너리라 한다.
프로그램은 컨테이너 이미지의 각 픽셀의 부가 데이터가 삽입된 채널, 예를 들어 알파 채널의 값의 홀수 또는 짝수 여부에 따라 바이너리 값을 생성한다(S305). 이하에서는 대상 바이너리라 한다. 이때 프로그램은 알파 채널 값의 16 진수의 10의 자리 또는 1의 자리 중 어느 하나를 기준으로 홀수 또는 짝수 여부를 판단한다. 예를 들어, 알파 채널 값은 16 진수로 이루어지는데, 16 진수의 1의 자리가 홀수이면 '1', 짝수이면 '0'으로 인식하여 상기 대상 바이너리를 생성한다. 따라서 대상 바이너리의 각 비트는 하나의 픽셀의 알파 채널을 지시하는 것으로 이해될 수 있다.
프로그램은 상기 대상 바이너리와 상기 키 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 변환 바이너리를 생성한다(S307). 예를 들어, 대상 바이너리가 [10110011]이고 키 바이너리가 [01011001]인 경우, 동일 위치의 비트 값을 서로 비교하여, 동일하면 1, 동일하지 않으면 0을 생성하여 변환 바이너리를 생성한다. 본 예에서 변환 바이너리는 [00010101]이 된다.
프로그램은 상기 대상 바이너리와 상기 생성된 변환 바이너리의 각 동일 위치의 비트를 비교하여 그 비교 결과에 따라, 즉 대상 바이너리의 각 위치의 비트 값과 상기 변환 바이너리의 동일 위치의 비트 값을 비교하여, 대상 바이너리의 비트 값이 변환 바이너리에서 어떤 비트 값으로 변경되었는지 분석하고, 컨테이너 이미지의 각 픽셀의 알파 채널의 값을 변경한다(S309). 상기 홀수 또는 짝수 여부의 판단시 사용한 자리 수의 값을 짝수 또는 홀수로 변경한다.
구체적으로, 대상 바이너리는 [10110011]이고 변환 바이너리가 [00010101]인 경우, 첫 번째 비트는 제 1 픽셀의 알파 채널을 의미하고, 해당 비트는 대상 바이너리에서 '1'이고 변환 바이너리에서 '0'이다. 즉 '1'에서 '0'으로 변경되었으므로, 해당 제 1 픽셀의 알파 채널의 16 진수의 1의 자리 수 값에 -1을 연산하여 짝수로 변환한다. 다른 예로, 여섯 번째 비트는 제 6 픽셀의 알파 채널을 의미하고, 해당 비트는 대상 바이너리에서 '0'이고 변환 바이너리에서 '1'이다. 즉 '0'에서 '1'로 변경되었으므로, 해당 제 6 픽셀의 알파 채널의 16 진수의 1의 자리 수 값에 +1을 연산하여 홀수로 변환한다. 한편, 대상 바이너리와 변환 바이너리에서 동일 위치의 비트 값이 변화된 것이 없다면 해당 비트 값에 대응하는 픽셀의 알파 채널의 16 진수의 1의 자리 수 값을 변화시키지 않는다.
도 4는 도 3의 암호화 방법에 대응하는 복호화 방법을 설명하는 흐름도로서, 도 3의 방법으로 암호화된 컨테이너 이미지를 복호화하는 방법이다. 즉, XOR 방식의 복호화 방법으로 말할 수 있다.
도 4를 참조하면, 먼저 프로그램은 복호화를 위해 사용자로부터 암호화 키를 입력받는다(S401). 그리고 프로그램은 상기 암호화 키를 바이너리 값으로 변환하여 키 바이너리를 생성한다(S403).
프로그램은 컨테이너 이미지의 각 픽셀에서 부가 데이터가 삽입된 채널, 예를 들어 알파 채널 값의 홀수 또는 짝수 여부에 따라 대상 바이너리를 생성한다(S405). 이때 프로그램은 알파 채널 값의 16 진수의 10의 자리 또는 1의 자리 중 어느 하나를 기준으로 홀수 또는 짝수 여부를 판단하는데, 암호화 때와 동일한 자리 수를 대상으로 홀수 또는 짝수 여부를 판단한다. 예를 들어, 암호화 때 알파 채널 값 중 16 진수의 1의 자리를 기준으로 대상 바이너리를 생성한 경우, 복호화 때에도 동일하게 16 진수의 1의 자리를 기준으로 대상 바이너리를 생성하는 것이다. 프로그램은 16 진수의 1의 자리 수가 홀수이면 '1', 짝수이면 '0'으로 인식하여 상기 대상 바이너리를 생성한다. 대상 바이너리의 각 비트는 하나의 픽셀의 알파 채널을 지시하는 것으로 이해될 수 있다.
프로그램은 상기 대상 바이너리와 상기 키 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 변환 바이너리를 생성한다(S407). 예를 들어, 대상 바이너리가 [00010101]이고 키 바이너리가 [01011001]인 경우, 동일 위치의 비트 값을 서로 비교하여, 동일하면 1, 동일하지 않으면 0을 생성하여 변환 바이너리를 생성한다. 본 예에서 변환 바이너리는 [10110011]이 된다.
프로그램은 상기 대상 바이너리와 상기 생성된 변환 바이너리의 각 동일 위치의 비트를 비교하여 그 비교 결과에 따라, 즉 대상 바이너리의 각 위치의 비트 값과 상기 변환 바이너리의 동일 위치의 비트 값을 비교하여, 대상 바이너리의 비트 값이 변환 바이너리에서 어떤 비트 값으로 변경되었는지 분석하여, 컨테이너 이미지의 각 픽셀의 알파 채널의 값을 복원한다(S409). 상기 홀수 또는 짝수 여부의 판단시 사용한 자리 수의 값을 짝수 또는 홀수로 변경한다.
구체적으로, 대상 바이너리는 [00010101]이고 변환 바이너리가 [10110011]인 경우, 첫 번째 비트는 제 1 픽셀의 알파 채널을 의미하고, 해당 비트는 대상 바이너리에서 '0'이고 변환 바이너리에서 '1'이다. 즉 '0'에서 '1'로 변경되었으므로, 해당 제 1 픽셀의 알파 채널의 16 진수의 1의 자리 수 값에 +1을 연산하여 홀수로 변환한다. 다른 예로, 여섯 번째 비트는 제 6 픽셀의 알파 채널을 의미하고, 해당 비트는 대상 바이너리에서 '1'이고 변환 바이너리에서 '0'이다. 즉 '1'에서 '0'으로 변경되었으므로, 해당 제 6 픽셀의 알파 채널의 16 진수의 1의 자리 수 값에 -1을 연산하여 짝수로 변환한다. 한편, 대상 바이너리와 변환 바이너리에서 동일 위치의 비트 값이 변화된 것이 없다면 해당 비트 값에 대응하는 픽셀의 알파 채널의 16 진수의 1의 자리 수 값을 변화시키지 않는다.
이와 같이 컨테이너 이미지의 해당 채널들의 픽셀 값이 모두 변환되면 복호화가 완료된다. 이와 같이 복호화가 완료된 컨테이너 이미지에서 앞서 설명한 방법으로 부가 데이터를 추출할 수 있다.
이상의 XOR 암호화 및 복호화에 대한 구체적인 예를 설명한다. 이하의 예에서 부가 데이터가 삽입된 채널을 알파 채널이라 가정한다.
XOR 암호화의 예
1 단계 : 사용자로부터 암호화 키로서, 아스키 코드와 유니 코드로 구성된 문자열 'eBook&전자서식'을 입력받는다.
2 단계 : 상기 문자열을 아스키 코드 문자 값과 유니 코드 문자 값으로 변환하고, 각 문자 값을 8 비트로 분리하며, 분리된 값을 2로 나누기 연산하여 나머지 값에 따라 0, 1로 분류된 키 바이너리를 생성한다.
즉, 상기 문자열의 아스키 코드 문자 값과 유니 코드 문자 값은 [65,42,6f,6f,6b,26,c804,c790,c11c,c2dd]이고, 이를 8 비트로 분리하면, [65,42,6f,6f,6b,26,c8,04,c7,90,c1,1c,c2,dd]이다. 그리고 각 값을 2로 나누기 연산하여 나머지 값에 따라 0, 1로 분류하면 키 바이너리는 [1,0,1,1,1,0,0,0,1,0,1,0,0,1]이다.
3 단계 : 컨테이너 이미지의 각 픽셀의 알파 채널에서 픽셀 값을 추출하고, 그 픽셀 값의 1의 자리, 즉 16 진수의 1의 자리 수를 2로 나누기 연산하여 나머지 값에 따라 대상 바이너리를 생성한다. 즉 홀수이면 '1'로, 짝수이면 '0'으로 인식하여 대상 바이너리를 생성한다.
예컨대, 컨테이너 이미지의 제 1 픽셀부터 제 18 픽셀까지의 알파 채널의 픽셀 값이 [1B, FA, 7B, 10, FC, 5A, 50, F3, 00, 17, FC, 15, 5D, 7A, CE, B2, 5A, 2B]라면, 각 픽셀의 16 진수의 1의 자리 수의 홀수 또는 짝수 여부에 따라 대상 바이너리를 생성하면, [1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,0,0,1]이다. 예를 들어, 제 1 픽셀의 16 진수의 1의 자리는 'B'이고 'B'는 홀수이므로 대상 바이너리에서 '1'이 된다.
4 단계 : 상기 대상 바이너리와 상기 키 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 변환 바이너리를 생성한다. 동일 위치의 각 비트 값을 서로 비교하여, 동일하면 1, 동일하지 않으면 0을 생성하여 변환 바이너리를 생성한다. 본 예에서 변환 바이너리는 [1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,0,1]이다.
5 단계 : 상기 대상 바이너리와 상기 생성된 변환 바이너리의 각 동일 위치의 비트를 비교하여 비교 결과에 따라 컨테이너 이미지의 각 픽셀의 알파 채널의 값을 변경한다. 즉, 대상 바이너리의 '1'이 변환 바이너리에서 '0'으로 변경되는 경우, 컨테이너 이미지의 해당 위치에 대응하는 픽셀의 알파 채널의 16 진수의 1의 자리 수 값에 -1을 연산하여 짝수로 변환한다. 반대로, 대상 바이너리의 '0'이 변환 바이너리에서 '1'로 변경된 경우, 컨테이너 이미지의 해당 위치에 대응하는 픽셀의 알파 채널의 16 진수의 1의 자리 수 값에 +1을 연산하여 홀수로 변환한다. 동일한 경우에는 변환하지 않는다.
상기 예에서, 대상 바이너리는 [1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,0,0,1]이고, 변환 바이너리는 [1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,0,1]이다. 각 위치의 비트 값을 비교하여 컨테이너 이미지의 알파 채널에 적용하면, 1B, FB, 7B, 10, FC, 5B, 51, F2, 00, 16, FC, 14, 5C, 7A, CE, B3, 5A, 2B가 된다. 원본 알파 채널과 암호화 후의 알파 채널을 비교하면 다음과 같다.
원본 알파 채널 : [1B, FA, 7B, 10, FC, 5A, 50, F3, 00, 17, FC, 15, 5D, 7A, CE, B2, 5A, 2B]
암호화 후 알파 채널 : [1B, FB, 7B, 10, FC, 5B, 51, F2, 00, 16, FC, 14, 5C, 7A, CE, B3, 5A, 2B]
XOR 복호화의 예
1 단계 : 사용자로부터 암호화 키로서, 암호화 때 사용된 아스키 코드와 유니 코드로 구성된 문자열 'eBook&전자서식'을 입력받는다. 그리고 암호화 때와 마찬가지 방식으로 키 바이너리를 생성한다. 키 바이너리는 [1,0,1,1,1,0,0,0,1,0,1,0,0,1]이다.
2 단계 : 컨테이너 이미지의 각 픽셀의 알파 채널에서 픽셀 값을 추출하고, 암호화 때와 마찬가지로 그 픽셀 값의 1의 자리, 즉 16 진수의 1의 자리 수를 2로 나누기 연산하여 나머지 값에 따라 대상 바이너리를 생성한다. 즉 홀수이면 '1'로, 짝수이면 '0'으로 인식하여 대상 바이너리를 생성한다.
암호화된 알파 채널의 픽셀 값은 [1B, FB, 7B, 10, FC, 5B, 51, F2, 00, 16, FC, 14, 5C, 7A, CE, B3, 5A, 2B]이고, 대상 바이너리는 [1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,0,1]이다.
3 단계 : 상기 대상 바이너리와 상기 키 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 변환 바이너리를 생성한다. 동일 위치의 각 비트 값을 서로 비교하여, 동일하면 1, 동일하지 않으면 0을 생성하여 변환 바이너리를 생성한다. 본 예에서 변환 바이너리는 [1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,0,0,1]이다.
4 단계 : 상기 대상 바이너리와 상기 생성된 변환 바이너리의 각 동일 위치의 비트를 비교하여 비교 결과에 따라 컨테이너 이미지의 각 픽셀의 알파 채널의 값을 변경한다. 즉, 대상 바이너리의 '1'이 변환 바이너리에서 '0'으로 변경되는 경우, 컨테이너 이미지의 해당 위치에 대응하는 픽셀의 알파 채널의 16 진수의 1의 자리 수 값에 -1을 연산하여 짝수로 변환한다. 반대로, 대상 바이너리의 '0'이 변환 바이너리에서 '1'로 변경된 경우, 컨테이너 이미지의 해당 위치에 대응하는 픽셀의 알파 채널의 16 진수의 1의 자리 수 값에 +1을 연산하여 홀수로 변환한다. 동일한 경우에는 변환하지 않는다.
상기 예에서, 대상 바이너리는 [1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,0,1]이고, 변환 바이너리는 [1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,0,0,1]이다. 각 위치의 비트 값을 비교하여 컨테이너 이미지의 알파 채널에 적용하면, [1B, FA, 7B, 10, FC, 5A, 50, F3, 00, 17, FC, 15, 5D, 7A, CE, B2, 5A, 2B]가 된다. 암호화된 알파 채널과 복호화 후의 알파 채널을 비교하면 다음과 같다.
암호화된 알파 채널 : [1B, FB, 7B, 10, FC, 5B, 51, F2, 00, 16, FC, 14, 5C, 7A, CE, B3, 5A, 2B]
복호화 후 알파 채널 : [1B, FA, 7B, 10, FC, 5A, 50, F3, 00, 17, FC, 15, 5D, 7A, CE, B2, 5A, 2B]
위 복호화 후 알파 채널과 암호화되기 전의 원본 알파 채널을 비교하면 동일하다.
교환 방식 암호화 및 복호화
도 5는 본 발명의 다른 실시예에 따른 컨테이너 이미지의 암호화 방법을 설명하는 흐름도로서, 본 실시예에는 교환 방식으로 말할 수 있다.
도 5를 참조하면, 먼저 프로그램은 사용자로부터 암호화 키를 입력받는다(S501). 그리고 프로그램은 상기 암호화 키를 키 바이너리로 변환한다(S503).
프로그램은 부가 데이터가 삽입된 채널, 예를 들어 알파 채널 값의 16진수 10의 자리와 1의 자리의 홀수 또는 짝수 여부에 따라 두 개의 대상 바이너리를 생성한다(S505).
예를 들어, 알파 채널의 픽셀 값은 16 진수로 이루어지는데, 16진수의 10의 자리가 홀수이면 '1' 짝수이면 '0'으로 인식하여 제 1 대상 바이너리를 생성하고, 또한 16진수의 1의 자리가 홀수이면 '1' 짝수이면 '0'으로 인식하여 제 2 대상 바이너리를 생성한다. 대상 바이너리의 각 비트는 하나의 픽셀을 지시하는 것으로 이해될 수 있다.
프로그램은 상기 제 1 대상 바이너리와 상기 제 2 대상 바이너리 그리고 상기 키 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 16진수의 10의 자리와 1의 자리의 교환 여부를 판단한다(S507). 즉, 프로그램은 제 1 대상 바이너리와 제 2 대상 바이너리 그리고 키 바이너리의 동일 위치의 비트 값이 모두 동일한지 판단한다.
모두 동일한 경우, 해당 비트에 대응하는 픽셀의 부가 데이터가 삽입된 알파 채널의 16진수의 10의 자리와 1의 자리를 교환하고(S509), 모두 동일하지 않은 경우, 해당 비트에 대응하는 픽셀의 알파 채널의 16진수의 10의 자리와 1의 자리를 교환하지 않는다(S511).
프로그램은 이러한 교환을 컨테이너 이미지의 모든 픽셀의 부가 데이터가 삽입되어 있는 채널에 대해 수행하여 컨테이너 이미지의 암호화를 수행한다.
도 6은 본 발명의 다른 실시예에 따른 컨테이너 이미지의 복호화화 방법을 설명하는 흐름도로서, 교환 방식의 복호화 방법으로 말할 수 있다.
도 6을 참조하면, 먼저 프로그램은 사용자로부터 암호화 키를 입력받는다(S601). 그리고 프로그램은 상기 암호화 키를 키 바이너리로 변환한다(S603).
프로그램은 컨테이너 이미지의 각 픽셀에서 부가 데이터가 삽입된 채널, 예를 들어 알파 채널 값의 16 진수 10의 자리와 1의 자리의 홀수 또는 짝수 여부에 따라 두 개의 대상 바이너리를 생성한다(S605).
예를 들어, 알파 채널의 값은 16 진수로 이루어지는데, 16 진수의 10의 자리가 홀수이면 '1' 짝수이면 '0'으로 인식하여 제 1 대상 바이너리를 생성하고, 또한 16 진수의 1의 자리가 홀수이면 '1' 짝수이면 '0'으로 인식하여 제 2 대상 바이너리를 생성한다. 대상 바이너리의 각 비트는 하나의 픽셀을 지시하는 것으로 이해될 수 있다.
프로그램은 상기 제 1 대상 바이너리와 상기 제 2 대상 바이너리 그리고 상기 키 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 16 진수의 10의 자리와 1의 자리의 교환 여부를 판단한다(S607). 즉, 프로그램은 제 1 대상 바이너리와 제 2 대상 바이너리 그리고 키 바이너리의 동일 위치의 비트 값이 모두 동일한지 판단한다.
모두 동일한 경우, 해당 비트에 대응하는 픽셀의 부가 데이터가 삽입된 해당 채널의 16진수의 10의 자리와 1의 자리를 교환하고(S609), 모두 동일하지 않은 경우, 해당 비트에 대응하는 픽셀의 해당 채널의 16진수의 10의 자리와 1의 자리를 교환하지 않는다(S611).
프로그램은 이러한 교환을 컨테이너 이미지의 모든 픽셀의 부가 데이터가 삽입되어 있는 채널에 대해 수행하여 컨테이너 이미지의 복호화를 수행한다.
이상의 교환 방식의 암호화 및 복호화에 대한 구체적인 예를 설명한다. 이하의 예에서 부가 데이터가 삽입된 채널을 알파 채널이라 가정한다.
교환 방식 암호화의 예
본 예에서 XOR 방식 암호화의 예와 동일한 알파 채널 그리고 암호화 키를 가정한다. 따라서, 키 바이너리는 [1,0,1,1,1,0,0,0,1,0,1,0,0,1]이다. 그리고 컨테이너 이미지의 제 1 픽셀부터 제 18 픽셀까지의 알파 채널의 픽셀 값이 [1B, FA, 7B, 10, FC, 5A, 50, F3, 00, 17, FC, 15, 5D, 7A, CE, B2, 5A, 2B]이다.
1 단계 : 컨테이너 이미지의 각 픽셀의 알파 채널에서 픽셀 값을 추출하고, 그 픽셀 값의 16 진수의 10의 자리가 홀수이면 '1' 짝수이면 '0'으로 인식하여 제 1 대상 바이너리를 생성하고, 또한 16 진수의 1의 자리가 홀수이면 '1' 짝수이면 '0'으로 인식하여 제 2 대상 바이너리를 생성한다. 대상 바이너리의 각 비트는 하나의 픽셀을 지시하는 것으로 이해될 수 있다.
제 1 대상 바이너리는 [1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,0]이고,
제 2 대상 바이너리는 [1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,0,0,1]이다.
2 단계 : 상기 제 1 대상 바이너리와 상기 제 2 대상 바이너리 그리고 상기 키 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 16 진수의 10의 자리와 1의 자리의 교환 여부를 판단한다. 즉, 제 1 대상 바이너리와 제 2 대상 바이너리 그리고 키 바이너리의 동일 위치의 비트 값이 모두 동일한 경우, 해당 비트에 대응하는 픽셀의 알파 채널의 16 진수의 10의 자리와 1의 자리를 교환하고, 모두 동일하지 않은 경우, 해당 비트에 대응하는 픽셀의 알파 채널의 16 진수의 10의 자리와 1의 자리를 교환하지 않는다. 이와 같은 방식으로 각 픽셀에 대해 모두 완료한 후 암호화된 알파 채널의 픽셀 값을 원본 알파 채널과 비교하면 다음과 같다.
원본 알파 채널 : [1B, FA, 7B, 10, FC, 5A, 50, F3, 00, 17, FC, 15, 5D, 7A, CE, B2, 5A, 2B]
암호화 후 알파 채널 : [B1, FA, B7, 10, FC, 5A, 50, F3, 00, 17, FC, 15, 5D, 7A, CE, B2, 5A, 2B]
즉, 제 1 대상 바이너리와 제 2 대상 바이너리 그리고 키 바이너리의 각 위치의 비트 값을 비교한 결과는, [1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]이고, 따라서 제 1 픽셀과 제 3 픽셀만 10의 자리 수와 1의 자리 수를 교환한다.
교환 방식 복호화의 예(상기 암호화된 컨테이너 이미지의 복호화)
1 단계 : 사용자로부터 암호화 키로서, 암호화 때 사용된 아스키 코드와 유니 코드로 구성된 문자열 'eBook&전자서식'을 입력받는다. 그리고 암호화 때와 마찬가지 방식으로 키 바이너리를 생성한다. 키 바이너리는 [1,0,1,1,1,0,0,0,1,0,1,0,0,1]이다.
2 단계 : 컨테이너 이미지의 각 픽셀의 알파 채널에서 픽셀 값을 추출하고, 그 픽셀 값의 16 진수의 10의 자리가 홀수이면 '1' 짝수이면 '0'으로 인식하여 제 1 대상 바이너리를 생성하고, 또한 16 진수의 1의 자리가 홀수이면 '1' 짝수이면 '0'으로 인식하여 제 2 대상 바이너리를 생성한다. 대상 바이너리의 각 비트는 하나의 픽셀을 지시하는 것으로 이해될 수 있다.
제 1 대상 바이너리는 [1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,0]이고,
제 2 대상 바이너리는 [1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,0,0,1]이다.
3 단계 : 상기 제 1 대상 바이너리와 상기 제 2 대상 바이너리 그리고 상기 키 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 16 진수의 10의 자리와 1의 자리의 교환 여부를 판단한다. 즉, 제 1 대상 바이너리와 제 2 대상 바이너리 그리고 키 바이너리의 동일 위치의 비트 값이 모두 동일한 경우, 해당 비트에 대응하는 픽셀의 알파 채널의 16 진수의 10의 자리와 1의 자리를 교환하고, 모두 동일하지 않은 경우, 해당 비트에 대응하는 픽셀의 알파 채널의 16 진수의 10의 자리와 1의 자리를 교환하지 않는다. 이와 같은 방식으로 각 픽셀에 대해 모두 완료한 후 암호화된 알파 채널의 픽셀 값을 원본 알파 채널과 비교하면 다음과 같다.
암호화된 알파 채널 : [B1, FA, B7, 10, FC, 5A, 50, F3, 00, 17, FC, 15, 5D, 7A, CE, B2, 5A, 2B]
복호화된 알파 채널 : [1B, FA, 7B, 10, FC, 5A, 50, F3, 00, 17, FC, 15, 5D, 7A, CE, B2, 5A, 2B]
즉, 제 1 대상 바이너리와 제 2 대상 바이너리 그리고 키 바이너리의 각 위치의 비트 값을 비교한 결과는, [1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]이고, 따라서 제 1 픽셀과 제 3 픽셀만 10의 자리 수와 1의 자리 수를 교환하여 원래의 알파 채널의 값을 복구한다.
제 2 교환 방식 암호화 및 복호화
도 7은 본 발명의 또 다른 실시예에 따른 컨테이너 이미지의 암호화 방법을 설명하는 흐름도로서, 본 실시예에는 제 2 교환 방식으로 말할 수 있다. 본 실시예에 따른 제 2 교환 방식은 컨테이너 이미지의 적색 채널, 녹색 채널 또는 청색 채널을 통해 부가 데이터를 삽입할 때 적용될 수 있다.
도 7을 참조하면, 먼저 프로그램은 사용자로부터 암호화 키를 입력받는다(S701). 그리고 프로그램은 상기 암호화 키를 8 비트로 분류하고, 각 분류된 8 비트를 3으로 나누어 나머지 값을 산출한다. 이와 같이 산출된 나머지 값은 0, 1, 2 중 하나이다. 본 실시예에서는 이를 기준 채널 설정 정보라 한다(S703).
예를 들어, 사용자가 암호화 키로서 아스키 코드와 유니 코드로 구성된 문자열인 'eBook&전자서식'을 입력한 경우, 상기 문자열의 아스키 코드 문자 값과 유니 코드 문자 값은 [65,42,6f,6f,6b,26,c804,c790,c11c,c2dd]이고, 이를 8 비트로 분리하면, [65,42,6f,6f,6b,26,c8,04,c7,90,c1,1c,c2,dd]이다. 그리고 각 분리된 값을 3으로 나누어 나머지 값을 정리하면, 기준 채널 설정 정보는 [2,0,0,0,2,2,2,1,1,0,1,1,2,2]이다.
상기 기준 채널 설정 정보의 각 값은, 각 픽셀에 대응하고, 각 픽셀의 적색 채널(R), 녹색 채널(G), 청색 채널(B) 중 하나를 기준 채널로 지시하는 것으로 이해될 수 있다. 즉, 상기 기준 채널 설정 정보 [2,0,0,0,2,2,2,1,1,0,1,1,2,2]는 [B,R,R,R,B,B,B,G,G,R,G,G,B,B]로 표현할 수 있다.
프로그램은 컨테이너 이미지의 각 픽셀의 R/G/B 채널의 값을 추출한 후, 각 채널의 값의 홀수 또는 짝수를 판단한다(S705). 예를 들어, 제 1 픽셀부터 제 4 픽셀까지가 0x1BFA7B, 0x10FC5A, 0x50F300, 0x17FC15라 하고, 각 채널의 홀수 또는 짝수를 분석하면 [홀(R)짝(G)홀(B), 짝(R)짝(G)짝(B), 짝(R)홀(G)짝(B), 홀(R)짝(G)홀(B)]이다.
프로그램은, 상기 기준 채널 설정 정보를 토대로 상기 각 픽셀의 R/G/B 채널에서 기준 채널을 선정한다(S707). 즉, 제 1 픽셀에서의 기준 채널은 청색 채널(B)이고, 제 2 픽셀 내지 제 4 픽셀에서의 기준 채널은 적색 채널(R)이다. 상기 예를 중심으로 보면, [홀(R)짝(G)홀(B), 짝(R)짝(G)짝(B), 짝(R)홀(G)짝(B), 홀(R)짝(G)홀(B)]에서 밑줄친 채널이 기준 채널이다.
이와 같이 기준 채널을 선정한 후, 프로그램은 각 픽셀에서 기준 채널과 나머지 두 채널의 홀수 또는 짝수를 비교하여 채널 값의 교환을 수행한다(S709).
구체적으로, 기준 채널과 나머지 두 채널의 홀수 또는 짝수가 모두 동일한 경우 기준 채널의 값은 그대로 두고, 나머지 두 채널 간의 값을 서로 교환한다. 예를 들어, R/G/B 채널에서 기준 채널이 R 채널이고 R/G/B 채널 모두 홀수이거나 짝수인 경우, G 채널과 B 채널의 값을 서로 교환한다.
반면, 기준 채널과 나머지 두 채널 중 한 채널만 홀수 또는 짝수가 동일한 경우, 기준 채널과 그 동일한 나머지 한 채널의 값을 서로 교환한다. 예를 들어, R/G/B 채널에서 기준 채널이 R 채널이고 홀수이며, G 채널은 짝수이고 B 채널은 홀수인 경우, R 채널과 B 채널의 값을 서로 교환하고, G 채널의 값은 그대로 유지한다.
그리고 기준 채널과 나머지 두 채널의 홀수 또는 짝수가 동일하지 않은 경우, 각 채널 값을 그대로 유지한다. 예를 들어, R/G/B 채널에서 기준 채널이 R 채널이고 홀수이며, G 채널과 B 채널 모두 짝수인 경우, 각 채널의 값은 그대로 유지한다.
이 원리에 따라 교환을 완료하면, 각 픽셀의 R/G/B 채널의 값은 [7B(R)FA(G)1B(B), 10(R)5A(G)FC(B), 00(R)F3(G)50(B), 15(R)FC(G)17(B)]와 같다.
도 8은 본 발명의 또 다른 실시예에 따른 컨테이너 이미지의 복호화 방법을 설명하는 흐름도로서, 제 2 교환 방식으로 암호화된 컨테이너 이미지를 복호화하는 방법이다.
도 8을 참조하면, 먼저 프로그램은 암호화 때와 마찬가지로 사용자로부터 암호화 키를 입력받고(S801), 이를 이용하여 기준 채널 설정 정보를 생성한다(S803). 암호화 때와 동일한 암호화 키가 입력된다고 가정하면, 기준 채널 설정 정보는 [2,0,0,0,2,2,2,1,1,0,1,1,2,2]이고, [B,R,R,R,B,B,B,G,G,R,G,G,B,B]로 표현할 수 있다.
프로그램은 컨테이너 이미지의 각 픽셀의 R/G/B 채널의 값을 추출한 후, 각 채널의 값의 홀수 또는 짝수를 판단한다(S805). 앞선 암호화된 제 1 픽셀부터 제 4 픽셀까지의 채널 값은 0x7BFA1B, 0x105AFC, 0x00F350, 0x15FC17이다. 각 채널의 홀수 또는 짝수를 분석하면 [홀(R)짝(G)홀(B),짝(R)짝(G)짝(B),짝(R)홀(G)짝(B),홀(R)짝(G)홀(B)]이다.
프로그램은, 상기 기준 채널 설정 정보를 토대로 상기 각 픽셀의 R/G/B 채널에서 기준 채널을 선정한다(S807). 즉, 제 1 픽셀에서의 기준 채널은 청색 채널(B)이고, 제 2 픽셀 내지 제 4 픽셀의 기준 채널은 적색 채널(R)이다. 상기 예를 중심으로 보면, [홀(R)짝(G)홀(B), 짝(R)짝(G)짝(B), 짝(R)홀(G)짝(B), 홀(R)짝(G)홀(B)]에서 밑줄친 채널이 기준 채널이다.
이와 같이 기준 채널을 선정한 후, 프로그램은 각 픽셀에서 기준 채널과 나머지 두 채널의 홀수 또는 짝수를 비교하여 채널 값의 교환을 수행한다(S809). 이는 암호화 때와 같은 원리로 수행된다.
구체적으로, 기준 채널과 나머지 두 채널의 홀수 또는 짝수가 모두 동일한 경우 기준 채널의 값은 그대로 두고, 나머지 두 채널 간의 값을 서로 교환한다. 예를 들어, R/G/B 채널에서 기준 채널이 R 채널이고 R/G/B 채널 모두 홀수이거나 짝수인 경우, G 채널과 B 채널의 값을 서로 교환한다.
반면, 기준 채널과 나머지 두 채널 중 한 채널만 홀수 또는 짝수가 동일한 경우, 기준 채널과 그 동일한 나머지 한 채널의 값을 서로 교환한다. 예를 들어, R/G/B 채널에서 기준 채널이 R 채널이고 홀수이며, G 채널은 짝수이고 B 채널은 홀수인 경우, R 채널과 B 채널의 값을 서로 교환하고, G 채널의 값은 그대로 유지한다.
그리고 기준 채널과 나머지 두 채널의 홀수 또는 짝수가 동일하지 않은 경우, 각 채널 값을 그대로 유지한다. 예를 들어, R/G/B 채널에서 기준 채널이 R 채널이고 홀수이며, G 채널과 B 채널 모두 짝수인 경우, 각 채널의 값은 그대로 유지한다.
이 원리에 따라 교환을 완료하면, 각 픽셀의 R/G/B 채널의 값은 [1B(R)FA(G)7B(B), 10(R)FC(G)5A(B), 50(R)F3(G)00(B), 17(R)FC(G)15(B)]와 같다. 즉 암호화하기 전의 원본 채널 값이 복원되는 것이다.
이상의 본 발명에 따른 방법은 컨테이너 이미지로서 일반적으로 무손실 압축 이미지(가령 PNG(Portable Network Graphics) 등)를 사용함으로써 어떠한 브라우저나 플랫폼에서도 차별되지 않아 범용성이 뛰어나다. 또한 컨테이너 이미지 내부에 손실 압축 포맷 방식(jpeg 등)의 이미지를 별도로 저장할 수 있어 전체적인 용량을 줄일 수 있다.
또한 한 단계의 로드를 통하여 메모리에 기록되고 필요한 부분을 메모리에서 직접 선별하여 변환하거나 디스플레이할 수 있다. 또한 하나의 이미지에 다양한 멀티미디어 요소들을 함께 저장 및 전송으로 여러 종류의 코덱(codec) 등이 불필요하게 된다. 따라서 텍스트와 함께 가장 범용성이 뛰어난 이미지의 특성을 이용하여 저장과 이동 수단으로 활용함으로써 통신망을 이용한 한 번의 전송과 로드로 메모리에서 손쉬운 조작과 제어가 가능해져 활용도를 높일 수 있다.
이러한 특성들은 가령 전자책에 책갈피를 생성하거나, 밑줄을 긋거나, 혹은 수정이 가능해져 전자 교과서에 전자 공책의 기능까지 추가할 수 있다. 또한 이미지의 암호화를 통하여 전자책이나 전자잡지 등을 페이지별로 암호화할 수 있어 부분 공개를 통해 유료화가 용이하다. 또한 이미지에 작은 용량의 이미지들과 제어정보나 XML 파일 등을 함께 전송하여 애니메이션이 가능하도록 할 수 있다. 그리고 이미지에 문자를 추가하거나 음성 및 동영상을 추가하여 메일을 전송하거나 SNS로 전송할 수 있다.
예를 들어, PNG 메인 이미지가 작은 애니메이션 이미지의 이음으로 구성되어있고 애니메이션에 필요한 제어 정보가 알파 채널에 저장되어 있는 경우, 어플리케이션에서 알파 채널의 제어정보를 분석하여 메인 이미지를 애니메이션에 필요한 조각으로 구분하여 화면에 애니메이션을 구현할 수 있다.
또한, 3D 이미지와 제어 정보를 활용하여 간단한 3D 애니메이션을 구현할 수 있다. 종래의 3D 이미지와 제어 정보 즉 XML 파일을 각각 로드하여 3D 애니메이션을 구현하게 되는 방식을 3D 이미지를 메인 이미지에, 그리고 제어 정보를 알파 채널에 저장하여 전송한 후 3D 애니메이션을 구현하는 방식으로 바꿀 수 있다.
또한, 전자책 및 전자교과서의 경우 사용자는 필기 입력을 하게 되는데 통상의 경우 별도의 파일에 저장하게 된다. 그러나 이러한 방식은 책과 노트와 동일한 방식이며, 본 발명에 따르면 책 페이지 위에 필기하는 방식으로 필요에 따라 보이거나 혹은 숨길 수 있도록 구성되며 페이지에 필기한 데이터는 PNG 이미지로 포맷한 후 페이지의 메인 이미지와 구별하여 알파 채널에 저장된다.
RGB 채널에 기록된 전자책 혹은 전자교과서 페이지의 메인 이미지와는 구별하여, 알파 채널에 필기 데이터는 쓰거나 알파 채널로부터 필기 데이터를 독립적으로 읽음으로써 페이지 메인 이미지 손상 없이 반복적으로 읽기와 쓰기 및 수정이 가능해 진다.
또한, 본 발명은 RGB 채널에 문제가 수록된 메인 이미지를 기록하고, 알파 채널에 해설과 답이 수록된 이미지를 기록하여 학습지의 용도로 활용할 수 있다.
또한, 본 발명은 RGB 채널에 잡지의 페이지 이미지를 메인 이미지로 기록하고, 알파 채널에 작가의 프로필 이미지와 텍스트 데이터, 그리고 제어 정보를 기록하여 저장할 수 있다. 구독자는 메인 이미지를 터치하여 알파 채널에 기록된 작가의 프로필과 약력을 감상할 수 있다.
한편, 디지털로 변환된 음성 및 소리 신호는 바이트 배열로 변환 후 저장하거나 압축 후 저장할 수 있다. 언어 카드 혹은 단어 카드의 경우 메인 이미지에 '장미꽃 이미지'를 알파 채널에 '장미꽃' 글자 이미지와 '장미꽃' 음성 및 소리 파일과 제어 정보를 저장할 수 있다. 학습자는 '장미꽃 이미지'의 메인 이미지를 터치할 경우 '장미꽃'이라는 글자 이미지가 레이어상 메인 이미지 위에 표시되고 동시에 음성 및 소리가 출력될 수 있다. 또한 약 수초 후에 처음 상태로 되돌아올 수 있다.
동영상 데이터는 음성과 비디오(Video Only)로 분리가 가능한 파일 형식 즉 FLV(플래시 비디오 파일 포맷) 형식의 파일은 바이트 배열로 저장할 수 있다. 다른 형식의 동영상 파일은 FLV 형식의 파일로 변환 후 바이트 배열로 저장하거나 상기 압축 방식으로 압축 후 저장할 수 있다. 언어 카드 혹은 단어 카드의 경우 메인 이미지에 '개구리' 이미지와 '개구리'라는 단어를 표시하고 알파 채널에 '개구리 동영상'과 제어 정보를 저장할 수 있다. 학습자는 메인 이미지를 터치하여 개구리 동영상을 메인 이미지 위에 표시할 수 있다.
본 명세서는 많은 특징을 포함하는 반면, 그러한 특징은 본 발명의 범위 또는 특허청구범위를 제한하는 것으로 해석되어서는 안 된다. 또한, 본 명세서에서 개별적인 실시예에서 설명된 특징들은 단일 실시예에서 결합되어 구현될 수 있다. 반대로, 본 명세서에서 단일 실시예에서 설명된 다양한 특징들은 개별적으로 다양한 실시예에서 구현되거나, 적절히 결합되어 구현될 수 있다.
도면에서 동작들이 특정한 순서로 설명되었으나, 그러한 동작들이 도시된 바와 같은 특정한 순서로 수행되는 것으로, 또는 일련의 연속된 순서, 또는 원하는 결과를 얻기 위해 모든 설명된 동작이 수행되는 것으로 이해되어서는 안 된다. 특정 환경에서 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 아울러, 상술한 실시예에서 다양한 시스템 구성요소의 구분은 모든 실시예에서 그러한 구분을 요구하지 않는 것으로 이해되어야 한다. 상술한 프로그램 구성요소 및 시스템은 일반적으로 단일 소프트웨어 제품 또는 멀티플 소프트웨어 제품에 패키지로 구현될 수 있다.
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(시디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
110 : 메모리
113 : 프로그램
130 : I/O 서브 시스템
141 : 디스플레이 장치
142 : 입력 장치

Claims (37)

  1. 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법에 있어서,
    상기 이미지의 각 화소를 구성하는 알파 채널, 적색 채널, 녹색 채널 및 청색 채널 중 상기 부가 데이터를 삽입할 채널을 선택하는 단계;
    상기 이미지의 각 화소의 상기 선택된 채널들의 값을, 해당 값의 용량보다 적은 용량의 표본 값으로 표현하는 단계;
    상기 선택된 채널을 지시하는 정보 및 상기 표본 값을 포함하는 제어 정보를 생성하는 단계; 및
    상기 이미지의 각 화소의 상기 선택된 채널들의 값을 상기 제어 정보 및 상기 부가 데이터로 대체하는 단계;를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 선택된 채널은 알파 채널이고 상기 이미지의 각 화소는 완전 투명 또는 완전 불투명 중 어느 하나이며,
    상기 표본 값으로 표현하는 단계는,
    상기 이미지의 화소마다, 알파 채널의 완전 투명 또는 완전 불투명 중 어느 하나를 나타내는 비트를 할당하여 비트열을 생성하는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서,
    완전 투명인 화소의 적색 채널, 녹색 채널 및 청색 채널에도 해당 채널들의 값을 부가 데이터로 대체하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서,
    상기 선택된 채널은 알파 채널이고 상기 이미지의 각 화소는 모두 동일한 투명도를 가지며,
    상기 표본 값으로 표현하는 단계는,
    상기 이미지의 모든 화소에 대한 하나의 상기 투명도 값을 생성하는 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서,
    상기 선택된 채널은 알파 채널이고,
    상기 표본 값으로 표현하는 단계는,
    알파 채널에 표현할 수 있는 투명도의 개수보다 작은 개수의 복수의 레벨을 설정하는 단계;
    상기 이미지의 각 화소의 알파 채널의 값이 상기 복수의 레벨 중 하나에 매핑하는 단계; 및
    각 화소의 알파 채널마다 매핑된 레벨의 값들을 표본 값으로 생성하는 단계;를 포함하는 것을 특징으로 하는 방법.
  6. 제 5 항에 있어서,
    상기 복수의 레벨을 설정하는 단계는,
    16 진수에 대응하도록 16 개의 레벨을 설정하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 선택된 채널은, 적색 채널, 녹색 채널 및 청색 채널 중 하나이고,
    상기 표본 값으로 표현하는 단계는,
    상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트들을 화소마다 동일하게 표현하는 하나의 값을 표본 값으로 생성하고,
    상기 대체하는 단계는,
    상기 이미지의 각 화소의 상기 선택된 채널의 상기 일부 비트들을 상기 제어 정보 및 상기 부가 데이터로 대체하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서,
    상기 선택된 채널은, 적색 채널, 녹색 채널 및 청색 채널 중 하나이고,
    상기 표본 값으로 표현하는 단계는,
    상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트들이, 미리 설정된 적어도 두 개 이상의 분할 범위 중 어느 범위에 해당하는지 확인하는 단계; 및
    확인된 결과에 따라 상기 이미지의 화소마다 비트를 할당하여 비트열을 생성하는 단계;를 포함하고,
    상기 대체하는 단계는,
    상기 이미지의 각 화소의 상기 선택된 채널의 상기 일부 비트를 상기 제어 정보 및 상기 부가 데이터로 대체하는 것을 특징으로 하는 방법.
  9. 제 8 항에 있어서,
    상기 비트열을 생성하는 단계는,
    상기 일부 비트들이, 제 1, 2 범위 중 어느 범위에 해당하는지를 나타내는 제 1 비트열을 생성하는 단계; 및
    상기 일부 비트들이, 상기 제 1 범위 또는 상기 제 2 범위 내의 두 개의 범위 중 어느 범위에 해당하는지를 나타내는 제 2 비트열을 생성하는 단계;를 포함하는 것을 특징으로 하는 방법.
  10. 제 8 항에 있어서,
    상기 제어 정보는,
    상기 비트열에 따라 상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트를 복원할 때 상기 비트열의 각 비트가 지시하는 범위의 값 중 어느 값으로 복원할 것인지를 나타내는 정보를 포함하는 것을 특징으로 하는 방법.
  11. 제 7 내지 제 10 항 중 어느 한 항에 있어서,
    상기 선택된 채널의 일부 비트들은,
    상기 선택된 채널의 값을 구성하는 16 진수의 10의 자리 수 또는 1의 자리 수 중 하나인 것을 특징으로 하는 방법.
  12. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    암호화 키를 입력받는 단계;
    상기 암호화 키를 바이너리 값으로 변환하여 키 바이너리를 생성하는 단계;
    상기 부가 데이터가 삽입된 각 채널의 값의 홀수 또는 짝수 여부에 따라 비트를 배열하여 대상 바이너리를 생성하는 단계;
    상기 키 바이너리와 상기 대상 바이너리를 비교하여 변환 바이너리를 생성하는 단계; 및
    상기 대상 바이너리와 상기 변환 바이너리의 비교 결과에 따라 상기 부가 데이터가 삽입된 각 채널의 값을 홀수 또는 짝수로 변경하는 단계;를 더 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 변환 바이너리를 생성하는 단계는,
    상기 키 바이너리와 상기 대상 바이너리의 각 동일 위치의 비트 값을 서로 비교하여 변환 바이너리를 생성하는 것을 특징으로 하는 방법.
  14. 제 12 항에 있어서,
    상기 변경하는 단계는,
    상기 대상 바이너리와 상기 변환 바이너리의 각 동일 위치의 비트 값을 서로 비교하여, 서로 다른 경우 해당 비트에 대응하는 채널의 값을 원래와 다르게 홀수 또는 짝수로 변경하고, 동일한 경우 해당 비트에 대응하는 채널의 값은 변경하지 않는 것을 특징으로 하는 방법.
  15. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    암호화 키를 입력받는 단계;
    상기 암호화 키를 바이너리 값으로 변환하여 키 바이너리를 생성하는 단계;
    상기 부가 데이터가 삽입된 각 채널의 일부 값의 홀수 또는 짝수 여부에 따라 비트를 배열하여 제 1 대상 바이너리를 생성하는 단계;
    상기 부가 데이터가 삽입된 각 채널의 나머지 값의 홀수 또는 짝수 여부에 따라 비트를 배열하여 제 2 대상 바이너리를 생성하는 단계;
    상기 키 바이너리와 상기 제 1, 2 대상 바이너리를 비교하고 비교 결과에 따라 상기 부가 데이터가 삽입된 상기 각 채널의 상기 일부 값과 상기 나머지 값의 교환 여부를 결정하는 단계; 및
    결정된 결과에 따라 상기 각 채널의 상기 일부 값과 상기 나머지 값을 교환하거나 교환하지 않는 단계;를 더 포함하는 방법.
  16. 제 15 항에 있어서,
    상기 교환 여부를 결정하는 단계는,
    상기 키 바이너리와 상기 제 1 대상 바이너리, 그리고 상기 제 2 대상 바이너리의 각 동일 위치의 비트 값을 서로 비교하는 것을 특징으로 하는 방법.
  17. 제 16 항에 있어서,
    상기 교환 여부를 결정하는 단계는,
    상기 동일 위치의 비트 값이 모두 동일한 경우, 해당 비트에 대응하는 채널의 상기 일부 값과 상기 나머지 값을 교환하는 것으로 결정하고,
    상기 동일 위치의 비트 값이 모두 동일하지 않은 경우, 해당 비트에 대응하는 채널의 상기 일부 값과 상기 나머지 값을 교환하지 않는 것으로 결정하는 것을 특징으로 하는 방법.
  18. 제 17 항에 있어서,
    상기 일부 값은, 16 진수의 1의 자리 수이고, 상기 나머지 값은 16 진수의 10의 자리 수인 것을 특징으로 하는 방법.
  19. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    암호화 키를 입력받는 단계;
    상기 암호화 키를 분석하여 기준 채널 설정 정보를 생성하는 단계;
    상기 이미지의 각 화소의 적색 채널, 녹색 채널, 청색 채널 각각의 홀수 또는 짝수를 분석하는 단계;
    각 화소의 각 채널별 홀수 또는 짝수의 분석 결과와 상기 기준 채널 설정 정보를 비교하여 각 화소의 기준 채널을 선정하는 단계; 및
    각 화소마다, 기준 채널과 나머지 두 채널의 홀짝 비교 결과에 따라 채널 값의 교환을 수행하는 단계;를 더 포함하는 방법.
  20. 제 19 항에 있어서,
    상기 교환을 수행하는 단계는,
    기준 채널과, 나머지 두 채널의 홀수 또는 짝수가 모두 동일한 경우, 기준 채널의 값은 그대로 두고 나머지 두 채널의 값을 교환하는 것을 특징으로 하는 방법.
  21. 제 20 항에 있어서,
    상기 교환을 수행하는 단계는,
    기준 채널과, 나머지 두 채널 중 한 채널만 홀수 또는 짝수가 동일한 경우, 기준 채널과 그 동일한 나머지 한 채널의 값을 교환하는 것을 특징으로 하는 방법.
  22. 제 21 항에 있어서,
    상기 교환을 수행하는 단계는,
    기준 채널과, 나머지 두 채널의 홀수 또는 짝수가 동일하지 않은 경우, 각 채널 값을 그대로 유지하는 것을 특징으로 하는 방법.
  23. 제 1 항에 있어서,
    상기 선택된 채널은 알파 채널이고,
    상기 알파 채널에 대체되어 삽입되는 부가 데이터가 적색/녹색/청색 채널의 값에 영향을 주는 값인 경우, 해당 화소의 알파 채널에 삽입되는 해당 부가 데이터의 값을 특정 값으로 변경하는 단계; 및
    해당 화소의 알파 채널에 삽입된 부가 데이터의 값이 상기 특정 값으로 변경되었음을 알리는 안내 정보를 상기 제어 정보에 기록하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  24. 제 1 항에 있어서,
    상기 선택된 채널은 알파 채널이고,
    상기 알파 채널에 대체되어 삽입되는 부가 데이터가 적색/녹색/청색 채널의 값에 영향을 주는 값인 경우, 해당 화소의 알파 채널에 삽입되는 해당 부가 데이터의 값을 특정 값으로 변경하는 단계; 및
    상기 부가 데이터의 값이 상기 특정 값으로 변경된 경우, 적색/녹색/청색 채널의 값을 모두 짝수로 설정하거나 모두 홀수로 설정하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  25. 제 1 항에 있어서,
    상기 선택된 채널은 알파 채널이고,
    상기 알파 채널에 대체되어 삽입되는 부가 데이터의 값이 기준 값보다 작은 경우, 해당 화소의 알파 채널에 삽입된 부가 데이터의 값에 미리 결정된 값을 더하여 갱신하는 단계; 및
    상기 부가 데이터의 갱신을 안내하는 안내 정보를 상기 제어 정보에 기록하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  26. 제 1 항에 있어서,
    상기 선택된 채널은 알파 채널이고,
    상기 알파 채널에 대체되어 삽입되는 부가 데이터의 값이 기준 값보다 작은 경우, 해당 화소의 알파 채널에 삽입된 부가 데이터의 값에 미리 결정된 값을 더하여 갱신하는 단계; 및
    부가 데이터의 값이 갱신된 화소의 적색/녹색/청색 채널의 값을 홀수 또는 짝수로 변경하여 알파 채널에 삽입된 부가 데이터의 값이 갱신되었음을 표시하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  27. 하나 이상의 프로세서;
    메모리; 및
    상기 메모리에 저장되어 있으며 상기 하나 이상의 프로세서에 의하여 실행되도록 구성되는 하나 이상의 프로그램을 포함하는 장치에 있어서,
    상기 프로그램은,
    이미지의 각 화소를 구성하는 알파 채널, 적색 채널, 녹색 채널 및 청색 채널 중 부가 데이터를 삽입할 채널을 선택하고,
    상기 이미지의 각 화소의 상기 선택된 채널들의 값을, 해당 값의 용량보다 적은 용량의 표본 값으로 표현하며,
    상기 선택된 채널을 지시하는 정보 및 상기 표본 값을 포함하는 제어 정보를 생성하고,
    상기 이미지의 각 화소의 상기 선택된 채널들의 값을 상기 제어 정보 및 상기 부가 데이터로 대체하는,
    장치.
  28. 제 27 항에 있어서,
    상기 선택된 채널은 알파 채널이고 상기 이미지의 각 화소는 완전 투명 또는 완전 불투명 중 어느 하나이며,
    상기 프로그램은,
    상기 표본 값으로 표현하는 데 있어서, 상기 이미지의 화소마다, 알파 채널의 완전 투명 또는 완전 불투명 중 어느 하나를 나타내는 비트를 할당하여 비트열을 생성하는 것을 특징으로 하는 장치.
  29. 제 28 항에 있어서,
    상기 프로그램은,
    완전 투명인 화소의 적색 채널, 녹색 채널 및 청색 채널에도 해당 채널들의 값을 부가 데이터로 대체하는 것을 특징으로 하는 장치.
  30. 제 27 항에 있어서,
    상기 선택된 채널은 알파 채널이고 상기 이미지의 각 화소는 모두 동일한 투명도를 가지며,
    상기 프로그램은,
    상기 표본 값으로 표현하는 데 있어서, 상기 이미지의 모든 화소에 대한 하나의 상기 투명도 값을 생성하는 것을 특징으로 하는 장치.
  31. 제 27 항에 있어서,
    상기 선택된 채널은 알파 채널이고,
    상기 프로그램은,
    상기 표본 값으로 표현하는 데 있어서, 알파 채널에 표현할 수 있는 투명도의 개수보다 작은 개수의 복수의 레벨을 설정하고, 상기 이미지의 각 화소의 알파 채널의 값이 상기 복수의 레벨 중 하나에 매핑하며, 각 화소의 알파 채널마다 매핑된 레벨의 값들을 표본 값으로 생성하는 것을 특징으로 하는 장치.
  32. 제 31 항에 있어서,
    상기 프로그램은,
    상기 복수의 레벨을 설정하는 데 있어서, 16 진수에 대응하도록 16 개의 레벨을 설정하는 것을 특징으로 하는 장치.
  33. 제 27 항에 있어서,
    상기 선택된 채널은, 적색 채널, 녹색 채널 및 청색 채널 중 하나이고,
    상기 프로그램은,
    상기 표본 값으로 표현하는 데 있어서, 상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트들을 화소마다 동일하게 표현하는 하나의 값을 표본 값으로 생성하고,
    상기 대체하는 데 있어서, 상기 이미지의 각 화소의 상기 선택된 채널의 상기 일부 비트들을 상기 제어 정보 및 상기 부가 데이터로 대체하는 것을 특징으로 하는 장치.
  34. 제 27 항에 있어서,
    상기 선택된 채널은, 적색 채널, 녹색 채널 및 청색 채널 중 하나이고,
    상기 프로그램은,
    상기 표본 값으로 표현하는 데 있어서, 상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트들이, 미리 설정된 적어도 두 개 이상의 분할 범위 중 어느 범위에 해당하는지 확인하고, 확인된 결과에 따라 상기 이미지의 화소마다 비트를 할당하여 비트열을 생성하며,
    상기 대체하는 데 있어서, 상기 이미지의 각 화소의 상기 선택된 채널의 상기 일부 비트를 상기 제어 정보 및 상기 부가 데이터로 대체하는 것을 특징으로 하는 장치.
  35. 제 34 항에 있어서,
    상기 프로그램은,
    상기 비트열을 생성하는 데 있어서, 상기 일부 비트들이, 제 1, 2 범위 중 어느 범위에 해당하는지를 나타내는 제 1 비트열을 생성하고, 상기 일부 비트들이, 상기 제 1 범위 또는 상기 제 2 범위 내의 두 개의 범위 중 어느 범위에 해당하는지를 나타내는 제 2 비트열을 생성하는 것을 특징으로 하는 장치.
  36. 제 34 항에 있어서,
    상기 제어 정보는,
    상기 비트열에 따라 상기 이미지의 각 화소의 상기 선택된 채널의 일부 비트를 복원할 때 상기 비트열의 각 비트가 지시하는 범위의 값 중 어느 값으로 복원할 것인지를 나타내는 정보를 포함하는 것을 특징으로 하는 장치.
  37. 제 33 내지 제 36 항 중 어느 한 항에 있어서,
    상기 선택된 채널의 일부 비트들은,
    상기 선택된 채널의 값을 구성하는 16 진수의 10의 자리 수 또는 1의 자리 수 중 하나인 것을 특징으로 하는 장치.
KR1020130133049A 2013-11-04 2013-11-04 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치 KR101538491B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130133049A KR101538491B1 (ko) 2013-11-04 2013-11-04 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130133049A KR101538491B1 (ko) 2013-11-04 2013-11-04 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20150051509A KR20150051509A (ko) 2015-05-13
KR101538491B1 true KR101538491B1 (ko) 2015-07-22

Family

ID=53388960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130133049A KR101538491B1 (ko) 2013-11-04 2013-11-04 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101538491B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102395647B1 (ko) * 2020-04-13 2022-05-09 주식회사 한글과컴퓨터 전자 문서에 포함된 이미지에 데이터의 삽입을 가능하게 하는 전자 장치 및 그 동작 방법
CN117409173B (zh) * 2023-10-10 2024-04-26 国网安徽省电力有限公司电力科学研究院 基于变电站三维建模用地形图数据编辑系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000035679A (ko) * 1998-11-25 2000-06-26 이데이 노부유끼 부호화 장치 및 방법, 복호장치 및 방법, 데이터 처리시스템 및, 저장매체
KR20010044804A (ko) * 2001-03-27 2001-06-05 왕성현 그림 파일 속에 비밀 데이터를 숨겨 저장/복원하는 방법
JP2003526287A (ja) * 2000-03-06 2003-09-02 インテル・コーポレーション 圧縮イメージ内に透かしを組み込む方法
KR20120098297A (ko) * 2011-02-28 2012-09-05 삼성중공업 주식회사 암호 코드를 이용한 암호화 및 복호화 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000035679A (ko) * 1998-11-25 2000-06-26 이데이 노부유끼 부호화 장치 및 방법, 복호장치 및 방법, 데이터 처리시스템 및, 저장매체
JP2003526287A (ja) * 2000-03-06 2003-09-02 インテル・コーポレーション 圧縮イメージ内に透かしを組み込む方法
KR20010044804A (ko) * 2001-03-27 2001-06-05 왕성현 그림 파일 속에 비밀 데이터를 숨겨 저장/복원하는 방법
KR20120098297A (ko) * 2011-02-28 2012-09-05 삼성중공업 주식회사 암호 코드를 이용한 암호화 및 복호화 방법

Also Published As

Publication number Publication date
KR20150051509A (ko) 2015-05-13

Similar Documents

Publication Publication Date Title
EP2355472B1 (en) Apparatus and method for transmitting and receiving handwriting animation message
KR101592981B1 (ko) 음성기반 이미지 파일 태깅장치 및 그를 이용한 클라우드 서비스 기반 이미지 파일 검색방법
KR100727066B1 (ko) 동적 템플릿을 이용한 무선 웹 페이지 제공 방법 및 장치
CN105427353A (zh) 可缩放矢量图形的压缩、绘制方法及装置
CN103729457A (zh) 基于互联网的数字化图书辅助阅读系统及其方法
CN103227848A (zh) 用于针对便携式终端提供增强现实服务的设备和方法
CN109408652B (zh) 一种图片搜索方法、装置及设备
US20120005564A1 (en) Content distribution system and method
CN111222611B (zh) 一种基于颜色的堆叠式三维码编码方法、编码装置、解码方法、解码装置以及存储介质
CN110189384B (zh) 基于Unity3D的图像压缩方法、装置、计算机设备和存储介质
CN101625752A (zh) 图像处理设备和图像处理方法
CN112784112A (zh) 报文校验方法及装置
KR101538491B1 (ko) 이미지를 부가 데이터의 저장 및 이동 수단으로 이용하는 방법 및 장치
JP2014204175A (ja) 画像処理装置及びその制御方法
US11582173B2 (en) Message processing method and electronic device supporting the same
KR20130096796A (ko) 전자책의 리소스 검색 장치 및 방법
KR20190028046A (ko) 증강현실을 이용한 역사 공부 방법
KR101214674B1 (ko) 텍스트를 포함하는 모자이크 이미지를 생성하기 위한 장치 및 방법
KR20130076852A (ko) 어학 컨텐츠 생성 방법 및 이를 위한 단말기
CN110245068A (zh) H5页面的自动化测试方法、装置及计算机设备
US11960821B2 (en) Apparatus and method for providing electric book
CN117371448A (zh) 实体识别及其模型训练方法、装置、电子设备与存储介质
KR20130087295A (ko) 주파수 변환과 특이값을 이용하여 데이터에 은닉 정보를 삽입하는 방법 및 장치
CN111553136A (zh) 一种生成演示文档模板的方法、装置及电子设备
CN110941728A (zh) 一种电子文件的处理方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20180711

Year of fee payment: 4