日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB LSB图像信息隐藏 最低位平面验证 以及PSNR SSIM评价

發(fā)布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB LSB图像信息隐藏 最低位平面验证 以及PSNR SSIM评价 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?
一、算法原理


1.位平面定義
定義:對于一幅用多個比特表示其灰度值的圖像來說,其中的每個比特可看作表示了一個二值的平面,也稱為圖像的位平面。

2. LSB算法介紹
LSB是Least Singificant Bit的縮寫, 意思是最不重要比特位。LSB算法利用了數(shù)字圖像處理中位平面的原理, 即改變圖像的最低位的信息, 對圖像信息產(chǎn)生的影響非常小,人眼的視覺感知系統(tǒng)往往不能察覺。以一幅256灰度的圖像為例, 256灰度共需要8個位來表示, 但其中每一個位的作用是不一樣的, 越高位對圖像的影響越大, 反之越低的位影響越小, 甚至不能感知。LSB 算法簡單實現(xiàn)容易, 同時可以保證數(shù)字水印的不可見性, 由于可以在最低位的每個像素上都插入數(shù)字水印信息, 因此有較大的信息嵌入量。但是由于數(shù)字水印位于圖像的不重要像素位上, 因此很容易被圖像過濾、量化和幾何型變等操作破壞, 以致無法恢復(fù)數(shù)字水印。

3.? 基本評價指標(biāo)峰值信噪比 PSNR

???????峰值信噪比 PSNR

PSNR(Peak Signal to Noise Ratio),即峰值信噪比,是一種比較簡單的全參考圖像質(zhì)量評價指標(biāo),其計算公式如下:

公式中,MAX為每個像素分量的最大誤差,d為每個像素分量的位深;MSE為該分量畫面的均方差,SSE為該分量畫面的和方差,S為該分量畫面的像素數(shù),X和Y分別表示待評價圖像和參考圖像(順序無關(guān)),它們都是H行W列的圖像,X(h,w)表示待評價圖像第h行第w列的像素值,Y(h,w)表示參考圖像第h行第w列的像素值。

上述計算過程得到的是1個分量(Y、Cb、Cr、R、G、B)的PSNR值。要計算整幀的PSNR值,應(yīng)基于整幀的MSE值,它是所有分量MSE值的加權(quán)平均:

公式中,0、1、2表示幀的3個分量,運(yùn)算符?表示向量點乘。

4. SSIM評價

SSIM(Structural Similarity Index Measurement),即結(jié)構(gòu)相似度測量,是一種全參考圖像質(zhì)量評價指標(biāo):

注意:這個算法并不是在最低位平面嵌入水印!!!這個是不同位平面上嵌入水印對圖片影響的驗證實驗。

二、 運(yùn)行結(jié)果
1. 圖片8個位平面展示


3. 每個位平面嵌入水印(真正LSB算法只需要嵌入最低位平面)


4. 顯示已經(jīng)嵌入水印圖


5.PSNR SSIM評價
代碼在后面

LSB代碼

clc clear all; close all;% 讀入載體圖像 file_name='lena.jpg'; origin=file_name; cover_object=imread(file_name); % 讀入水印圖像 file_name='cuc.jpg'; message=imread(file_name); message=double(message); message=round(message./256); message=uint8(message);% 確定載體圖像的大小 Mc=size(cover_object,1); Nc=size(cover_object,2); % 確定水印圖像的大小 Mm=size(message,1); Nm=size(message,2);%位平面分解圖 figure; X=double(imread('lena.jpg')); [h w] = size(X); subplot(3,3,1); imshow(X,[]); title('原始圖像'); for k=1:8for i=1:hfor j=1:w%bitget函數(shù)首先將X(i,j)處灰度值分解為二進(jìn)制串,然后取第k位tmp(i,j) = bitget(X(i,j),k);endendsubplot(3,3,k+1);imshow(tmp,[]);ind = num2str(k);imti = ['第',ind,'個位平面'];title(imti); end% 將水印擴(kuò)展為原圖像大小,并寫入水印 for ii = 1:Mcfor jj = 1:Ncwatermark(ii,jj)=message(mod(ii, Mm)+1,mod(jj, Nm)+1);end endfigure; title('加入的水印圖像') imshow(watermark,[])% 將原圖的最低有效位值換為水印的值 figure; watermarked_LSB=cover_object; for q=1:8watermarked_image=cover_object;for ii = 1:Mcfor jj = 1:Ncwatermarked_image(ii, jj)=bitset(watermarked_image(ii, jj), q, watermark(ii ,jj));end endif q==1watermarked_LSB = watermarked_image;endsubplot(3,3,1)imshow('lena.jpg')title('原圖')subplot(3,3,q+1);imshow(watermarked_image,[]);ind = num2str(q);imtii = ['第',ind,'個位平面加入水印后的結(jié)果'];title(imtii);disp(['第',ind,'個位平面加入水印后的PSNR:'])psnr=PSNR(cover_object, watermarked_image)disp(['第',ind,'個位平面加入水印后的SSIM:'])ssim_val=ssim(cover_object, watermarked_image)%%計算BERorig_watermark=imread('cuc.jpg');message_pad=double(orig_watermark);message_pad=round(message_pad./256);message_pad=uint8(message_pad);message_pad=reshape(message_pad,[1,64*64]);Mw =size(watermarked_image,1);Nw =size(watermarked_image,2);for ii = 1:Mwfor jj = 1:Nwwatermark(ii, jj)=bitget(watermarked_image(ii, jj),q);endendwatermark_b=256*double(watermark);%將提取水印變?yōu)樵妓〈笮or ii = 1:Mm-1for jj = 1:Nm-1watermark1(ii+1,jj+1)=watermark_b(ii,jj);endendwatermark1(1,1)=watermark_b(Mm,Nm);%顯示提取的水印圖像message_pad_recover=double(watermark1);message_pad_recover=round(message_pad_recover./256);message_pad_recover=uint8(message_pad_recover);message_pad_recover=reshape(message_pad_recover,[1,64*64]);% 顯示提取錯誤比特的比例len=length(message_pad);disp(['第',ind,'個位平面加入水印后的BER:'])bit_error_rate=sum(abs(message_pad_recover(1:len)-message_pad(1:len)))/lenendfigure; imshow(watermark1,[]); title('Recovered Watermark'); % 顯示已嵌入水印的圖像 figure; imshow(watermarked_LSB,[]); title('LSB嵌入水印后圖像');% 計算已嵌入水印圖像的PSNR和SSIM disp(['LSB加入水印后的osnr:']) psnr=PSNR(cover_object, watermarked_image) disp(['LSB加入水印后的ssim:']) ssim=ssim(cover_object, watermarked_image)

PSNR SSIM評價代碼

%PSNR.m function S=PSNR(I,J) % PSNR(I,J) returns the peak signal to noise ratio) between I and J %(dB) % I is the original image and J is a modified version of I. % The PSNR value is useful to calculate the distortions on an image.% if (size(I)~=size(J)) % error('Las imagenes deben tener el mismo tama駉') % end % if (~isrgb(I) & ~isrgb(J))[m n] = size(I);A=double(I);B=double(J);sumaDif=0;maxI=m*n*max(max(A.^2));for u=1:mfor v=1:nsumaDif = sumaDif + (A(u,v)-B(u,v))^2;endendif (sumaDif==0) sumaDif=1;endS=maxI/sumaDif;S=10*log10(S); % else % error('Las imagenes no pueden ser en color') % end


?

總結(jié)

以上是生活随笔為你收集整理的MATLAB LSB图像信息隐藏 最低位平面验证 以及PSNR SSIM评价的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。