2P by GN⁺ | ★ favorite | 댓글 1개
  • 겉보기에는 여성 사진이지만, 이미지에 DCT를 적용하면 주파수 영역에 숨긴 고양이가 드러나는 실험임
  • 시간·공간 영역과 주파수 영역은 되돌릴 수 있는 변환으로 연결되어, 같은 이미지가 서로 다른 방식으로 해석될 수 있음
  • 고양이 사진을 DCT로 바꾼 “노이즈” 패턴을 낮은 불투명도로 합성하면, 원본 이미지는 유지되면서 변환 결과에 고양이 형상이 남음
  • 합성 이미지는 리사이징 후에도 고양이 정보가 남지만, 확대하면 타일처럼 반복되고 축소하면 잘려 나감
  • JPEG 품질을 낮추면 특히 고주파 성분이 강하게 양자화되어, 손실 압축이 얼마나 많은 정보를 버리는지 눈으로 확인할 수 있음

DCT로 만든 “거울 차원” 실험

  • 주파수 영역은 일상적인 신호를 구성 파형의 진폭으로 바꿔 해석하는 방식임
    • 가장 흔한 기반은 주파수가 증가하는 사인파
    • 다른 파형들도 대체 주파수 영역을 만드는 데 사용할 수 있음
  • 이 변환에는 두 가지 성질이 있음
    • 원본 시간 영역 또는 공간 영역 데이터로 되돌릴 수 있는 가역성
    • 같은 수학 연산으로 양방향 변환을 수행하는 입출력 대칭성
  • 압축에서는 이 구분이 중요함
    • 이미지를 주파수 영역으로 바꾼 뒤 고주파 성분의 정밀도를 낮추거나 제거해도, 결과 이미지는 지각적으로 비슷하게 보일 수 있음
    • 그만큼 전송하거나 저장할 데이터가 줄어듦

고양이를 주파수 영역에 숨기는 과정

  • 고양이 사진을 이산 코사인 변환(DCT) 으로 주파수 영역 형태로 바꾸는 데서 시작함
  • 이전 예제의 여성 사진 위에 주파수 영역의 “고양이 노이즈” 패턴을 낮은 불투명도로 합성함
    • 합성 작업은 손실을 동반함
    • 기대한 결과는 여성 사진이 DCT에서 비교적 균일한 노이즈로 분해되고, 삽입된 고양이 노이즈가 고양이 이미지로 다시 모이는 것이었음
  • 실제로 합성 이미지에 DCT를 적용하면 고양이 형상이 나타남
  • 직접 확인할 수 있는 합성 이미지와 MATLAB 예제가 있음
    • woman-with-cat.png
    • dct2(woman)으로 DCT를 계산하고 imgaussfilt(cat, 1)로 부드럽게 만든 결과를 표시함
  • 리사이징 후에도 고양이는 남음
    • 확대하면 이미지가 타일처럼 반복됨
    • 축소하면 이미지가 잘려 나감
  • JPEG 품질 설정을 낮추면 고양이 정보가 망가짐
    • 높은 JPEG 품질에서는 이미지가 꽤 괜찮게 보임
    • 낮은 품질에서는 고주파 성분에 해당하는 오른쪽 아래 사분면이 심하게 양자화됨
  • 이 시각화는 JPEG 알고리듬이 우리가 잘 알아차리지 못하는 방식으로 많은 정보를 파괴한다는 점을 보여줌
  • 오디오 스펙트로그램에 숨은 메시지를 넣는 사례나 JPEG DCT 계수에 텍스트 스테가노그래피를 얹는 논의 같은 선행 사례가 있음
    • 이 기법의 실용성이나 완전한 신규성보다, 주파수 영역과 시간 영역이 흥미롭게 결합된다는 점에 초점이 있음
  • 보너스로 JPEG 품질 설정별 “독립형” 주파수 영역 고양이의 열화 영상이 있음: https://vimeo.com/940487310/8a929a5eb5

댓글과 토론

Hacker News 의견들
  • 알아볼 수 있는 피사체가 있는 사진 대부분은 여기처럼 스펙트럼 에너지가 원점, 즉 왼쪽 위 모서리 주변에 몰림

    https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_pr...

    여성 이미지의 DCT도 마찬가지임. 반면 사진의 피사체는 보통 프레임 중앙 쪽에 놓임. 그래서 합성 이미지에서 공간 영역 데이터와 주파수 영역 데이터가 서로 덜 간섭하고, 역변환했을 때 고양이 표정이 보존됨

    https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...

    여성 이미지 쪽도 반대로 같은 원리임

    • 이건 DCT에만 해당함. 이미지의 2차원 푸리에 변환은 보통 데이터가 이미지 중앙 근처에 몰림
  • 이 과정을 이렇게 이해하면 맞는지 확인하고 싶음: a) 여성 사진과 고양이 사진을 가져옴, b) 고양이를 DCT로 주파수 영역으로 변환함, c) 주파수 영역의 고양이를 여성의 시각 이미지 위에 합성함, d) 합성 이미지를 DCT하면 고양이가 다시 나옴
    더 정확히는 시각적 고양이와 주파수 영역의 여성이 합성된 결과가 나오지만, 시각적 고양이가 더 두드러진다는 뜻으로 보임

  • 오래전 학생 프로젝트에서 봤던 기억으로는, 이 기법이 이미지든 오디오든 어떤 신호에도 적용되는 강건한 디지털 워터마킹의 기반임

    주된 용도는 신호가 크게 가공된 뒤에도 저작권 있는 자료를 탐지하는 것임. 예를 들면 리핑되거나 캠코더로 촬영된 영화, JPEG-2000으로 제공된 자료 같은 경우임

    영화 업계에 있는 사람이 더 기술적인 세부 사항을 알려줄 수 있다면 듣고 싶음

    • 예전에 워터마킹 시스템을 테스트했는데, 온갖 잡음과 크기 조절에는 강했지만 이미지를 1%만 회전해도 실패했음
      Digimarc였던 것 같은데, 푸리에 변환 기반 알고리즘이었는지 궁금함
  • 푸리에 변환의 시간-주파수 이중성, 여기서는 공간-주파수 이중성을 보여주는 아주 좋은 예임
    푸리에 변환의 수학은 변환하려는 “방향”에 신경 쓰지 않으므로, 시간/주파수에서 비슷하게 보이는 함수는 주파수/시간 공간에서도 비슷한 푸리에 변환을 가짐

    이 경우 고양이의 주파수 플롯을 여성의 공간 플롯에 심으면, 여성 이미지의 푸리에 변환에서 고양이가 나타나고 그 반대도 성립함

  • 아주 멋지고 흥미로운 스테가노그래피 응용임
    불법 이미지를 평범한 이미지 안에 숨기고 싶다면, 주파수 영역으로 변환해서 다른 이미지에 합성하면 됨. 받는 사람이 되돌리는 방법만 알면, 탐지하기 어려울 수 있는 은밀한 이미지 전송 방식이 됨

    • 상대가 무엇을 찾아야 하는지 모르면 탐지하기 어렵겠지만, 알고 있다면 쉬울 것임

      숨긴 이미지를 일회용 패드와 결합하면 잡음과 구분할 수 없어야 하지 않을까? 손실 압축 이미지에는 잡음이 자연스럽게 예상되기도 함. 누군가 이미 해봤는지 궁금하고, 말해주지 않는 한 아마 영영 모를 듯함

  • Aphex Twin 등이 비슷한 재미있는 트릭을 써서, 한 트랙의 오디오 스펙트로그램에 이상한 얼굴이 나타나게 만든 적이 있음: https://news.ycombinator.com/item?id=8509105

    • MetaSynth는 90년대 후반부터 있었고, 오디오의 시간 영역 샘플과 주파수 영역 이미지를 변환해 Photoshop식 이미지 필터와 결합함

      https://uisoftware.com/metasynth/

  • 글이 끝까지 갈수록 계속 좋아짐

    주파수 영역을 이미지 압축에 쓸 수 있다는 걸 왜 이제야 깨달았는지 믿기 어려움. 보고 나니 너무 당연함. 대부분의 이미지 압축 알고리즘이 이런 식으로 동작하나? 주파수 영역에서 더 약한 부분을 그냥 지우는 방식인가?

    • 맞음. MP3, Ogg-Vorbis, JPEG가 모두 이런 방식으로 동작함
      어떤 주파수를 남길지 가중치를 고르는 일은 아마 심리음향 모델에 기반하겠지만, 거칠게 말하면 말 그대로 고차 주파수 정보를 버리는 것임

    • DCT는 더 복잡한 이미지나 동영상 압축 알고리즘의 하위 단계로도 자주 쓰임
      예를 들어 먼저 디테일이 많은 이미지의 일부 영역을 찾고, 그 영역에 DCT를 적용해 스펙트럼을 더 많이 남긴 뒤, 다른 영역에도 같은 작업을 하면서 스펙트럼을 더 많이 또는 적게 남김. 동영상 압축 알고리즘에서 봤을 양자화 매개변수가 바로 이 동작에 영향을 줌

    • 보통 고주파를 완전히 지우는 게 아니라, 더 적은 비트로 인코딩함

    • 이미지는 진정한 의미에서 대역 제한되어 있지 않아서 주파수 영역만으로 완벽히 표현할 수 없음
      그래서 작은 블록 단위로 나누어 주파수 영역과 공간 영역 예측자를 섞어 인코딩하는 절충을 함. 그래도 핵심은 대체로 맞음

      문제의 대부분은 날카로운 경계에서 나옴. 이런 경계는 표현하려면 무한히 많은 주파수가 필요하므로, 일부를 빼면 흐림이나 링잉 아티팩트가 생김

      또 다른 이유는 대역 제한 신호가 무한히 반복되지만 현실의 이미지는 그렇지 않다는 점임. 사진의 왼쪽에 있는 것이 오른쪽에 무엇이 있을지 반드시 예측해주지는 않음

    • 더 많은 요소가 있음. 단순히 주파수를 버리는 것뿐 아니라, 분산이 작은 데이터를 더 효율적으로 인코딩할 수 있다는 점도 중요함
      고주파 정보가 잡음이라는 것만이 아니라, 대체로 크기 자체도 더 작음

  • JPEG 2000은 더 이상함. 이건 웨이블릿 변환을 씀
    JPEG 2000 파일을 중간에서 잘라도 더 낮은 해상도의 이미지를 복구할 수 있음. 어느 파일 길이 이하로 가면 색상 정보가 사라지면서 이미지가 회색조가 됨

    • 그게 왜 이상한가? 기능처럼 보이는데
  • 고양이가 왼쪽 위에 더 몰려 있었다면 이 데모가 그렇게 잘 되지 않았을 것 같음
    DCT에서는 크기가 큰 저주파 성분이 많이 생기는데, 고양이가 왼쪽 위 근처에 있으면 그 성분들이 고양이를 덮어버릴 것임

    • JPEG가 우리가 알아차리지 못하게 많은 데이터를 버린다는 건 발견이라기보다, 애초에 그 압축 알고리즘의 명시된 목적에 가까움
  • 위치와 주파수의 양자역학적 표현에서는, 즉 hbar를 고려하면 위치와 운동량의 표현에서는 이런 방식으로 서로 다른 두 함수를 하나에 우겨 넣을 수 없음
    위치에 의존하는 위상만 다른 함수들도 서로 다른 양자 상태이기 때문임