matlab水印嵌入与提取nc值计算
时间: 2023-08-27 18:06:57 浏览: 518
基于matlab的水印嵌入算法
3星 · 编辑精心推荐
Matlab中可以使用DCT(离散余弦变换)对图像进行水印嵌入和提取。
对于水印嵌入,可以使用以下步骤:
1. 读取原始图像和水印图像。
2. 对原始图像进行DCT变换,得到DCT系数。
3. 对水印图像进行二值化处理,得到0或1的比特流。
4. 将比特流嵌入到DCT系数的低频分量中。
5. 对嵌入水印后的DCT系数进行IDCT(逆离散余弦变换),得到带有水印的图像。
对于水印提取,可以使用以下步骤:
1. 读取带有水印的图像。
2. 对带有水印的图像进行DCT变换,得到DCT系数。
3. 从DCT系数的低频分量中提取比特流。
4. 进行比特流解码,得到水印图像。
对于计算NC(归一化相关系数)值,可以使用以下公式:
```
NC = sum(sum(W .* M)) / sqrt(sum(sum(W .^ 2)) * sum(sum(M .^ 2)))
```
其中,W是嵌入的水印图像,M是提取出的水印图像。NC的取值范围为[-1, 1],越接近1表示提取出的水印图像越接近嵌入的水印图像。
阅读全文