Tin tức AI

Tin tức AI mới nhất

Khám phá những cập nhật mới nhất về trí tuệ nhân tạo.

Xuất bản: 26 thg 6, 2026Cập nhật: 26 thg 6, 2026Thời gian đọc: 8 minLượt xem: 2
AItrí tuệ nhân tạocông nghệ

💡Điểm chính của bài viết

  • Khám phá những cập nhật mới nhất về trí tuệ nhân tạo.

blind-watermark là gì? Giải thích dễ hiểu về repo guofei9987/blind_watermark

Repo: https://github.com/guofei9987/blind_watermark
Chủ đề: watermark ẩn trong ảnh, bảo vệ nội dung, truy vết nguồn ảnh, Python
Đối tượng: lập trình viên, người quản lý ảnh, nhà sáng tạo nội dung, người xây hệ thống phân phối ảnh
Mức độ: dễ hiểu, có ví dụ kỹ thuật cơ bản
Kiểm tra theo mã nguồn và README: 26/06/2026

Ảnh gốc
Ảnh gốc

1. Hiểu đơn giản blind-watermark là gì?

blind_watermark là một thư viện Python dùng để giấu một thông tin nhỏ vào bên trong ảnh mà mắt thường khó nhận ra.

Thông tin ẩn có thể là:

Ví dụ

một chuỗi chữ một ảnh đen trắng nhỏ một dãy bit mã định danh người mua mã đơn hàng mã nguồn phân phối

Cách hiểu đơn giản:

TEXT
Ảnh gốc + dữ liệu bí mật = ảnh có watermark ẩn

Sau đó, nếu có đúng thông số cần thiết, chương trình có thể thử lấy watermark ra từ ảnh đã được nhúng.

Điểm đặc biệt nằm ở chữ blind: khi trích xuất watermark, chương trình không bắt buộc phải có lại ảnh gốc. Tuy nhiên, người dùng vẫn cần biết mật khẩu và kích thước hoặc độ dài watermark.

2. Watermark ẩn khác watermark nhìn thấy thế nào?

Watermark nhìn thấy là logo hoặc dòng chữ đặt trực tiếp lên ảnh.

Ví dụ:

Ví dụ

© PixelRouter Không được đăng lại Tên tài khoản ở góc ảnh

Loại này dễ nhận biết nhưng cũng dễ bị cắt hoặc che.

Watermark ẩn thì khác:

Ví dụ

người xem gần như không thấy thông tin được nhúng vào dữ liệu ảnh có thể dùng để kiểm tra nguồn phát hành khó xóa hơn việc xóa một logo đơn giản

Tuy nhiên, watermark ẩn không phải bất khả xóa. Nếu ảnh bị chỉnh sửa quá mạnh, tạo lại bằng AI, chụp lại ở chất lượng thấp hoặc biến đổi nặng, watermark có thể hỏng.

3. Repo dùng kỹ thuật gì?

README mô tả thư viện dựa trên DWT–DCT–SVD.

Có thể hiểu ba phần này như sau:

Ví dụ

DWT: tách ảnh thành các phần tần số khác nhau DCT: chuyển từng khối ảnh sang dạng biểu diễn tần số SVD: phân tích ma trận để chỉnh một số giá trị ổn định hơn

Quy trình đơn giản hóa:

Ví dụ

Đọc ảnh → chuyển không gian màu → dùng DWT → chia ảnh thành các khối → dùng DCT và SVD → điều chỉnh một số giá trị để ghi bit 0 hoặc 1 → biến đổi ngược để tạo ảnh đầu ra

Người dùng không cần hiểu toàn bộ toán học mới dùng được thư viện. Điều quan trọng là watermark không được ghi như một dòng chữ nhìn thấy, mà được phân bố trong miền tần số của ảnh.

4. Repo này dùng để làm gì?

Một số trường hợp sử dụng hợp lý:

Ví dụ

đánh dấu ảnh thuộc một hệ thống cụ thể nhúng mã khách hàng vào từng bản ảnh tải xuống truy vết nguồn rò rỉ nội dung kiểm tra ảnh có đi qua pipeline nội bộ hay không đánh dấu ảnh trước khi gửi cho đối tác thử nghiệm kỹ thuật watermark số

Ví dụ, một website bán ảnh có thể tạo bản riêng cho từng khách hàng:

Ví dụ

Khách A → watermark ẩn CUSTOMER_A_1024 Khách B → watermark ẩn CUSTOMER_B_2048

Nếu một bản ảnh bị phát tán, hệ thống có thể thử trích xuất mã để tìm bản phát hành tương ứng.

5. Repo không phải là gì?

blind_watermark không phải:

Ví dụ

một hệ thống DRM hoàn chỉnh một công cụ mã hóa ảnh một bằng chứng pháp lý tuyệt đối về quyền sở hữu một cơ chế bảo vệ không thể phá một giải pháp chống sao chép tuyệt đối một hệ thống nhận diện nội dung AI

Watermark giúp tạo thêm tín hiệu truy vết. Nó không thay thế hợp đồng, chữ ký số, timestamp đáng tin cậy, dữ liệu nguồn hoặc quy trình quản lý bản quyền.

6. Watermark có thể chứa những dạng dữ liệu nào?

README và mã nguồn hỗ trợ ba chế độ chính.

Chuỗi văn bản

Ví dụ:

Ví dụ

ORDER-2026-000128 [email protected] PIXELROUTER-ASSET-9281

Chuỗi được chuyển sang UTF-8, rồi biến thành các bit trước khi nhúng.

Ảnh watermark

Có thể dùng một ảnh nhỏ, thường phù hợp với ảnh đơn sắc hoặc logo dạng đen trắng.

Trong mã nguồn, ảnh watermark được đọc ở chế độ grayscale và chuyển thành bit bằng ngưỡng 128. Vì vậy, mức xám chi tiết không được giữ nguyên; nó gần với watermark nhị phân hơn là ảnh màu đầy đủ.

Dãy bit

Người dùng có thể truyền trực tiếp dữ liệu dạng:

PYTHON
[True, False, True, True, False]

Chế độ này hữu ích khi hệ thống đã có cách mã hóa ID thành bit.

7. Cài đặt

README hướng dẫn cài từ PyPI:

Ví dụ

pip install blind-watermark

Hoặc cài mã nguồn trong repo:

BASH
git clone https://github.com/guofei9987/blind_watermark.git
cd blind_watermark
pip install .

Theo setup.py, thư viện yêu cầu Python từ 3.5 trở lên và dùng các dependency chính:

Ví dụ

NumPy OpenCV-Python PyWavelets

Mã nguồn version.py trong repo hiện ghi phiên bản 0.4.4. Khi nhúng và trích xuất, repo cũng in cảnh báo nên dùng cùng một phiên bản ở cả hai phía.

8. Dùng bằng dòng lệnh

README cung cấp CLI để nhúng và trích xuất watermark.

Cấu trúc chung khi nhúng:

BASH
blind_watermark --embed --pwd <mật_khẩu> <ảnh_gốc> "<nội_dung>" <ảnh_đầu_ra>

Cấu trúc chung khi trích xuất:

BASH
blind_watermark --extract --pwd <mật_khẩu> --wm_shape <độ_dài> <ảnh_đã_nhúng>

Khi trích xuất, wm_shape là thông tin bắt buộc. Với chuỗi, đó thường là số bit của watermark. Với ảnh, đó là kích thước như (128, 128).

9. Dùng trong Python

Ví dụ rút gọn để nhúng chuỗi:

PYTHON
from blind_watermark import WaterMark

watermark = WaterMark(password_img=123, password_wm=456)
watermark.read_img("input.jpg")
watermark.read_wm("ASSET-000128", mode="str")
watermark.embed("output.png")

watermark_length = len(watermark.wm_bit)
print(watermark_length)

Trích xuất:

PYTHON
from blind_watermark import WaterMark

watermark = WaterMark(password_img=123, password_wm=456)
result = watermark.extract(
    "output.png",
    wm_shape=watermark_length,
    mode="str",
)

print(result)

Trong hệ thống thật, cần lưu lại ít nhất:

Ví dụ

password_img password_wm wm_shape hoặc độ dài bit phiên bản thư viện mã định danh bản ảnh

Nếu mất wm_shape, việc trích xuất sẽ khó hoặc không thực hiện đúng bằng API thông thường của thư viện.

10. Hai mật khẩu dùng để làm gì?

API có hai tham số:

Ví dụ

password_img password_wm

Trong mã nguồn:

Ví dụ

password_wm được dùng làm seed để xáo trộn thứ tự bit watermark password_img được dùng làm seed để xáo trộn vị trí trong các khối ảnh

Điều này giúp người không biết thông số khó trích xuất đúng dữ liệu hơn.

Nhưng cần hiểu chính xác: đây không phải thiết kế mã hóa hiện đại như AES. Các “password” trong triển khai này hoạt động gần với seed cho phép xáo trộn có thể tái tạo.

Vì vậy:

Ví dụ

không dùng nó để bảo vệ bí mật có giá trị cao không nhúng mật khẩu thật, API key hoặc dữ liệu cá nhân nhạy cảm không coi password_img/password_wm là khóa mật mã mạnh

Nếu cần tính xác thực mạnh, có thể nhúng một ID ngẫu nhiên hoặc chữ ký/HMAC đã tạo ở tầng khác thay vì nhúng dữ liệu nhạy cảm trực tiếp.

11. Dung lượng watermark phụ thuộc vào ảnh

Mã nguồn chia phần ảnh sau DWT thành các block 4 × 4. Số block quyết định số bit watermark tối đa có thể nhúng.

Mã có kiểm tra:

Ví dụ

watermark size phải nhỏ hơn số block có sẵn

Do đó:

Ví dụ

ảnh lớn chứa được watermark dài hơn ảnh nhỏ có giới hạn thấp hơn watermark ảnh 128 × 128 cần nhiều bit hơn một chuỗi ngắn

Không nên nhúng nội dung quá dài. Một ID ngắn thường thực tế hơn cả đoạn văn.

12. Vì sao watermark có thể chịu được một số chỉnh sửa?

Repo đưa ra ví dụ watermark vẫn có thể được trích xuất sau một số biến đổi như:

Ví dụ

xoay ảnh crop một phần che một số vùng cắt ngang hoặc dọc resize thêm nhiễu muối tiêu giảm độ sáng

Lý do là các bit watermark được lặp lại trên nhiều block và nhiều kênh màu, sau đó lấy trung bình khi trích xuất.

Tuy nhiên, bảng trong README chỉ là demo của tác giả, không phải cam kết rằng mọi ảnh và mọi cấu hình đều đạt kết quả tương tự.

Độ bền phụ thuộc vào:

Ví dụ

kích thước ảnh độ dài watermark mức nén định dạng file mức chỉnh sửa nội dung ảnh tham số thuật toán phiên bản encode/decode

13. Watermark chịu được JPEG không?

Có thể, nhưng chất lượng trích xuất phụ thuộc mức nén.

Mã nguồn cho phép lưu JPEG với compression_ratio dùng làm JPEG quality. Nếu giảm quality quá mạnh, dữ liệu tần số có thể thay đổi và làm watermark khó đọc.

Cách thực tế:

Ví dụ

ưu tiên PNG nếu cần độ ổn định cao nếu dùng JPEG, thử nghiệm nhiều mức quality không giả định watermark luôn sống sót sau nhiều lần re-encode

Một pipeline tốt nên tự kiểm tra lại watermark ngay sau khi xuất file và sau các bước tối ưu ảnh.

14. Watermark có sống sót sau crop không?

README có demo crop và vẫn trích xuất được watermark. Điều này có thể xảy ra vì watermark được lặp lại trên toàn ảnh.

Nhưng nếu crop quá mạnh, ảnh còn lại quá nhỏ hoặc crop làm thay đổi hình học khó khôi phục, kết quả có thể kém.

Nên kiểm thử đúng tình huống thực tế:

Ví dụ

crop 10% crop 30% ảnh chụp màn hình resize về thumbnail nén mạng xã hội đổi tỉ lệ khung hình

15. Watermark có sống sót sau ảnh được AI tạo lại không?

Thông thường không nên kỳ vọng.

Nếu ảnh được đưa qua một model tạo sinh để vẽ lại, inpainting lớn, style transfer mạnh hoặc dựng lại từ ảnh tham khảo, dữ liệu tần số ban đầu có thể bị thay mới gần như hoàn toàn.

Watermark cổ điển phù hợp hơn với:

Ví dụ

nén resize crop vừa phải thay đổi sáng tối nhiễu nhẹ một số chỉnh sửa hình học

Nó không phải giải pháp chắc chắn để theo dõi nội dung sau khi bị AI tái tạo.

16. Ưu điểm của repo

Ví dụ

API Python khá đơn giản có CLI hỗ trợ Windows, Linux và macOS nhúng được text, ảnh và bit không cần ảnh gốc khi trích xuất có ví dụ về một số dạng biến đổi ảnh có thể chạy nhiều process giấy phép MIT tương đối linh hoạt

17. Hạn chế cần biết

Ví dụ

cần biết wm_shape khi trích xuất cần đúng password/seed không phải mã hóa mạnh không chống được mọi loại chỉnh sửa watermark dài làm giảm độ lặp và có thể giảm độ bền ảnh đầu ra vẫn có một mức sai khác so với ảnh gốc có thể mất watermark sau nén/chỉnh sửa mạnh không tự tạo bằng chứng pháp lý về quyền sở hữu

Trong bwm_core.py, tác giả ghi chú rằng các tham số d1d2 càng lớn thì watermark càng bền, nhưng ảnh đầu ra càng bị biến dạng. Đây là đánh đổi cốt lõi:

Ví dụ

watermark mạnh hơn ↔ ảnh thay đổi nhiều hơn

18. Lưu ý về quyền riêng tư

Không nên nhúng trực tiếp dữ liệu như:

Ví dụ

họ tên đầy đủ email cá nhân số điện thoại địa chỉ CCCD/hộ chiếu API key mật khẩu

Watermark ẩn không có nghĩa là dữ liệu được mã hóa an toàn.

Cách tốt hơn:

Ví dụ

nhúng một ID ngẫu nhiên lưu ánh xạ ID ↔ khách hàng trong database riêng giới hạn người có quyền truy cập bảng ánh xạ đặt thời gian lưu và quy trình xóa dữ liệu

19. Lưu ý về bằng chứng bản quyền

Nếu muốn dùng watermark trong tranh chấp bản quyền, nên kết hợp thêm:

Ví dụ

file gốc hash của file gốc lịch sử xuất bản timestamp đáng tin cậy hợp đồng hoặc giấy phép log hệ thống phát hành chữ ký số hoặc HMAC

Watermark có thể hỗ trợ chuỗi bằng chứng, nhưng không nên là bằng chứng duy nhất.

20. Workflow gợi ý cho hệ thống phát hành ảnh

Một workflow hợp lý:

Ví dụ

Bước 1: Tạo asset_id cho ảnh gốc. Bước 2: Khi người dùng tải ảnh, tạo distribution_id riêng. Bước 3: Ký distribution_id bằng HMAC ở server. Bước 4: Nhúng chuỗi ngắn gồm ID hoặc token đã ký. Bước 5: Lưu wm_shape, seed, phiên bản và hash ảnh đầu ra. Bước 6: Trích xuất thử ngay sau khi tạo. Bước 7: Chạy thêm test sau resize và JPEG compression dự kiến. Bước 8: Chỉ giao file nếu các kiểm tra đạt yêu cầu.

Không nên nhúng toàn bộ thông tin khách hàng. Chỉ nhúng mã tra cứu.

21. Ví dụ cấu trúc dữ liệu nên lưu

JSON
{
  "asset_id": "asset_9281",
  "distribution_id": "dist_f8a3c1",
  "watermark_length": 176,
  "password_img_id": "keyset_03",
  "password_wm_id": "keyset_03",
  "library_version": "0.4.4",
  "output_sha256": "...",
  "created_at": "2026-06-26T10:00:00Z"
}

Nên lưu ID của bộ khóa thay vì ghi password trực tiếp trong bản ghi nghiệp vụ.

22. Khi nào nên dùng repo này?

Nên cân nhắc khi:

Ví dụ

cần thử nghiệm watermark ảnh bằng Python muốn đánh dấu bản phân phối riêng cho từng người dùng cần một giải pháp local, mã nguồn mở chấp nhận tự kiểm thử độ bền theo pipeline thật cần CLI hoặc tích hợp vào backend Python

23. Khi nào không nên dùng một mình?

Không nên dùng như giải pháp duy nhất khi:

Ví dụ

nội dung có giá trị pháp lý hoặc thương mại rất cao cần chống xóa watermark chuyên nghiệp ảnh sẽ qua nhiều nền tảng nén mạnh cần xác thực nguồn gốc theo chuẩn công nghiệp cần bảo vệ video hoặc audio cần chứng minh ảnh chưa bị chỉnh sửa

Trong các trường hợp này, cần đánh giá thêm các giải pháp fingerprinting, perceptual hash, chữ ký số, C2PA/Content Credentials hoặc dịch vụ watermark thương mại.

24. Giấy phép

Repo sử dụng giấy phép MIT.

Điều này thường cho phép:

Ví dụ

sử dụng sửa đổi phân phối đưa vào sản phẩm thương mại

Nhưng phải giữ lại thông báo bản quyền và giấy phép trong các bản sao hoặc phần đáng kể của phần mềm. Phần mềm được cung cấp “as is”, không có bảo đảm.

25. Kết luận

guofei9987/blind_watermark là một thư viện Python gọn để thử nghiệm và triển khai watermark ẩn trong ảnh bằng DWT–DCT–SVD.

Cách hiểu ngắn nhất:

Ví dụ

Nó giấu một chuỗi, ảnh nhỏ hoặc dãy bit vào miền tần số của ảnh, sau đó cho phép trích xuất mà không cần ảnh gốc.

Repo phù hợp cho truy vết bản phân phối, đánh dấu asset và nghiên cứu watermark. Nhưng nó không phải DRM, không phải mã hóa mạnh và không bảo đảm sống sót sau mọi chỉnh sửa.

Gợi ý tiêu đề SEO

  • blind-watermark là gì? Giải thích dễ hiểu về repo guofei9987/blind_watermark
  • Cách nhúng watermark ẩn vào ảnh bằng Python
  • Tìm hiểu DWT–DCT–SVD blind watermark cho người mới
  • Thư viện Python tạo watermark ẩn: cách dùng, ưu điểm và giới hạn

Mô tả SEO

Bài viết giải thích repo guofei9987/blind_watermark theo cách dễ hiểu: watermark ẩn là gì, DWT–DCT–SVD hoạt động ra sao, cách cài và dùng bằng Python/CLI, cách nhúng text hoặc ảnh, khả năng chống crop/nén, giới hạn bảo mật, quyền riêng tư và giấy phép MIT.

Nguồn tham khảo

  1. GitHub repository: https://github.com/guofei9987/blind_watermark
  2. README tiếng Anh: https://github.com/guofei9987/blind_watermark/blob/master/README.md
  3. README tiếng Trung: https://github.com/guofei9987/blind_watermark/blob/master/README_cn.md
  4. Mã nguồn blind_watermark.py: https://github.com/guofei9987/blind_watermark/blob/master/blind_watermark/blind_watermark.py
  5. Mã nguồn bwm_core.py: https://github.com/guofei9987/blind_watermark/blob/master/blind_watermark/bwm_core.py
  6. setup.py: https://github.com/guofei9987/blind_watermark/blob/master/setup.py
  7. Giấy phép MIT: https://github.com/guofei9987/blind_watermark/blob/master/LICENSE
  8. Documentation: https://BlindWatermark.github.io/blind_watermark/#/en/
PR

Được biên soạn bởi PixelRouter Editorial Team

Chúng tôi cung cấp các bài viết chuyên sâu và chính xác về hạ tầng AI, bảo mật API, quản lý tài chính đám mây và tối ưu hóa hệ thống cho nhà phát triển.

Câu hỏi thường gặp

blind-watermark là gì?

blind_watermark là thư viện Python giấu thông tin nhỏ vào ảnh mà mắt thường khó nhận ra, có thể trích xuất mà không cần ảnh gốc.

Có thể nhúng những dạng dữ liệu nào?

Thư viện hỗ trợ nhúng chuỗi văn bản, ảnh đen trắng nhỏ (grayscale, ngưỡng 128) hoặc dãy bit.

Hai mật khẩu dùng để làm gì?

password_img dùng làm seed để xáo trộn vị trí trong khối ảnh, password_wm dùng làm seed để xáo trộn thứ tự bit watermark.

Watermark có sống sót sau chỉnh sửa không?

Có thể chịu được xoay, crop, resize, nhiễu nhẹ nhờ lặp bit trên nhiều block, nhưng không đảm bảo sau chỉnh sửa mạnh.