Skip to content

Watermarking technique with invisibility and robustness for loss JPEG compression

Notifications You must be signed in to change notification settings

ms4935/Forensic-Watermarking-program-for-image

Repository files navigation

Forensic-Watermarking-program-for-image

Development contents

이미지 기반의 다양한 창작물들에 대하여 불법 복제와 유통이 성행하는 현재, 기존의 워터마크 활용 방식을 확장하여 이를 추적하는데 기여하는 포렌식 워터마킹 프로그램 제작을 목표로 한다.

해당 프로젝트는 삽입할 데이터를 입력받고 QR 코드로 변환한 후 선택 버튼을 통해 삽입하고자 하는 원본 이미지를 선택하고 삽입 버튼으로 삽입 과정을 진행한다. 추출 버튼을 통해 워터마크가 삽입된 이미지를 선택하고 추출을 진행하여 삽입된 QR 코드를 복원한다. 마지막으로 QR 코드 스캐너로 삽입된 정보를 확인한다.

  • 압축 강인성: 워터마크가 삽입된 이미지를 고의적으로 변형을 가하여 실효성을 제거하려 하는 공격들이 존재하는데, 해당 프로젝트는 삽입된 이미지에 압축 공격을 가하는 방식에 대한 강인성을 확보한다. 일반적으로 널리 사용되는 JPEG 압축 방식을 이용한 손실 압축에도 삽입된 워터마크가 유지되는 압축 강인성을 가지도록 구현한다.

  • 비가시성: 삽입된 워터마크가 원본 이미지에 그대로 나타나는 삽입 방식과 원본 이미지에 나타나지 않는 방식으로 삽입 알고리즘을 구현할 수 있다. 해당 프로젝트는 삽입된 워터마크가 원본 이미지에 표현되지 않도록 구현하여 비가시성을 확보한다. 또한, 워터마크가 삽입된 이미지에서 워터마크를 추출하는 과정에서 원본 이미지가 필요하지 않다. 따라서, 해당 프로젝트는 blind watermarking으로 구별되어진다.

  • QR 코드: 해당 프로젝트에서 사용되는 워터마크는 입력 받은 정보를 버전1~3의 QR 코드로 변환하여 사용한다. 삽입하고자 입력받는 데이터의 길이에 따라 최대 32x32 크기의 QR 코드를 생성하며 352bit(숫자 101, 영숫자 61, binary 42, 한자 26의 길)를 표현할 수 있다. 또한, 오류복원 단계 M을 기준으로 15%의 손상 부분을 자체적으로 복원하는 기능을 가진다. 이러한 이유로 해당 프로젝트의 워터마크로 사용된다.

Development enviroment

개발 도구: VisualStudio 2017, HeidiSQL
개발 언어: C++, PHP, HTML
사용 라이브러리: MFC, OpenCV

  • 삽입하고자 하는 데이터 입력, 원본 이미지 선택, 삽입, 추출의 과정을 위한 GUI 프로그램 개발을 위해 MFC 기반으로 개발한다.
  • 디지털 이미지에 대한 다양한 영상처리 기술을 이용하기 위해 오픈소스 라이브러리인 OpenCV를 이용한다.

개발 인원: 5명(팀 프로젝트)

  • (담당 부분)삽입/추출 알고리즘 구현 2명, 결과 검증을 위한 정량적 수치 도출 1명
    이미지 다운로드 웹 사이트 개발과 워터마킹 프로그램 호환 2명, 워터마크 생성 담당(QR code) 1명

개발 기간: 2018년 11월 ~ 2019년 4월

Implement

  • 색 변환: RGB 형식의 이미지 색 채널을 YUV 색 채널로 변환한다. Y는 이미지 휘도, U와 V는 이미지 색차 신호를 나타내는데, JPEG 압축은 사람의 눈이 변화에 가장 무감각한 U, V 채널의 데이터를 제거하는 방식으로 압축을 진행한다. 따라서, 압축 시 제거되지 않는 Y 채널을 대상으로 삽입을 진행하며, 마지막 단계에서 YUV 색 채널을 RGB 형식으로 역 변환하는 과정에서 손실 압축으로 인한 변화를 Y 채널에 최소화 하기 위해 Y 채널을 대상으로 JPEG 압축 방식에 맞추어 삽입을 진행한다.

yuv

QR code

  • 오픈소스를 이용하여 입력 정보(문자열)를 QR code로 변환한다. 삽입 알고리즘 구현에서의 JPEG 압축 방식, DWT의 다운 샘플링 등을 고려하여 32x32크기의 워터마크 크기를 초과하지 않도록 버전1~3의 QR code로 변환한다.

삽입/추출 알고리즘

  • 일반적으로 워터마크 삽입 방식은 공간 영역 삽입과 주파수 영역 삽입으로 나뉜다. 프로젝트 목표인 비가시성과 JPEG 압축 강인성 확보를 위해 주파수 영역 삽입 방식으로 구현을 진행한다.

  • Discrete wavelet transform(DWT): 색 변환을 통해 가져온 이미지의 Y 채널을 대상으로 이진 웨이블릿 변환을 진행하여 공간 영역에서 주파수 영역으로 변환하고 삽입을 진행한다. 이를 통해 2차원 배열의 픽셀 값으로 표현되는 이미지는 2차원 배열의 픽셀 값 변화량으로 표현되는 이미지로 변환된다. 즉, 특정 픽셀의 위치를 기준으로 인접한 픽셀 간의 값의 변화량으로 표현하는 것이다. 또한, DWT의 경우 주파수(픽셀 값 변화량) 분해능만 포함한 일반적인 주파수 변환과는 달리, 주파수 분해능과 변환 대상인 공간 영역(픽셀 값, 해당 위치)에 대한 분해능을 포함하고 있기 때문에 원본 이미지에서 특정 위치의 픽셀 값 변화량을 동시에 표현할 수 있다.
    DWT
    DWT의 결과 LL, LH, HL, HH 4개의 부대역을 얻을 수 있다.
    이미지에서 주파수의 의미는 픽셀 값 변화량으로 나타낼 수 있으며 저주파의 경우 픽셀 값의 변화량이 적은 것으로 배경에 가까우며, 고주파의 경우 픽셀 값의 변화량이 큰 것으로 경계선에 가깝다.
    좌측 상단은 LL 부대역으로 원본 이미지에 수평, 수직 방향으로 저역 통과 필터를 적용한 것과 같다.
    (정규화 과정을 거치지 않아 높은 값으로 표현된다.)
    우측 상단은 HL 부대역으로 원본 이미지에 수직 방향으로 고역 통과 필터를 적용한 것과 같다.
    수직 방향 경계선이 나타난다.
    좌측 하단은 LH 부대역으로 원본 이미지에 수평 방향으로 고역 통과 필터를 적용한 것과 같다.
    수평 방향 경계선이 나타난다.
    우측 하단은 HH 부대역으로 원본 이미지에 수평, 수직 방향으로 고역 통과 필터를 적용한 것과 같다.
    대각선 방향의 경계선이 나타난다.
    배경을 나타내는 저주파의 변화는 화질과 사람의 눈에 큰 영향을 준다. 반면에, 경계선을 나타내는 고주파의 변화는 화질과 사람의 눈에 큰 영향을 주지 않으므로 고주파 영역을 포함하는 HL, LH, HH 대역을 선택하여 삽입을 진행한다.

  • Discrete cosine transform(DCT): 이전 DWT 단계를 통해 픽셀 값 변화량으로 표현되는 이미지를 다시 한 번 DCT를 수행한다. 픽셀 값 변화량으로 표현되는 이미지는 해당 이미지의 경계선을 나타내는 이미지이다. 경계선에 집중되어 표현된 이미지를 대상으로 주파수 분해능만을 가지는 DCT를 진행하여 삽입하고자 하는 주파수 대역을 세부적으로 선택할 수 있다. 즉, 공간과 주파수 영역에 대한 분해능을 가지는 DWT를 통해 1차적으로 원본 이미지에 포함된 경계선(edge)를 표현하고 주파수 영역에 대한 분해능을 가지는 DCT를 통해 2차적으로 DWT 결과에 포함된 주파수 성분들을 구별하여 표현한다.
    8x8
    해당 프로젝트는 JPEG 압축 방식에 맞추며 속도의 이점을 위하여 8x8 크기의 행렬 블럭에 DCT를 진행하는 블럭 DCT를 진행한다.
    DCT
    DCT 결과는 0,0 위치의 저주파 성분값 (DC값) 부터 7,7 위치의 고주파 성분값 (AC값) 까지의 표현 범위를 가진다. 0,0 위치의 값부터 행과 열 방향으로 위치가 증가하면서 표현하는 주파수도 저주파에서 고주파로 변화한다. JPEG 압축 방식은 DCT 결과물에서 사람의 눈에 큰 영향을 미치는 저주파 값을 작게 변경시키고 영향이 미미한 고주파 값을 크게 변경시키는 방식으로 데이터양을 줄여 압축을 진행한다. 따라서, 워터마크 픽셀 값을 원본 이미지에 대한 블럭 DCT 결과물의 DC 값에 삽입한다. 32x32 크기의 워터마크는 1024개의 픽셀 값을 가지므로 원본 이미지에 대한 블럭 DCT 결과물 1024개의 각 DC 값에 워터마크 픽셀 값을 삽입하는 방식으로 워터마크 삽입을 완료한다.

  • 추출 과정은 삽입 과정의 반대로 진행되며 색 변환, DWT, DCT를 통해 DC 값을 참조하여 워터마크를 복원한다.

Result

Lena 이미지를 대상으로 한 결과 예시

Lena_결과화면

결과 검증을 위한 정량적 수치 표
ver1결과

  • PSNR(최대 신호 대 잡음비): 영상 또는 동영상 손실 압축에서 화질 손실 정보를 평가할 때 사용된다. 손실이 적을수록 높은 값을 가진다.(통상적으로 30db 이상의 영상은 인간의 시각 특성상 차이를 눈으로 구분하기 쉽지 않다.)

  • NCC(정규화 상호 관계): 두 이미지 간의 유사도를 수치적으로 나타낸다.(1에 가까울수록 높은 유사도를 가진다.)

시연 영상

제한사항

  • 원본 이미지의 최소 크기 제한: 삽입 워터마크의 기준 크기를 32x32로 설정했기 때문에 원본 이미지의 크기는 가로, 세로 크기 모두 최소 512 이상을 만족해야한다.
    32x32 워터마크는 총 1024개의 픽셀로 구성된다. 이때, DWT 결과 부대역의 블럭 DCT 결과 8x8 블럭에 1개의 워터마크 픽셀이 삽입된다. 부대역 이미지의 블럭 DCT 결과인 8x8 블럭이 총 32x32개 즉, 1024개가 필요하기 때문에 DCT를 진행하는 부대역 이미지는 256x256 크기를 만족해야한다.(8x32 = 512) 따라서, 256x256 크기의 4개 부대역으로 분해되는 원본 이미지는 512x512 크기를 만족해야한다.

  • 3개의 부대역 삽입 진행: 해당 알고리즘은 원본 이미지에 대한 DWT 결과의 4개 부대역 중 HL, LH, HH 3개 부대역에 모두 삽입을 진행한다. 각 부대역은 원본 이미지에 포함된 주파수를 각 대역별로 분할하여 나타낸다. 이런 3개의 부대역 모두에 워터마크 비트를 삽입한다는 것은 원본 이미지를 표현하는 주파수 대역의 3/4에 삽입하는 것으로 데이터 변화가 많이 일어난다. 데이터 변화가 많을수록 삽입된 이미지는 원본 이미지와 차이가 나며 이미지 화질의 저하를 야기한다.

  • 보안성 부족: 삽입된 이미지에서 워터마크를 추출하는데 있어서 원본 이미지가 필요하지 않는 blind watermarking이기 때문에, 워터마크 픽셀 값에 따라 단순하게 DC 값을 변화시키는 삽입 방식은 공격자들에 의해 쉽게 제거될 수 있다.

  • 특정 패턴의 압축 이미지에서 추출 불가: 저주파, 고주파 성분이 적절히 분포된 일반적인 이미지 외에 한쪽으로 치우쳐진 특정 패턴을 가진 이미지의 경우 JPEG 압축을 거친 후 추출이 불가하다. 즉, 특정 패턴을 가진 이미지를 대상으로 JPEG 압축 강인성을 확보하지 못한다.

향후 발전과제

  • 원본 이미지의 최소 크기 제한 해결 방안: 워터마크로 사용되는 QR 코드의 구성 버전을 확인하여 32x32 크기보다 작은 워터마크를 사용하는 방법, 8x8 블럭 DCT보다 작은 범위의 블럭 DCT를 사용하는 방법, 8x8 블럭 DCT의 결과에 두 개의 워터마크 픽셀 값(비트)를 삽입하는 방법들을 고려해본다.

  • 3개의 부대역 삽입 진행 해결 방안: 원본 이미지에 대한 영상 분석을 진행하여 HL, LH, HH 부대역 중 원본 이미지 표현에 가장 많은 값을 포함하는 부대역을 선택하여 단일 삽입을 진행하는 방법을 고려해본다.
    (이미지 표현에 적은 값을 포함하는 부대역에 삽입을 진행하는 경우 작은 값에 대한 변화가 결과에 큰 영향을 미친다. 하지만, 많은 값을 포함하는 부대역에 삽입을 진행하는 경우 큰 값에 대한 변화를 진행하여 이전과 큰 차이가 없으므로 결과에 작은 영향을 미친다.)

  • 보안성 부족 해결 방안: 워터마크 비트를 삽입하는 단계에서 정교한 양자화 단계를 거쳐서 DC 값을 변화시는 방법, 특이값 분해(SVD) 를 적용하는 방법, 중국인의 나머지 정리(CRT) 를 적용하는 방법을 고려해본다.

About

Watermarking technique with invisibility and robustness for loss JPEG compression

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published