Con mèo xuất hiện trong chiều gương
(substack.com/lcamtuf)- Nhìn bề ngoài đây là ảnh một phụ nữ, nhưng khi áp dụng DCT lên ảnh thì một con mèo được giấu trong miền tần số sẽ lộ ra
- Miền thời gian/không gian và miền tần số được nối với nhau bằng phép biến đổi có thể đảo ngược, nên cùng một hình ảnh có thể được diễn giải theo những cách khác nhau
- Khi chuyển ảnh con mèo sang DCT rồi chồng mẫu “nhiễu” đó với độ mờ thấp, ảnh gốc vẫn được giữ lại trong khi kết quả biến đổi vẫn còn hình dáng con mèo
- Ảnh tổng hợp vẫn giữ được thông tin con mèo sau khi resize, nhưng khi phóng to thì lặp lại như các ô tile và khi thu nhỏ thì bị cắt mất
- Khi hạ chất lượng JPEG, đặc biệt thành phần tần số cao bị lượng tử hóa mạnh, cho thấy bằng mắt thường nén mất dữ liệu đã vứt bỏ bao nhiêu thông tin
Thí nghiệm “chiều gương” tạo bằng DCT
- Miền tần số là cách diễn giải tín hiệu thường ngày bằng cách chuyển nó thành biên độ của các dạng sóng cấu thành
- Nền tảng phổ biến nhất là sóng sin với tần số tăng dần
- Các dạng sóng khác cũng có thể được dùng để tạo ra những miền tần số thay thế
- Phép biến đổi này có hai tính chất
- Tính khả nghịch: có thể quay trở lại dữ liệu gốc trong miền thời gian hoặc miền không gian
- Tính đối xứng đầu vào/đầu ra: thực hiện biến đổi hai chiều bằng cùng một phép toán toán học
- Trong nén, sự phân biệt này rất quan trọng
- Sau khi chuyển ảnh sang miền tần số, ngay cả khi giảm độ chính xác hoặc loại bỏ các thành phần tần số cao, ảnh kết quả vẫn có thể trông gần như giống nhau về mặt tri giác
- Nhờ đó lượng dữ liệu cần truyền hoặc lưu trữ giảm đi
Quá trình giấu con mèo trong miền tần số
- Bắt đầu bằng việc chuyển ảnh con mèo sang dạng miền tần số bằng biến đổi cosin rời rạc (DCT)
- Chồng mẫu “nhiễu con mèo” của miền tần số lên ảnh người phụ nữ từ ví dụ trước với độ mờ thấp
- Bản thân thao tác tổng hợp này có kèm tổn hao
- Kết quả mong đợi là ảnh người phụ nữ sẽ bị phân rã thành nhiễu tương đối đồng đều trong DCT, còn nhiễu con mèo được chèn vào sẽ tự tập hợp lại thành ảnh con mèo
- Trên thực tế, khi áp dụng DCT lên ảnh tổng hợp thì hình con mèo xuất hiện
- Có ảnh tổng hợp và ví dụ MATLAB để tự kiểm tra
- woman-with-cat.png
- Hiển thị kết quả tính DCT bằng
dct2(woman)và làm mượt bằngimgaussfilt(cat, 1)
- Con mèo vẫn còn sau khi resize
- Khi phóng to, hình ảnh lặp lại như các ô tile
- Khi thu nhỏ, hình ảnh bị cắt mất
- Khi hạ thiết lập chất lượng JPEG, thông tin con mèo bị hỏng
- Ở chất lượng JPEG cao, hình ảnh trông vẫn khá ổn
- Ở chất lượng thấp, phần tư góc dưới bên phải tương ứng với các thành phần tần số cao bị lượng tử hóa rất mạnh
- Cách trực quan hóa này cho thấy thuật toán JPEG phá hủy rất nhiều thông tin theo những cách mà chúng ta khó nhận ra
- Đã có những tiền lệ như nhúng thông điệp ẩn trong phổ tần âm thanh hoặc thảo luận về steganography văn bản đè lên các hệ số DCT của JPEG
- Trọng tâm ở đây không phải tính thực dụng hay mức độ mới hoàn toàn của kỹ thuật này, mà là việc miền tần số và miền thời gian kết hợp với nhau một cách thú vị
- Thêm một phần thưởng: video cho thấy con mèo miền tần số “độc lập” bị suy giảm theo từng mức chất lượng JPEG: https://vimeo.com/940487310/8a929a5eb5
1 bình luận
Các ý kiến trên Hacker News
Hầu hết các bức ảnh có chủ thể có thể nhận ra đều có năng lượng phổ tập trung quanh gốc tọa độ, tức gần góc trên bên trái, giống như ở đây
https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_pr...
DCT của ảnh người phụ nữ cũng vậy. Trong khi đó, chủ thể trong ảnh thường nằm gần trung tâm khung hình. Vì thế trong ảnh tổng hợp, dữ liệu miền không gian và dữ liệu miền tần số ít can nhiễu lẫn nhau hơn, nên khi biến đổi ngược thì biểu cảm của con mèo vẫn được giữ lại
https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...
Phía ảnh người phụ nữ cũng hoạt động theo nguyên lý tương tự theo chiều ngược lại
Tôi muốn xác nhận xem có đúng là nên hiểu quy trình này như sau không: a) lấy ảnh người phụ nữ và ảnh con mèo, b) biến đổi con mèo sang miền tần số bằng DCT, c) ghép con mèo ở miền tần số lên hình ảnh trực quan của người phụ nữ, d) áp dụng DCT lên ảnh ghép thì con mèo lại hiện ra
Chính xác hơn thì kết quả sẽ là sự kết hợp giữa con mèo ở dạng trực quan và người phụ nữ ở miền tần số, nhưng có vẻ ý là con mèo trực quan nổi bật hơn
Theo những gì tôi nhớ từ một dự án sinh viên rất lâu trước đây, kỹ thuật này là nền tảng của watermarking số bền vững áp dụng cho mọi loại tín hiệu, dù là ảnh hay âm thanh
Mục đích chính là phát hiện nội dung có bản quyền ngay cả sau khi tín hiệu đã bị xử lý mạnh. Ví dụ như phim bị rip hoặc quay lại bằng camcorder, hay tài liệu được phân phối dưới dạng JPEG-2000
Nếu có ai trong ngành điện ảnh có thể chia sẻ thêm chi tiết kỹ thuật thì tôi rất muốn nghe
Hình như là Digimarc, nên tôi tò mò không biết nó có phải thuật toán dựa trên biến đổi Fourier hay không
Đây là một ví dụ rất hay về đối ngẫu thời gian-tần số của biến đổi Fourier, hay trong trường hợp này là đối ngẫu không gian-tần số
Toán học của biến đổi Fourier không quan tâm đến “hướng” mà bạn đang biến đổi, nên các hàm trông tương tự trong miền thời gian/tần số cũng sẽ có biến đổi Fourier tương tự trong không gian tần số/thời gian
Trong trường hợp này, nếu bạn nhúng biểu đồ tần số của con mèo vào biểu đồ không gian của người phụ nữ, thì trong biến đổi Fourier của ảnh người phụ nữ sẽ xuất hiện con mèo, và điều ngược lại cũng đúng
Đây là một ứng dụng steganography rất ngầu và thú vị
Nếu muốn giấu một hình ảnh bất hợp pháp trong một hình ảnh bình thường, bạn chỉ cần biến đổi nó sang miền tần số rồi trộn vào một ảnh khác. Nếu người nhận biết cách đảo ngược, đây sẽ là một phương thức truyền ảnh bí mật khó bị phát hiện
Sẽ khó phát hiện nếu đối phương không biết phải tìm gì, nhưng nếu họ biết thì có lẽ sẽ khá dễ
Nếu kết hợp ảnh giấu với one-time pad thì chẳng phải nó sẽ không thể phân biệt với nhiễu sao? Trong ảnh nén mất dữ liệu thì việc có nhiễu cũng là điều tự nhiên. Tôi tự hỏi có ai đã làm vậy chưa, và có lẽ nếu họ không nói ra thì chúng ta sẽ không bao giờ biết
Aphex Twin và một số nghệ sĩ khác từng dùng những trò tương tự khá thú vị để làm cho spectrogram âm thanh của một bài nhạc hiện ra những khuôn mặt kỳ lạ: https://news.ycombinator.com/item?id=8509105
MetaSynth đã có từ cuối những năm 90, cho phép chuyển đổi giữa mẫu âm thanh ở miền thời gian và hình ảnh miền tần số, rồi kết hợp với các bộ lọc ảnh kiểu Photoshop
https://uisoftware.com/metasynth/
Bài viết càng về cuối càng hay hơn
Tôi không thể tin là đến giờ mình mới nhận ra có thể dùng miền tần số cho nén ảnh. Giờ nhìn rồi thì thấy quá hiển nhiên. Có phải phần lớn các thuật toán nén ảnh đều hoạt động kiểu này không? Chỉ đơn giản là bỏ đi những phần yếu hơn trong miền tần số à?
Đúng vậy. MP3, Ogg-Vorbis và JPEG đều hoạt động theo cách này
Việc chọn trọng số để giữ lại tần số nào có lẽ dựa trên mô hình tâm sinh lý âm học, nhưng nói ngắn gọn thì đúng là vứt bỏ thông tin tần số cao hơn
DCT cũng thường được dùng như một bước con trong các thuật toán nén ảnh hoặc video phức tạp hơn
Ví dụ, trước tiên người ta tìm các vùng của ảnh có nhiều chi tiết hơn, áp dụng DCT cho những vùng đó để giữ lại nhiều phổ hơn, rồi làm tương tự với các vùng khác nhưng giữ nhiều hoặc ít phổ hơn. Tham số lượng tử hóa mà bạn có thể đã thấy trong thuật toán nén video chính là thứ ảnh hưởng đến hành vi này
Thông thường người ta không xóa hẳn tần số cao, mà mã hóa chúng bằng ít bit hơn
Ảnh không thực sự bị giới hạn băng thông theo đúng nghĩa, nên không thể biểu diễn hoàn hảo chỉ bằng miền tần số
Vì vậy người ta thỏa hiệp bằng cách chia ảnh thành các khối nhỏ để mã hóa, trộn giữa miền tần số và các bộ dự đoán miền không gian. Nhưng về cơ bản thì ý đó là đúng
Phần lớn vấn đề đến từ các biên sắc nét. Để biểu diễn những biên như vậy cần vô số tần số, nên nếu bỏ bớt đi thì sẽ xuất hiện hiện tượng mờ hoặc artefact ringing
Một lý do khác là tín hiệu bị giới hạn băng thông sẽ lặp lại vô hạn, còn ảnh thực tế thì không như vậy. Thứ ở bên trái của ảnh không nhất thiết dự đoán được bên phải sẽ có gì
Còn nhiều yếu tố hơn nữa. Không chỉ là bỏ bớt tần số, mà còn là dữ liệu có phương sai nhỏ thì có thể được mã hóa hiệu quả hơn
Không chỉ vì thông tin tần số cao là nhiễu, mà còn vì biên độ của nó nhìn chung cũng nhỏ hơn
JPEG 2000 còn lạ hơn. Nó dùng biến đổi wavelet
Bạn có thể cắt một file JPEG 2000 ở giữa mà vẫn khôi phục được ảnh có độ phân giải thấp hơn. Nếu cắt xuống dưới một độ dài file nào đó, thông tin màu sẽ biến mất và ảnh sẽ trở thành ảnh xám
Nếu con mèo tập trung nhiều hơn ở góc trên bên trái thì có lẽ bản demo này đã không hoạt động tốt đến vậy
Trong DCT, sẽ xuất hiện nhiều thành phần tần số thấp có biên độ lớn, và nếu con mèo ở gần góc trên bên trái thì các thành phần đó sẽ đè lên con mèo
Trong biểu diễn cơ học lượng tử của vị trí và tần số, tức là khi tính đến hbar, thì không thể nhét hai hàm khác nhau vào một theo cách này giữa biểu diễn vị trí và động lượng
Vì các hàm chỉ khác nhau bởi pha phụ thuộc vào vị trí cũng là những trạng thái lượng tử khác nhau